我正在尝试编写要从C程序调用的第一个汇编函数。这是.c部分:
#include <stdio.h>
extern int sum(int a, int b);
int main() {
printf("2+3 = %d\n", sum(2,3));
return 0;
}
和装配部分:
.text
.global sum
sum:
push %rbp
mov %rsp, %rbp
mov 8(%rbp), %rax
add 12(%rbp), %rax
pop %rbp
ret
根据一些教程,参数应存储在%ebp(32位版本)寄存器中。但是,当我编译上面的代码时,我得到了这个结果:
2+3 = 4195607
有人可以解释一下我做错了什么吗?
哦,这是Makefile:
test: test.o testc.o
gcc -o test test.o testc.o
test.o: f1.s
gcc -o test.o -c f1.s
testc.o: f2.c
gcc -c -o test.o f2.c
提前感谢您的任何提示!
此致 菲利普