我是新來的組裝和整個這一段代碼來:大會Fnstenv功能
nop
fldz
fnstenv[esi]
mov eax, [esi+0xc]
我找不到「fnstenv」的一個明確的解釋網上,任何人都可以解釋它在這方面?運行此程序後,eax的價值是多少?
我是新來的組裝和整個這一段代碼來:大會Fnstenv功能
nop
fldz
fnstenv[esi]
mov eax, [esi+0xc]
我找不到「fnstenv」的一個明確的解釋網上,任何人都可以解釋它在這方面?運行此程序後,eax的價值是多少?
mov eax, [esi+0xc]
既然你正在閱讀從保存的環境,一個完整的DWORD,它是唯一合乎邏輯的結論是,你正在使用的fnstenv
指令的32位保護模式格式。
這意味着你將得到FPU指令指針偏移量,它被保存在狀態圖像的偏移12處。
EAX
寄存器將保存fldz
指令的地址,因爲這是FPU執行的最後一個非控制指令。
不確定你在哪裏看。請參見_8.1.10在_Intel®64和IA-32架構中使用FSTENV/FNSTENV和FSAVE/FNSAVE_保存x87 FPU的狀態軟件開發人員指南第1卷:基本架構_ – Jester