我试图在汇编程序中调用C函数。这是我的代码:
C:
int multiply(int what)
{
return what * 2;
}
阿斯姆:
extern multiply
start:
mov eax, 10
push eax
call multiply
jmp $
;empty
times 510-($-$$) db 0
dw 0xAA55
我正在用gcc(MinGW)把C代码编译成elf,用NASM把ASM代码编译成ASM。我编译它没有任何问题,但当我尝试使用此代码(用于创建.bin文件)时:
gcc -o test.bin work.o test.o
我得到这个错误:
有人知道如何从ASM代码调用C函数,编译它并将其链接到工作的.bin文件吗?请帮忙。
最佳答案
尝试添加“\u”进行乘法运算:
extern _multiply
在这个简单的例子中对我有效:
global _main
extern _printf
section .data
text db "291 is the best!", 10, 0
strformat db "%s", 0
section .code
_main
push dword text
push dword strformat
call _printf
add esp, 8
ret
关于c - 未定义的乘法引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11344006/