我有以下的彙編代碼:RET,RETN,RETF - 如何使用它們
; int __stdcall wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd)
[email protected] proc near
var_8= dword ptr -8
var_4= dword ptr -4
hInstance= dword ptr 8
hPrevInstance= dword ptr 0Ch
lpCmdLine= dword ptr 10h
nShowCmd= dword ptr 14h
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_4], 5
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_8], eax
xor eax, eax
mov esp, ebp
pop ebp
retn 10h
從我讀,你有3種類型的返回指令:RET,RETN和RETF,意味着回報,回報附近並且回到很遠。它們允許一個可選的參數nBytes,我猜這是從定義的變量中彈出的字節數。什麼時候應該使用retn或retf而不是ret?我如何計算可選參數nBytes?
啊,所以ret N中的N表示調用者傳遞的推送參數的數量,而不是我認爲的局部變量。是嗎? – 2009-09-09 00:12:31
是的。這是推動參數的數量。當地人在最後通過mov esp,ebp命令行進 – Max 2009-09-09 00:22:41