SPARC汇编指令.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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指令使用的基本格

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档