Board logo

标题: PowerPC 体系结构开发者指南(2) [打印本页]

作者: look_w    时间: 2017-12-9 11:51     标题: PowerPC 体系结构开发者指南(2)

PowerPC 应用级寄存器
PowerPC 的应用级寄存器分为三类:通用寄存器(general-purpose register,GPR)、浮点寄存器(floating-point register [FPR] 和浮点状态和控制寄存器 [Floating-Point Status and Control Register,FPSCR])和专用寄存器(special-purpose register,SPR)。让我们来分别看一下这三类寄存器。            
通用寄存器(GPR)
用户指令集体系结构(Book I)规定,所有实现都有 32 个 GPR(从GPR0 到 GPR31)。GPR 是所有整数操作的源和目的,也是所有加载/存储操作的地址操作数的源。GPR 还提供对 SPR 的访问。所有 GRP 都是可用的,只有一种情况例外:在某些指令中,GPR0 只是代表数值 0,而不会去查找 GPR0 的内容。            
浮点寄存器(FPR)
Book I 规定,所有实现都有 32 个 FPR(从 FPR0 到 FPR31)。FPR 是所有浮点操作的源和目的操作数,可以存放 32 位和 64 位的有符号和无符号整数,以及单精度和双精度浮点数。FPR 还提供对 FPSCR 的访问。            
注意,嵌入式微处理器实现时经常不提供对浮点指令集的直接硬件支持,或者只是提供一个附加浮点硬件的接口。很多嵌入式应用程序很少或者根本不需要浮点算法,而当需要的时候,对 PowerPC 浮点指令执行进行软件仿真就足够了。在嵌入式微处理器中,硬件中省去浮点(支持)而为实现带来的芯片面积和功率的减少是至关重要的。
浮点状态和控制寄存器(FPSCR)捕获浮点操作的状态和异常结果,FPSCR 还具有控制位,以支持特定的异常类型和对四种舍入模式之一的选择。对 FPSCR 的访问要通过 FPR。
专用寄存器(SPR)
SPR 给出处理器核心内部资源的状态并对其进行控制。不需要系统服务的支持就可以由应用程序读写的 SPR 包括计数寄存器(Count Register)、链接寄存器(Link Register)和整型异常寄存器(Integer Exception Register)。需要系统服务的支持才可以由应用程序读写的 SPR 包括时基(Time Base)和其他各种可能支持的计时器。            
PowerPC 应用级指令集
表 1 列出了不同的指令类别以及每类的指令类型。            
表 1. 指令类别
指令类别基本指令Branchbranch, branch conditional, branch to LR, branch to CTRCondition registercrand, crnor, creqv, crxor, crandc, crorc, crnand, cror, CR moveStorage accessload GPR/FPR, store GPR/FPRInteger arithmeticadd, subtract, negate, multiply, divideInteger comparisoncompare algebraic, compare algebraic immediate, compare logical,compare logical immediateInteger logicaland, andc, nand, or, orc, nor, xor, eqv, sign extension, countleading zerosInteger rotate/shiftrotate, rotate and mask, shift left, shift rightFloating-point arithmeticadd, subtract, negate, multiply, divide, square root, multiply-add,multiply-subtract, negative multiply-add, negative multiply-subtractFloating-point comparisoncompare ordered, compare unorderedFloating-point conversionround to single, convert from/to integer word/doublewordFPSCR managementmove to/from FPSCR, set/clear FPSCR bit, copy FPSCR field to CRCache controltouch, zero, flush, storeProcessor managementsystem call, move to/from special purpose registers, mtcrf, mfcr
指令解析
所有指令的编码长度都是 32 位。PowerPC 的位编号方式与大部分其他定义相反:第 0 位是最重要的位,第 31 位是最不重要的位。指令首先由一个字段中较高的 6 位进行解码,这 6 位称为                主要操作码(primary opcode)。其余 26 位包含的字段分别是操作数说明、立即(immediate)操作数以及扩展的操作码(opcode),而且这些还可能是保留的位或字段。表 2 列出了 PowerPC 定义的基本指令格式。            
表 2. PowerPC 指令格式
格式06111621263031D-formopcdtgt/srcsrc/tgtimmediateX-formopcdtgt/srcsrc/tgtsrcextended opcdA-formopcdtgt/srcsrc/tgtsrcsrcextended opcdRcBD-formopcdBOBIBDAALKI-formopcdLIAALK如前所述,这些指令格式各有其变种。不过,这些格式是对大部分 PowerPC 指令集编码结构的最好描述。
转移指令
PowerPC 为控制流程提供了一组指令,包括:            
所有的转移指令都具备保存后继顺序指令地址的能力,包括到链接寄存器的转移。条件寄存器 32 位中的任意一位都可以指定为条件转移的条件,并可以指定 CR 位是否必须为 0 或 1 时转移条件才成立。
条件寄存器指令
PowerPC 提供了一组用于对 CR 的特定位执行布尔操作和对 CR 字段进行拷贝的指令。它允许组合多个转移条件,这样可以减少代价高昂的条件转移的数量。表 3 列出了 PowerPC CR 逻辑指令。            
表 3. PowerPC CR 逻辑指令
助记符指令名crandCR logical andcrandcCR logical and with complementcreqvCR logical equivalentcrnandCR logical not andcrnorCR logical not orcrorCR logical orcrorcCR logical or with complementcrxorCR logical xor




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0