2016-01-13 61 views
0

根據在互聯網上很多教程,這是說,你可以找到結構化的命令行參數如下方式:爲什麼main()函數的argc在ESP + 4而不是ESP + 0?

table

然而,測試我的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 

回答