我最近在组装(NASM)时搞砸了,我想出了下面的程序,它有两个文件。每个文件的名称和代码是:
mainprogram.asm:
%include "hello.asm"
section .data
message db 'Hello World!', 10, 0
section .text
global _main
_main:
push message
call print_message
ret
hello.asm
extern _printf
section .text
global print_message
print_message:
call _printf
add esp, 4
ret
现在,如果我运行此程序,我会收到分段错误。我的问题是:当我们从另一个文件调用方法/例程时,程序有不同的堆栈?因为这是我能想出的唯一结论。我试图通过谷歌找到一个推理,但我找不到任何相关的东西。如果有人可以帮助我,那就太好了。