我对汇编编程很陌生。我在 Windows 7(64 位(平台上使用 NASM 2.11.05 来运行一些示例代码。当我尝试从汇编代码调用标准 C 函数时,会出现此问题。这是我的程序集源:
global main
extern puts
section .text
main:
push message
call puts
ret
message:
db "Hola, mundo", 0
当我使用 NASM 编译时,我使用以下命令行:nasm -fwin32 file.asm生成 file.obj。现在,当我尝试将其与ld或gcc链接时,我不断收到错误。我尝试过的一些事情:
gcc -m32 -nostartfiles file.obj (给出输入文件的 i386:x86-64 体系结构与 i386 输出不兼容的错误(。
ld file.obj (给出错误未定义的 put 引用(。
任何人都可以指导我如何解决这个问题吗?
最后,我的ASM文件顶部的一行解决了它。就是那条线。
[BITS 32]
但是,输出文件仍然不断崩溃:欢迎任何可以解释的人!
你可以用不同的方式编译,比如:
.asm
文件的对象:
- 海湾合作委员会:
nasm -f elf file.asm
或 - LD:
ld -m elf_i386 file.o -o file
gcc -m32 -o file file.o
创建的链接对象文件./file
一起运行