PowerPC汇编指令集

PowerPC汇编指令集

ID:42182588

大小:143.51 KB

页数:19页

时间:2019-09-09

PowerPC汇编指令集_第1页
PowerPC汇编指令集_第2页
PowerPC汇编指令集_第3页
PowerPC汇编指令集_第4页
PowerPC汇编指令集_第5页
资源描述:

《PowerPC汇编指令集》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、PowerPC汇编指令集标签: 汇编  指令  PowerPC  PPC 2008-05-0421:25PowerPC 体系结构规范(PowerPCArchitectureSpecification)发布于 1993 年,它是一个 64 位规范 ( 也包含 32 位子集 )。几乎所有常规可用的 PowerPC(除了新型号 IBMRS/6000 和所有 IBMpSeries 高端服务器)都是 32 位的。PowerPC 处理器有 32 个(32 位或 64 位)GPR(通用寄存器)以及诸如 PC(程序计数器,也称为IAR/指令地址寄存器

2、或 NIP/下一指令指针)、LR(链接寄存器)、CR(条件寄存器)等各种其它寄存器。有些 PowerPCCPU 还有 32 个 64 位 FPR(浮点寄存器)。MPC555使用的PowerPCCPU是带有FPR的。一些常用寄存器介绍如下:通用寄存器的用途:r0   在函数开始(functionprologs)时使用。r1   堆栈指针,相当于ia32架构中的esp寄存器,idapro把这个寄存器反汇编标识为sp。r2   内容表(toc)指针,idapro把这个寄存器反汇编标识为rtoc。系统调用时,它包含系统调用号(这个好像跟系统有

3、关吧)。r3   作为第一个参数和返回值。r4-r10 函数或系统调用开始的参数。r11   用在指针的调用和当作一些语言的环境指针。r12   它用在异常处理和glink(动态连接器)代码。r13   保留作为系统线程ID。r14-r31 作为本地变量,非易失性。专用寄存器的用途:lr   链接寄存器,它用来存放函数调用结束处的返回地址。ctr   计数寄存器,它用来当作循环计数器,会随特定转移操作而递减。xer   定点异常寄存器,存放整数运算操作的进位以及溢出信息。msr   机器状态寄存器,用来配置微处理器的设定。cr   条

4、件寄存器,它分成8个4位字段,cr0-cr7,它反映了某个算法操作的结果并且提供条件分支的机制。寄存器r1、r14-r31是非易失性的,这意味着它们的值在函数调用过程保持不变。寄存器r2也算非易失性,但是只有在调用函数在调用后必须恢复它的值时才被处理。寄存器r0、r3-r12和特殊寄存器lr、ctr、xer、fpscr是易失性的,它们的值在函数调用过程中会发生变化。此外寄存器r0、r2、r11和r12可能会被交叉模块调用改变,所以函数在调用的时候不能采用它们的值。条件代码寄存器字段cr0、cr1、cr5、cr6和cr7是易失性的。cr

5、2、cr3和cr4是非易失性的,函数如果要改变它们必须保存并恢复这些字段。在AIX上,svca指令(sc是PowerPC的助记符)用来表示系统调用,r2寄存器指定系统调用号,r3-r10寄存器是给该系统调用的参数。在执行系统调用指令之前有两个额外的先决条件:LR寄存器必须保存返回系统调用地址的值并且在系统调用前执行crorccr6,cr6,cr6指令(?)。应用程序二进制接口(ABI)从技术而言,开发人员可以将任一 GPR 用于任何操作。例如,由于不存在:“堆栈指针寄存器”,为此程序员就可以使用任何寄存器。实际上,定义一组约定很有用,

6、这样二进制对象就可以与不同的编译器和预先编写好的汇编代码进行互操作。调用约定是由使用的 ABI(应用程序二进制接口)决定的。ppc32Linux 和 NetBSD 实现使用SVR4(SystemVR4)ABI,而 ppc64Linux 仿效了 AIX,使用 PowerOpenABI。ABI 还指定当调用子例程时哪些寄存器被认为是易失型的(调用者保存(caller-save))以及哪些被认为是非易失型的(被调用者保存(callee-save)),以及许多其它内容。SVR4ABI 指定了一些行为的具体示例:-由于 PowerPC 拥有如此

7、多的 GPR(32 个,而相比之下 IA32 只有 8 个),所以传递参数的寄存器从gpr3 开始。-寄存器 gpr3 到 gpr12 是易失型的(调用者保存)寄存器,如果需要的话,在调用子例程之前必须先保存它们并在返回之后恢复它们。 -寄存器gpr1用来作为栈帧指针。指令格式PowerPC指令包括操作码和操作数两部分,PowerPC支持三操作数的指令格式。如算术指令:addrD,rA,rB表示把(rA)+(rB)的和存放到rD寄存器中。注意:指令中的点号“.”表示:指令将更新条件寄存器CR0。如add.rD,rA,rB。指令中的字母

8、“c”表示:指令显示说明结果影响XER寄存器中的进位位[CA],如addcrD,rA,rB。指令中的字母“e”表示:在指令中把XER[CA]中的数据作为一个操作数,并在XER[CA]位记录进位位,如adderD,rA,r

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。