问题描述
我现在有点困惑,下表显示了据我所知程序员可以使用的ARM寄存器:
| Register Name | Register Number | Usage |
| ---------------- | --------------- | -------------------- |
| r0 - r10 | 0 - 10 | General Purpose |
| r11 or fp | 11 | Frame Pointer |
| r12 or ip | 12 | Intraprocess scratch |
| r13 or sp | 13 | Stack Pointer |
| r14 or lr | 14 | Link Register |
| r15 or pc | 15 | Program Counter |
但是也有cpsR,例如TST
指令。
所以我的问题是,cpsR是16个寄存器中的哪个?
解决方法
没有一个。这不是 all 机器寄存器的完整列表,仅是通用寄存器(r0-r14
)和程序计数器的完整列表。机器上还有许多非通用寄存器,CPSR就是其中之一。确实,在我的《 armv8体系结构参考手册》的副本中,CPSR被明确称为“专用”寄存器。