基於ARMv5TE架構的軟體除法

2022-04-03 07:41:51 字數 1207 閱讀 6411

近來有點悠閒,所以無聊中做了乙個基於二進位制試商法的無符號整型除法實現。

以下函式僅對於armv5t架構或更高版本架構的處理器有效。彙編用的是rvct3.1或更高版本

演算法彙編檔案:

1

area 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

主機端的測試程式:

1

extern

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...