wordpress hook 列表武漢seo網(wǎng)站管理
x86架構(gòu)的寄存器
AT&T匯編和Intel匯編的區(qū)別
每取出完一條指令,PC會自動+"1",指向下一條要被執(zhí)行的指令。這里的1是指下一條指令,但是指令本身可能占用多個字節(jié),所以地址可能不是以1疊加
當前執(zhí)行的是108地址的指令,PC為112,但是108是無條件轉(zhuǎn)移指令JMP,所以PC跳轉(zhuǎn)導128地址的指令
選擇語句的匯編代碼
PSW程序狀態(tài)子寄存器
循環(huán)可以使用jmp和cmp來實現(xiàn),匯編給處了loop也可以實現(xiàn)
高級語言的函數(shù)調(diào)用,首先執(zhí)行main函數(shù),會創(chuàng)建main函數(shù)的棧幀用來保存一些局部變量和一些相關信息,在main函數(shù)中又調(diào)用了Q函數(shù),同時也會創(chuàng)建Q函數(shù)的棧幀來保存Q函數(shù)的局部變量和別的信息,同理,隨著更深層的函數(shù)調(diào)用,會一次次的創(chuàng)建函數(shù)棧幀放到棧頂,最棧頂?shù)奈恢镁褪钱斍皥?zhí)行的函數(shù),執(zhí)行完畢后會出棧,繼續(xù)執(zhí)行。如圖中的caller函數(shù),其中的3個局部變量temp1,temp2,sum都保存在caller的棧幀中,之后調(diào)用add函數(shù),會繼續(xù)創(chuàng)建add函數(shù)的棧幀來執(zhí)行add函數(shù),執(zhí)行完畢return后,出棧,棧頂指針會指向caller的棧頂,繼續(xù)執(zhí)行caller函數(shù)
在匯編語言中,使用call和ret實現(xiàn)了函數(shù)的調(diào)用和返回,這里以caller和add函數(shù)為例,call add指令時,跳轉(zhuǎn)到add函數(shù)處執(zhí)行,執(zhí)行完畢后ret,返回到斷點位置繼續(xù)執(zhí)行。
要保證過得去和回得來,也就是跳轉(zhuǎn)過去和執(zhí)行完畢后返回過來,本質(zhì)就是改變pc程序計數(shù)器中的值進行跳轉(zhuǎn)
這里放上push ebp的作用