binarysystemloophole

PowerPC

  • PowerPc体系结构规范,发布于1993年,是一个64位规范也包含32位子集

  • ppc处理器有32个(32位或者64位)GPR 以及诸如PC(程序计数器,也称IAR/指令地址寄存器或者NIP/下一指令指针)、LR(链接寄存器)、FPSCR(浮点状态和控制寄存器)、CTR(计数寄存器)、FPR(浮点寄存器)、CR(条件寄存器)、等各种其他寄存器。有些ppc cpu还有32个64位FPR(浮点寄存器)

  • PowerPC处理器可以运行于两个级别,即用户模式和特权模式。用户模式下,仅有GPR,FPR,CR,FPSCR,LR,CTR,XER以及TBL/TBU可以访问。从Power ISA 2.05开始,DCR寄存器也可以在通过用户模式DCR访问指令进行访问。

  • 注意 :指令中的“.”表示更新条件寄存器如add. rD,rB,rA

            * 指令中的“c”表示:指令显示说明结果影响XER寄存器中的进位位【CA】如addc rD,rA,rB
           * 指令中的“e”表示:在指令中吧XER【CA】中的数据作为一个操作数,并在XER【CA】位记录进位位,如addr ,rA,rB
            * 指令中的字母“0”表示:溢出标识。对于整数,在XER【OA】位记录溢出和在CR0【so】记录溢出位,如addo rD,rA,rB
    
  • PowerPC指令中, i后缀表示立即数,s后缀表示左移16位。例如addi、addis、ori、oris等。这段代码也可以用来读取某个变量的值,只需要把立即数替换成变量名。

  • 配置寄存器

配置寄存器 作用
HID0-HID2 硬件实现寄存器
MSR 机器状态寄存器(用来配置微处理器的设定)
MBAR 存储器基址寄存器
SVR 系统处理器
PVR 版本寄存器
  • 存储管理寄存器

存储管理寄存器 作用
LBATOU/LBATOL/LBAT3U/LBAT3L 指令BAT寄存器
DBATOU/DBATOL/DBAT3U/DBAT3L 数据BAT寄存器
DMISS/DCMP/HASH1/HASH2/ICMP/RPA 软件表搜索寄存器
SDR1 SDR1
SR0-SR15 段寄存器
SPRGs:SPRG0-SPRG7 中断处理寄存器
DSISR DSISR
SRP0 SRP1 保存恢复寄存器
DEC 多功能寄存器
CSRR0-CSRR1 紧急中断寄存器
DAR 数据地址寄存器
TBL-TBU 时基设施(用于写)
IABR/IABR2/DABR/DABR2 指令/数据地址断点寄存器
IBCR/DBCR 指令/数据地址断点控制
通用寄存器 作用
r0 在函数开始时使用
r1 堆栈指针,相当于ia32架构中的esp寄存器,
r2 内容表指针,idapro吧这个寄存器反汇编标识为rtoc,系统调用时包含系统调用号
r3 作为第一个参数和返回值
r4-r10 函数或系统调用开始的参数
r11 用在指针的调用或当做一些语言的环境指针
r12 他用在异常处理个glink(动态链接器代码)
r13 保留作为系统线程id
r14-r31 作为本地变量非易失性
  • 寄存器r1、r14-r31是非易失性的,意味着他们的值在函数调用过程中保持不变。

  • 寄存器r0,r3-r12和特殊寄存器lr、ctr、xer、fpscr是易失性的,他们的值在系统调用过程中会发生改变。

  • r0 r2 r11和r12可能会被交叉模块调用改变,所以函数在调用的时候不能采用他们的值

  • 条件代码寄存器字段cr0 cr1 cr5 cr6 cr7是易失性的。cr2 cr3 cr4 是非易失的,函数要改变他们必须保存并回复这些字段

  • AIX,svca指令,sc是PowerPC的助记符,表示系统调用,r2寄存器指示系统调用号。

  • r3-r10寄存器是给系统调用的参数,在执行系统调用指令之前有两个额外的先决条件,LR寄存器必须保存返回系统调用地址的值并且在系统调用前执行crorc cr6,cr6,cr6指令

异常处理器

  • 整数异常寄存器xer是一个特殊功能寄存器,他包括一些对增加计算精度有用的信息和出错信息
  • xer的格式如下
    • so为总体溢出标志:一旦有溢出位,so就会置位
    • ov为溢出标志:当发生溢出时置位,否则清零。
    • ca位进位标志:当最高位产生进位时,置位,否则清零;扩展精度指令可以用ca作为操作符参与运算

存储加载指令

名称|助记符|语法格式|指令解释
---|:-------

分类:

技术点:

相关文章: