问题描述
此作业要求我编写一个名为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 (将#修改为@)