2016-01-13 36 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 

回答