- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SPARC汇编指令
? Sparc汇编指令介绍
恩,是的,这节是介绍Sparc指令的。Sparc我就不介绍了,我工作使用的芯片是Sparc平台的Leon3,做嵌入式的当然逃不了汇编,了解是必需的。
??? 以下的算是上几个星期的工作总结了。发现错误发email指正,感激不尽。
???
SPARC是CPU指令集架构的一种,其设计的目标是优化的编译和易用的流水线硬件执行。
SPARC指令集有以下主要特点:
??? 1. 线性的32位地址空间
??? 2. 精简的指令格式
所有指令都是32位宽和以32为分界对齐排列的。只有3个基本指令的格式--它们是非统一的操作数位置和寄存器地址域。特别要注意的是:只有load和store指令能访问memory和I/O。
??? 3. 很少的几个地址模式,总之比x86指令的地址模式少得多
要么是register+register,要么是register+immediate。
??? 4. 三个一组的寄存器地址
很多指令操作是基于2个寄存器操作数,和一个存放运算结果的寄存器。
例如:add %1,%2,%3 !%1+%2-%3
??? 5. A large “windowed” register ?le — At any one instant, a program sees 8 global integer registers plus a 24-register window into a larger register ?le. The windowed registers can be described as a cache of procedure arguments, local values, and return addresses. (这里的register file就是寄存器文件,寄存器是寄存器文件的简称。感谢CU的jamesr告诉我这一点)
??? 6. A separate ?oating-point register ?le
? 通过软件将(浮点数)配置成32单精度(32bit),16双精度(64bit),8四倍精度寄存器(128bit),或将它们混合。
??? 7. 延时控制传输----处理器常常是在一个延时控制传输指令后提取下一个指令。依靠控制传输指令的annul位判断是否执行它。
??? 8. 多处理器同步指令----一个指令执行一个原子的‘读-然后-设置存储’的操作;另一个执行原子的‘寄存器与存储器交换’的操作。
??? 9. 协处理器 (由于我使用的芯片上没有,所以关于它的指令就不介绍了 )
SPARC寄存器组
寄存器是位于cpu片上的存储单元。在SPARC架构中有32个通用的integer寄存器和32个浮点寄存器。在此之前,强烈推荐Peter Magnusson的一篇入门文章《Understanding stacks and registers in the Sparc architecture(s)》。
Interger通用寄存器组
??? 32个通用的integer寄存器名为%r0,%r01,%r2,… %r31。(由于它们在程序中运行的不同目的,又给它们起了各自的别名,peter哥的文章有介绍)
浮点寄存器组
??? 它们是%f0 .. %f31,通常用于支持实数。它们可用于成对和成组(4个) 的很大的一个数的存储。
专用寄存器组
??? %psr 处理器状态寄存器(Processor State Register)
??? %wim 窗口无效屏蔽寄存器(Window Invalid Mask Register)
??? %tbr Trap基址寄存器(Trap Base Register)
??? %y Y寄存器(Y register)
??? %y寄存器用于乘法和除法中。在除法中,暂存被除数的高32位有效位;
在乘法中,暂存乘积的高32位有效位;
??? %fsr 浮点状态寄存器(Floating-Point State Register)
??? %csr 协处理器状态寄存器(Coprocessor-State Register)
??? %fq 浮点指针队列寄存器(Floating-Point Queue)
??? %cq 协处理器队列寄存器(Coprocessor Queue)
??? %hi,%lo 用于一元操作,截取操作数的高22位和低10位。 (一般用来配合sethi指令)
指令分类及指令格式
1.指令分类及简介
SPARC指令集可以分为6大组类:load/store指令、整数运算指令、控制传输(CTI)指令、读/写控制寄存器指令、浮点操作和协处理器操作指令。
2.指令格式
SPARC指令使用的基本格
您可能关注的文档
最近下载
- 网络空间信息安全(第2版)习题与思考题参考答案.pdf
- 微肿瘤PTC体外药敏检测服务2023年.pdf VIP
- 教科版四年级科学上册第三单元《第1课让小车运动起来》优秀教学设计.docx VIP
- 病例报告表完整版.doc
- 电影售票管理平台.docx
- 统编版语文三年级上册《对话中提示语的位置及标点》课件.pptx VIP
- AQ_ 4272-2016 铝镁制品机械加工粉尘防爆安全技术规范.pdf
- 4第四章-金融市场及其构成(货币金融学(蒋先玲编著)第3版ppt课件可编辑).pptx
- 部编版语文二年级下册 第三单元大单元任务群“发现汉字的秘密”(一等奖创新教学设计).pdf VIP
- 《活着》读书分享.pptx VIP
文档评论(0)