SPARC汇编指令.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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精品文档

相关文档