【发布时间】:2017-03-18 15:42:57
【问题描述】:
我是 ARM 汇编程序的新手。使用 qemu 模拟器。
这个solution 不适合我。
我有这个 C 文件 md1_main.c:
#include <stdio.h>
#include <stdlib.h>
#include "md1.h"
int main (void)
{
int n;
scanf("%d", &n);
printf("Result = %u\n", asum(n));
return 0;
}
.h 文件包含函数原型unsigned int asum(unsigned int n);
我真的很困惑,如何将n 传递到汇编代码中。
汇编代码是md1.s:
.text
.align 2
.global asum
.type asum, %function
asum:
mov r1, #0
mov r2, #1
loop:
cmp r2, #3 ; instead of 3 there should be my input
bgt end
add r1, r1, r2
add r2, r2, #1
b loop
end:
mov r0, r1
bx lr
就是拿不到。
【问题讨论】:
-
你编译这个 C 代码的目标是什么?平台 - Linux、Windows 还是其他平台?
-
@AjayBrahmakshatriya,Linux。
-
@Benny,那个解决方案(?)对我不起作用。
-
好的,所以我们必须遵循 Linux 调用约定。现在的目标?那是什么大会? X86? X64? ARM?
-
你确定吗?因为这些寄存器看起来不像 x86_64 寄存器。说明也不行。