如何解决在C程序中调用汇编语言函数
此作业要求我编写一个名为diff.s的文件,该文件包含一个参数,使用相同的参数调用function2,然后返回function2返回的值,减去传入的值 论据。例如,如果diff被称为5,则应返回20 = 5 * 5-5
每次遇到分段错误时,我都需要有关如何编写汇编语言的帮助。
//gcc -g callC-AL-C.c diff.s -o callC-AL-C
#include <stdio.h>
#include <stdlib.h>
int diff(int);
int function1(int number) {
int returnValue = diff(number) + 7;
return returnValue;
}
int function2(int number) {
return number*number;
}
int main(int argc,char **argv) {
int argument1 = atoi(argv[1]);
printf("%d\n",function1(argument1));
return 0;
}
汇编语言diff.s只有5行:
.global diff
diff:
pushq %rdi
movl %rax,%rbp
subl %rax,%eax
call function2
ret
寄存器表,我们必须使用右侧列
Callee must restore Callee may change
%rbp %rax
%rsp %rcx
%rbx %rdx
%rsi
%rdi
%r12-%r15 %r8-%r11
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。