0
根據在互聯網上很多教程,這是說,你可以找到結構化的命令行參數如下方式:爲什麼main()函數的argc在ESP + 4而不是ESP + 0?
然而,測試我的NASM編寫的彙編代碼的一些花費的時間後,我發現了ESP上的值是某個數字,如:
-144807325
實際參數計數存儲在ESP + 4處的4個字節。
任何想法存儲在ESP + 0?爲什麼這與衆多教大會的文章不同?
下面你可以找到我的代碼重現此問題:
section .data
msg db "%d", 0xA
section .text
global main
extern printf
main:
push dword [esp + 0] ; or [esp + 4]
push msg
call printf
pop eax
pop eax
mov eax, 0
ret
如果正在使用幀指針,則主要以序列開頭 |推ebp | mov ebp,esp |,在這種情況下,指向第一個參數的指針位於ebp + 8。 – rcgldr