-
通用寄存器 R0-R12:
- 这些寄存器用于存储通用数据,例如整数、指针等。
- 在函数调用中,R0-R3 通常用于传递参数,R4-R11 用于保存局部变量和中间计算结果。
- 示例:
MOV R0, #10 ; 将立即数 10 存储到 R0 ADD R1, R2, R3 ; 将 R2 和 R3 中的值相加,并将结果存储到 R1
-
栈指针 SP (R13):
- SP 是一个特殊寄存器,用于指向栈的顶部。
- 在函数调用和返回过程中,SP 用于分配和释放局部变量的空间。
- 示例:
PUSH {R4, R5} ; 将 R4 和 R5 的值压入栈
POP {R6, R7} ; 将栈中的值弹出到 R6 和 R7
-
链接寄存器 LR (R14):
- LR 用于存储函数调用的返回地址。
- 在函数调用时,LR 保存返回地址,以便在函数返回时跳回调用点。
- 示例:
BL myFunction ; 调用函数,返回地址将存储在 LR 中
-
程序计数器 PC (R15):
- PC 存储当前正在执行的指令的地址。
- 在函数调用和分支指令中,PC 的值会被修改,以改变程序的执行流程。
- 示例:
B myLabel ; 无条件跳转到标签 myLabel 处
这些寄存器在汇编语言中使用,程序员可以直接访问它们以实现对底层硬件的控制。在嵌入式系统中,特别是对于Cortex-M系列,程序员通常使用这些寄存器来编写底层的驱动程序和中断服务程序。