从C传递参数到64位Linux大会

我试图写我的第一个汇编函数从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 

提前感谢您的任何提示!

问候,菲利普

Solutions Collecting From Web of "从C传递参数到64位Linux大会"