- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
? ? 看懂PowerPC汇编,需要如下3方面的知识:? ? 1.PowerPC指令集架构即Power ISA,可以从Power.org获得,包括寄存器定义,数据模型,寻址方式和指令定义以及指令助记符;? ? 2.PowerPC ABI即应用程序二进制接口,即寄存器的使用规范和栈调用结构;? ? 3.PowerPC Pseudo-ops,即.text, .align n等汇编语言中常用的伪操作符。? ? PowerPC ISA分为3个级别即“Book”,分别对应于用户指令集体系结构,虚拟环境体系结构和操作环境体系结构。其中Book III分化出了服务器版本Book III-S(经典PowerPC架构)和嵌入式版本Book III-E(专门为嵌入式优化的版本)。
? ?1.寄存器定义:
? ? PowerPC处理器寄存器分为2大类-专用寄存器和非专用寄存器。其中,非专用寄存器包括32个通用目的寄存器(GPR),32个浮点寄存器(FPR),条件寄存器(CR),浮点状态和控制寄存器(FPSCR);专用寄存器主要包括连接寄存器(LR),计数寄存器(CTR),机器状态寄存器(MSR)以及时间基准寄存器(TBL/TBU)等等。PPC4xx系列处理器还有DCR寄存器,需要用专门的指令访问。这里有两点需要注意:? ? 1. PowerPC处理器可以运行于两个级别,即用户模式和特权模式。用户模式下,仅有GPR,FPR,CR,FPSCR,LR,CTR,XER以及TBL/TBU可以访问。从Power ISA 2.05开始,DCR寄存器也可以在通过用户模式DCR访问指令进行访问。? ? 2.PowerPC处理器没有专用的栈指针寄存器和PC指针寄存器,也就是说硬件不负责维护调用栈。
2.数据模型:
? ? PowerPC支持如下数据格式:byte, halfword, word, doubleword,quadword, 同时默认支持big-endian字节序,即MSB(最高有效字节,例如00x12即MSB)保存在低地址。little-endian字节序可以通过修改设置支持。? ?注意:PowerPC习惯, msb(最高有效位)为bit0,lsb为bit31.
3.寻址方式
? ? PowerPC没有专门的IO操作指令,所有地址访问一视同仁,并且只支持地址和寄存器之间的访问。因此寻址方式非常简单,可以概括为2类6种:
? ?3.1 Load/store/算术/逻辑/cache指令:
? ?a)寄存器间接寻址模式,通常写作RA或者RB;? ?b)寄存器间接立即数索引寻址模式,即(基址寄存器+立即数偏移)寻址模式,通常写作d(RA);? ?c)寄存器间接索引寻址模式(基址寄存器 + 偏移寄存器)寻址模式,通常写作RA,RB。? ?注意:对于三种模式,若寄存器为GPR0,则其内容被忽略,并以0代替其内容。
? ?3.2 跳转指令:
? ?a)立即数寻址模式;? ?b)链接寄存器(LR)模式,即目的地址被保存在LR中;? ?c)计数寄存器(CTR)模式,即目的地址保存在CTR中。? ?注意:实际上还有一些特殊的跳转指令rfi/rfci/rfmci,其目的地址保存在SRR0/CSRR0/MCSRR0中。
4.指令定义和指令助记符:
? ? PowerPC指令的长度都是4字节,但是种类繁多,而且有些指令极其复杂。因此,通常情况下,PowerPC汇编编程中采用指令和助记符混用的方式。 助记符主要用来简化内存访问、算术运算、逻辑运算等常用指令,例如用bne target代替bc 4,2,target表示不为零则跳转。下面仅以一些常见的汇编代码片段来做一些简单的归纳,具体信息请参考相应的处理器core用户手册或者Power ISA。注意,cache和MMU指令会跟其实现一起介绍,此处不再赘述。
? ?4.1 读取一个word(0到目的寄存器
? ? lis RA,0h /* 高16位(0x1234)偏移16位后变成0进RA */? ? ori RB, RA, 0l /* RA与低16位(0x5678)相或后构成完整数据放进RA */? ? 注意:PowerPC指令中, i后缀表示立即数,s后缀表示左移16位。例如addi、addis、ori、oris等。这段代码也可以用来读取某个变量的值,只需要把立即数替换成变量名。
? ?2.从某个地址(0x56789abc)读取数据
? ?lis RA,0x56789abc@ha /* 调整后的高16位(0x5679)偏移16位后变成(0放进R
您可能关注的文档
最近下载
- 2025年秋人教版英语八年级上册Unit 1 Happy Holiday 教案教学设计.docx VIP
- 消除“艾梅乙”医疗歧视-从我做起!.pptx VIP
- 《饮用水源保护区》课件.ppt VIP
- 2025医疗器械偏差管理规程.docx VIP
- 三、功(教学课件)物理苏科版2024九年级上册.pptx VIP
- 2025年巩固拓展脱贫攻坚成果同乡村振兴有效衔接总结15篇 .pdf VIP
- 糖尿病合并高血压患者管理指南2025解读.pptx
- 石家庄空港工业园规划.pptx VIP
- 以中国式现代化全面推进中华民族伟大复兴PPT新时代坚持和发展中国特色社会主义的目标任务PPT课件(带内容).pptx VIP
- 大数据分析师(高级)试题(含答案).pdf VIP
文档评论(0)