Arm architecture 第一章

1.arm有31个32位寄存器,其他的用于加速执行。

2. r0~r13是完全通用的, 而r14=LR, r15=PC.
   1) LR在BL指令后,做为BL指令的下一条指令地址, 即函数返回地址(这和Powerpc是完全相同的),其他时候LR(R14)可作为通用寄存器使用。
          2) PC(R15), 程序计数器,指向下一条指令地址, 由于arm指令都是4字节的,所以PC末尾两位总为0。(这和Powerpc不同, Powerpc是没有显式的PC的)。
   3) 软件一般使用r13作为栈寄存器, 但这不是必须的。(和Powerpc一致,栈寄存器可以自选, 而x86就不同,栈寄存器永远是SP)

3. arm有五种异常,每种对应一个特权处理模式。
    快速中断(fast interrupt), 普通中断(normal interrupt), 内存故障(memory aborts), 非法指令(attempted to execution of undefined instruction). 每种异常, r13,r14都有一个影像寄存器, 在快速中断时,r8~r12也都各有一个影子寄存器。 中断时, r14保存返回地址, 而r13一般用来保存私有的栈指针。

    arm还有一个模式, 系统模式(system  mode), 用来访问特权资源, 一般内核代码运行在此级别。

4. CPSR包含除通用寄存器外,所有的处理器状态。 每个异常模式还包含一个SPSR,包含异常发生前的CPSR值。

5. arm指令集分成六类:
  1) 分支指令(Branch instructions)
       2) 数据处理指令 (Data-processing instructions)
       3) 状态寄存器传送指令 (Status register tansfer instructions)
       4) 加载和存储指令 (Load and store instructions)
       5)协处理器指令 (Coprocessor instructions)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章