atart.s
.text
.global _start
_start:
ldr sp,=0x40000800
b main
stop:
b stop
.end
main.c
int sum1 = 0;
int sum2 = 0;
int add1_func(int a,int b,int c,int d);
int add2_func(int a,int b,int c,int d)
{
asm volatile(
"add r0,r0,r1\n\t"
"add r0,r0,r2\n\t"
"add r0,r0,r3\n\t"
:"=r"(sum2)
:"r"(a),"r"(b),"r"(c),"r"(d)
:
);
return sum2;
}
int main()
{
sum1 = add1_func(1,2,3,4);
sum2 = add2_func(4,5,6,7);
while(1);
return 0;
}
add.s
.text
.global add1_func
add1_func:
add r0,r0,r1
add r0,r0,r2
add r0,r0,r3
mov pc,lr
.end
map.lds
./Objects/start.o(.text)