我是ARM Assembler的新手。使用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
无法得到它。
答案 0 :(得分:4)
前4个参数在r0,r1,r2,r3中传递。
这就是编译器在编译C文件时也会为您做的事情。因此,您可以在r0寄存器中获得参数n
,并且可以直接使用它。
我还看到你的函数返回一个无符号值。这将在r0寄存器中返回。
有关调用约定的更详细说明,请参阅this。