免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
CPU 指令
表白:黑白圣堂血天使,天劍鬼刀阿修羅。 
講解對(duì)象:
/CPU 指令
作者:融水公子 rsgz
匯編教程
匯編教程 http://www.rsgz.top/post/91.html

我們通過(guò)函數(shù)來(lái)理解一下。下面是一個(gè)簡(jiǎn)單的函數(shù)
int add_a_and_b(int a, int b) {
   return a + b;
}

int main() {
   return add_a_and_b(2, 3);
}

gcc編譯器可以將這個(gè)程序轉(zhuǎn)化成匯編語(yǔ)言。發(fā)現(xiàn)轉(zhuǎn)換之后的匯編語(yǔ)言就是一行行的指令,CPU只要執(zhí)行這一行行的指令就可以完成函數(shù)的操作了,匯編會(huì)用標(biāo)簽add_a_and_b和main代替兩個(gè)函數(shù)
_add_a_and_b:
   push   %ebx
   mov    %eax, [%esp+8] 
   mov    %ebx, [%esp+12]
   add    %eax, %ebx 
   pop    %ebx 
   ret  

_main:
   push   3
   push   2
   call   _add_a_and_b 
   add    %esp, 8
   ret

分析:執(zhí)行的順序是這樣的。
_main:       //棧為_(kāi)main建立一個(gè)幀,地址寫(xiě)入ESP 寄存器
   push   3     //ESP 寄存器減去整型3的四個(gè)字節(jié),push指令把3放入main幀里面
   push   2     //ESP 寄存器減去整型2的四個(gè)字節(jié),push指令把2放入main幀里面 累積減了8字節(jié)
   call   _add_a_and_b  //call指令用來(lái)調(diào)用函數(shù),建立add_a_and_b幀

--------------------------------------------------------------
_add_a_and_b:  //棧為add_a_and_b建立一個(gè)幀,地址寫(xiě)入ESP 寄存器
   push   %ebx   //ESP 寄存器減去四字節(jié),EBX 寄存器里面的值,寫(xiě)入_add_a_and_b這個(gè)幀 ,累計(jì)減去12字節(jié)
   mov    %eax, [%esp+8]  //ESP 寄存器里面地址加8字節(jié),對(duì)應(yīng)的是2,將2寫(xiě)入 EAX 寄存器
   mov    %ebx, [%esp+12] //ESP 寄存器里面地址加12字節(jié),對(duì)應(yīng)的是3,將3寫(xiě)入 EBX 寄存器
   add    %eax, %ebx      //兩個(gè)運(yùn)算子相加,并將結(jié)果寫(xiě)入第一個(gè)運(yùn)算子
   pop    %ebx            //ESP 寄存器里面地址加4字節(jié),加法已經(jīng)做完了,EBX 寄存器用不到了
   ret         //ret指令終止當(dāng)前函數(shù)的執(zhí)行,當(dāng)前函數(shù)的幀將被回收

--------------------------------------------------------------
   add    %esp, 8  // ESP 寄存器地址手動(dòng)加8個(gè)字節(jié),等于說(shuō)之前的12字節(jié)都收回來(lái)了
   ret   //ret指令退出main函數(shù)

最后我繼續(xù)畫(huà)一個(gè)畫(huà)畫(huà)吧

  

=== 
公眾號(hào):小雪妃
謝謝大家的支持!可以點(diǎn)擊我的頭像,進(jìn)入我的空間瀏覽更多文章呢。建議大家360doc[www.360doc.com]注冊(cè)一個(gè)賬號(hào)登錄,里面真的有很多優(yōu)秀的文章,歡迎大家的到來(lái)。
---
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C語(yǔ)言過(guò)程(函數(shù))的機(jī)器級(jí)表示
函數(shù)調(diào)用過(guò)程中函數(shù)棧詳解
CPU阿甘:函數(shù)調(diào)用的秘密
換種方法學(xué)操作系統(tǒng)輕松入門(mén)Linux內(nèi)核(與圖靈機(jī)不同馮諾依曼機(jī)是一個(gè)實(shí)際的體系結(jié)構(gòu))CPU就是從EIP指向的那個(gè)地址取過(guò)來(lái)一條指令執(zhí)行
從匯編源碼逐步分析函數(shù)調(diào)用過(guò)程
匯編語(yǔ)言之寄存器(詳細(xì)介紹)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服