变态重口极致另类在线-波多久久夜色精品国产-波多野结衣在线观看一区-波多野结衣在线观看一区二区-污污的网站免费阅读-污污视频网址

當前位置: 首頁IT技術 → 匯編語言中關于32bit整數除法的快速實現

匯編語言中關于32bit整數除法的快速實現

更多

眾所周知在Intel80x86指令集中有div這么一條指令,在32bit下,其功能是把edx,eax組成的64bit無符號整數(edx高32bit,eax低32bit)除以原32bit操作數,商放入eax中,余數放入edx中,但是在很多情況下我們的被除數只有32bit,除數是一個固定的值,此時如果還使用div指令,會使程序運行效率下降,我為此想到一種方法,可以比通常的div指令在時間上快很多,具體的實現原理很簡單,我們可以使用mul指令來代替div指令,要知道mul的執行所消耗的cpu周期大大低于div指令所消耗的,那如何做呢?

我們回想我們上小學的時候,老師們就講過除以一個數等于乘以這個數的倒數,對,就是這個簡單的法則!但一個問題又來了,一個大于1的整數的倒數小于1啊,是小數啊,而mul指令只能做無符號整數乘法啊.這的確是個問題,但我有很好的解決方法,我一切的思想都是從二進制出發的,但為此我們最多只能完成32bit除以32bit了.

現在我們假設235/10,對應的二進制表達就是11101011b/1010b,此時我們用mul來實現,我們先求出10的倒數1/10,1/10=0.000110011001100110011001100......b,是小數怎么辦呢?我們可以把她變成整數,為了得到更精確的結果,我們取精度最高的32bit整數110011001100...1101(0xCCCCCCCD),相當于左移了35位,這樣結果很明顯也左移的35位,我們發現本來左移35位后0位應該是0啊?怎么是1呢,這主要是從精度上考慮,我們可以忍受結構比實際的大這么一點點,因為可以使用and指令來屏蔽掉,得到正確的商,但如果結果小于了,那就沒辦法了.

說這么多我們來看看具體的程序,我采用把32bit無符號數轉換為10進制字符串輸出的函數為例子來說明這個方法的優越性.

這是通常的方法:

printfd proc UnInteger,lpBuff

xor edx,edx

mov ecx,10

mov edi,lpBuff

mov eax,UnInteger

add edi,10

mov byte ptr[edi],dl

@@:

div ecx

dec edi

or edx,30h

mov [edi],dl

xor edx,edx

test eax,eax

jnz @b

mov eax,edi;此時eax為轉換后的字符串首地址

ret

printfd endp

下面是改進的方法:

printfd proc UnInteger,lpBuff

mov esi,lpBuff

mov eax,UnInteger

add esi,10

mov ecx,0CCCCCCCDh

mov byte ptr[esi],0

@@:

mov ebx,eax

mul ecx

mov eax,edx

and edx,-8;屏蔽誤差

shr eax,3

sub ebx,eax

sub ebx,eax

sub ebx,edx

or ebx,30h

dec esi

mov [esi],bl

test eax,eax

jnz @b

mov eax,esi;此時eax為轉換后的字符串首地址

ret

printfd endp

經過我的測試,第二個的處理時間大約為第一個的1/3,當然是在處理同一個數的情況下.

熱門評論
最新評論
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數: 0/500 (您的評論需要經過審核才能顯示)
主站蜘蛛池模板: 黄色一级大片 | 免费一级特黄特色大片在线 | 麻豆国产精品有码在线观看 | 成年性生交大片免费看 | 日韩在线天堂免费观看 | 在线a人片免费观看高清 | 国产精品亚洲片在线观看不卡 | 亚洲第一精品夜夜躁人人爽 | 曰韩在线视频 | 日本免费观看95视频网站 | 日本中文在线视频 | 精品一区二区三区波多野结衣 | 国产在线拍揄自揄视频不卡99 | 欧美视频在线一区 | 男人午夜禁片在线观看 | 成人狠狠色综合 | 日本在线视频精品 | 日韩福利网 | 欧美在线香蕉在线现视频 | 丁香五香天堂网卡 | 成年人午夜在线 | 国产一级成人毛片 | 最新午夜韩国理论片77网 | 国产人妖性一区二区 | 狠狠色成色综合网 | 欧美日本一区二区三区道 | 久久综合九色综合97伊人麻豆 | 国产色视频在线观看免费 | 国产亚洲一区二区精品 | 日本精品高清一区二区2021 | 国产成人免费高清视频网址 | 国产精品视频福利一区二区 | 日本高清va不卡视频在线观看 | 免费黄色视屏 | www.亚色 | 亚洲精品中文字幕久久久久久 | 一及黄色片| 成人在线视频一区 | 免费观看一级成人毛片 | 久久精品国产清白在天天线 | 夜夜偷天天爽夜夜爱 |