C 语言和 ARM 汇编 - 11 函数返回值

ARM 的返回值也是通过 R0 寄存器返回

例子 int fun() { return 16; } int main() { int a; a = fun(); return 0; }

汇编

fun:
    movs    r3, #16
# 保存返回值到 r0
    mov r0, r3
    bx  lr
main:
    push    {lr}
    sub sp, sp, #12
# 调用函数
    bl  fun
# 保存返回值 r0 到局部变量
    str r0, [sp, #4]
    movs    r3, #0
    mov r0, r3
    add sp, sp, #12
    @ sp needed
    ldr pc, [sp], #4