乘法除法反彙編

2021-09-11 08:14:25 字數 527 閱讀 2767

彙編乘法指令一般為mul,imul,如果在彙編中使用這些指令來進行乘法運算,會比較慢,一般要進行轉換。

int fun()

反彙編:push ecx //為區域性變數a分乙個空間

mov eax,dword ptr [esp] //esp棧頂指標指向的就是剛剛壓入的ecx

lea ecx,dword ptr [eax+eax] //相當於eax2

lea edx,dword ptr [eax8+eax] //相當於eax9

push ecx //eax2壓棧

lea ecx,dword ptr [eax4+eax]//ecx=eax5

push edx //eax9壓棧

lea edx,dword ptr [ecx2+4]//相當於eax11+4

push edx//壓入上一步結果

…在除法中,需要用到符號擴充套件指令cdq,作用是將eax中的數擴充套件成四字,如果eax最高位是1,那麼擴充套件後edx全部為1,如果是0,擴充套件後edx全部為0,最後32位帶符號數就擴充套件成64位帶符號的數。

乘法 除法彙編指令總結

乘法指令的反彙編 a 5 imul eax,dword ptr a 5 當變數與不是 2的冪的數相乘時,三變數 a b mov eax,dword ptr a imul eax,dword ptr b 當兩個都是變數相乘時,兩變數 a 8 mov eax,dword ptr a 當變數與 2的冪相乘...

關於Release版除法反彙編的小結

諸如a b a是變數,b是常量 這種帶常量的除法,可以被 數學上的 等價變換為 a 2 n 2 n b 的形式。由於b和n是常量,因此在編譯期間,編譯器會將 2 n b轉換成新的常量b 上式變為 a b 2 n 將原本除法表示式轉換為乘法和移位運算子 ps 除以2 n可以被編譯成右移n位 編譯器為什...

組合語言乘法和除法指令

乘法和除法指令 ia 32 處理器的乘法和除法指令需要區別無符號數和有符號數,並隱含便用丁 eax 和edx 暫存器。基本的乘法指令指出源運算元 reg mem 暫存器或儲存單元 隱含使用目的運算元,表3。若源運算元是8位數8 m8,al與其相乘得到16位積,存入ax中,若源運算元是 16 位數 r...