| 注意 | 当使用-g或-dubug选项编译程序时,为了确保调试信息的完整性,寄存器分配的效率比不使用-g或-dubug选项低很多。 |
寄存器编号 | 可选寄存器名 | 特殊寄存器名 | 寄存器用法 |
r0 | a1 | | 函数调用时的参数寄存器,用来存放前4个函数参数和存放返回值。在函数内如果将这些寄存器用作其他用途,将破坏其值。 |
r1 | a2 | | |
r2 | a3 | | |
r3 | a4 | | |
r4 | v1 | | 通用变量寄存器 |
r5 | v2 | | |
r6 | v3 | | |
r7 | v4 | | |
r8 | v5 | | |
r9 | | v6或SB或TR | 平台寄存器,不同的平台对该寄存器的定义不同 |
r10 | v7 | | 通用变量寄存器。在使用堆栈边界检测的情况下,r10保存堆栈边界的地址 |
r11 | v8 | | 通用变量寄存器。 |
r12 | | IP | 临时过渡寄存器,函数调用时会破坏其中的值 |
r13 | | SP | 堆栈指针 |
r14 | | LR | 链接寄存器 |
r15 | | PC | 程序计数器 |
| 注意 | 在C语言中,可以使用关键词register给指定变量分配专用寄存器。但不同的编译器对该关键词的处理可能不同,使用时要查阅相关手册。 |
| 注意 | 一些编译器提供了“忽略指针别名”选项,但这可能给程序带来潜在的bug。ARM编译器是遵循ANSI/ISO标准的编译器,不提供该选项。 |
欢迎光临 DIY编程器网 (http://diybcq.com/) | Powered by Discuz! X3.2 |