SL7*_*Bot -1 assembly arm instruction-set cpu-registers thumb
所以现在我读了《ARM Cortex-M3/M4 权威指南》一书,无法理解为什么 16 位指令无法访问高级通用寄存器 R8-R12。
它说实际上很少有人可以访问这些寄存器,但大多数不能。
16bits 意味着机器代码指令只有 16 位来编码信息。8 个寄存器需要 3 位进行编码。12 个寄存器需要 4 位进行编码。然后我们需要操作码和其他选项的空间,这意味着额外的位可能有点太多了。
编码 8 个寄存器的地址需要 3 位。编码 12 个寄存器的地址需要 4 位。
如果您有一个 3 寄存器指令,则需要 12 位来对 3 个寄存器进行编码,只剩下 4 位用于指令。您最多只能有 16 条指令。