近來有點悠閒,所以無聊中做了乙個基於二進位制試商法的無符號整型除法實現。
以下函式僅對於armv5t架構或更高版本架構的處理器有效。彙編用的是rvct3.1或更高版本
演算法彙編檔案:
1area my_test, code, readonly 23
preserve8 45
export my_udiv 67
code32 89
my_udiv
1011
movr12, r0
12mov
r0, #013
cmpr12, #014
bxeq lr
15cmp
r1, #016
bxeq lr
17cmp
r12, r1
18bxlo lr
1920
21my_udiv_loop
2223
clz r2, r12
24clz r3, r1
25sub
r2, r3, r2
26mov
r3, r1,
lslr2
2728
cmpr12, r3
29sublo r2, r2, #130
movlo r3, r3, lsr #131
32sub
r12, r12, r3
33mov
r3, #134
orr r0, r0, r3,
lslr2
3536
cmpr12, r1
37bhs my_udiv_loop
38bxlo lr
3940
end
主機端的測試程式:
1extern
unsigned my_udiv(unsigned dividend, unsigned divisor); 23
intg1
=12345678
, g2 =3
; 4
5int
main(
void
) 6
基於架構的軟體設計(ABSD)
基於架構的軟體設計 architecture based software design,absd 方法強調由商業 質量和功能需求的組合驅動軟體架構設計。absd是乙個自頂向下,遞迴細化的軟體開發方法,它以軟體系統功能的分解為基礎,通過選擇架構風格實現質量和商業需求,並強調在架構設計過程中使用軟體架...
架構風格與基於網路的軟體架構設計(Restful)
軟體架構是對軟體系統執行時狀態的抽象,乙個軟體架構是乙個軟體系統在其操作的某個階段的執行時 run time 元素的抽象。乙個系統可能由很多層抽象和很多個操作階段組成,每個抽象和操作階段都有自己的軟體架構 軟體架構可以通過動態新增約束來獲取不同的架構屬性 performance 網路效能 吞吐量 負...
如何基於CPU的架構來優化軟體的效能?
一直想弄乙個從各種角度優化軟體的總結,先寫乙個從cpu架構角度的。cpu還有個特性就是有l1 l2分段快取,對於分段快取我們盡量讓他們都利用好,不要因為部分資料的需求刷裡面的內容,比如二維陣列的縱向變例會比橫向遍歷糟糕很多,因為橫向遍歷會保證cache中資料的連續性,縱向遍歷就要頻繁的重新整理cac...