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