据我所知,在执行开始时[esp]
包含命令行参数的数量。所以我这样做:
global main
extern printf
section .data
format db "%d", 0
section .text
main:
push format
call printf
add esp, 4
xor eax, eax
ret
然而,它打印垃圾像-145184962。此代码给出了相同的结果:
push dword [esp]
push format
call printf
add esp, 8
使用nasm -f elf32 a.asm
和gcc -m32 a.o
构建代码。