C语言在EVC++ ARM平台下对应的汇编代码:
int testasm(int a, int b)
{
return a+b;
}
testasm(1, 2);
Mov r1, #2
Mov r0, #1
Bl testasm
//执行bl之后,pc跳转到函数地址,同时lr设置为当前PC+4,共函数返回
//进入函数后,PC指针发生变化 同时lr保存返回地址
Mov r12, sp
Stdmdb sp!, {r0, r1}
Stdmdb sp!, {r12, lr}
Sub sp, sp, #4
Ldr r0, [sp, #0xc]
Ldr r1, [sp, #0x10]
Add r2, r0, r1
Str r2, [sp]
Ldr r0, [sp]
Add sp, sp, #4
Ldmia sp, {sp, lr}
Bx lr