第3章C指令系统2.pptVIP

  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文档。上传文档
查看更多
第3章C指令系统2

Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2002 第3章 C6000指令系统 主编、主讲:范杰 Email:fj_zhbit@126.com 章节内容 3.1 C6000开发工具CCS 3.2 C6000指令结构 3.3 C6000存储器访问指令 3.4 C6000算术逻辑运算指令 3.5 C6000分支、调用指令 3.6 C6000软件流水线循环指令 3.7 伽罗瓦乘法指令 第4节 C6000算术逻辑运算指令 C6000算术逻辑运算指令是指令集的关键组成部分,代表DSP的主要性能特征。 3.4 C6000算术逻辑运算指令 1、加减运算指令分类 有符号数加减运算指令: ①操作数为整型(32位)或长型(40位)的ADD、SUB指令 ②操作数为半字(16位) 的ADD2、SUB2指令:同时进行2个16位补码数的加减运算,高半字与低半字之间没有进/借位,各自独立进行。 无符号数加减运算指令ADDU、SUBU:操作数为32位或40位无符号数。 带饱和的有符号数加减运算指令SADD、SSUB:操作数为32位或40位有符号数。 与16位常数进行加法操作的指令ADDK。 2、加减运算指令的溢出问题 溢出:运算结果超出目的操作数字长所能表示数的范围,造成运算结果的高位丢失,使保存的运算结果不正确,称为溢出。 定点数以全字长表示一个整数,其能覆盖的数据动态范围较小,易产生溢出。 ①定点无符号加减运算类指令:高位丢失,运算结果不正确 ②定点有符号加减运算类指令:产生溢出时会改变运算结果的符号 在C6000的指令里,普通加减运算指令产生溢出时在CPU内不会留下任何标志。 解决溢出问题通常有3种办法: ①用较长的字长来存放运算结果,使目的操作数字长超出源操作数的字长。超出源操作数字长的部分称为保护位(guard bit) #:N位保护位可以保证2N-1次累加运算不溢出 #:增加保护位要占用系统资源,还可能降低运算速度 ②用带饱和的加减运算指令SADD、SSUB做补码加减运算:当产生溢出时,这类指令将使目的操作数置为同符号的最大值(绝对值),即保持运算结果的符号不变,同时使CPU的状态寄存器CSR内的SAT位置1,提示用户注意。 ③对整个系统乘一个小于1的比例因子,亦即将所有输入的数值减小,以保持运算过程不溢出,但这种方法会降低计算结果。 例3.5: ① SSUB .L2 B1, B2, B3 ② SUB .L2 B1, B2, B3 产生溢出:此时存入B3寄存器的内容为DA04 1201h,它是一个负数(-637267455),得数的正负号及数值全错了。 ③ SUB .L2 B1, B2, B5:B4 得数为B5:B4=00DA041201h,它是一个40位有符号数(+3657699841),结果正确。其中,存放在B5的内容为00h,存放在B4的内容为DA041201h。 3.4.1 加减运算指令 3.4.2 乘法运算指令 C6000的乘法运算指令以16?16位硬件乘法器为基础。在.M功能单元中进行运算。 整数乘法指令:以MPY为首字母的13条指令 MPY 、MPYU 、MPYUS、MPYSU、MPYHL、MPYHLU、MPYHULS、MPYHSLU、MPYLH、MPYLHU 、MPYLUHS、MPYLSHU ①其2个源操作数都是16位字长,目的操作数是32位的寄存器 ②根据源操作数为有/无符号数以及源操作数是寄存器的低/高半字,可以组合成16种不同的乘法指令。 ③除了2个无符号源操作数相乘外,只要有一个源操作数是有符号数,其结果就认定是有符号数。 ④由于目的操作数是32位,乘法指令不存在溢出问题 3.4.2 乘法运算指令 适宜Q格式数相乘的3条指令: SMPY、SMPYLH、SMPYHL ①通常用Q格式数表示小数 ②16位定点数的Q15格式:最高位为符号位,符号位后即是小数点位置;实际小数范围是-1?x ?0.9999695 ③Q14:符号位有1位整数,而后才是小数点位置,表示的小数范围是-2?x ?1.9999390 ④定点数Xq和实际小数x之间的转换关系: Xq =int(x?2q);x= Xq ? 2-q ⑤定标:选定Q格式值后,应将系统的全部数值转换成同一格式的定点数,称为定标,即确定同一标尺。 3.4.2 乘法运算指令 3.4.2 乘法运算指令 3.4.3其他算术运算类指令 ABS:取绝对值 汇编句法: ABS .L src2, dst NEG:取32位、40位有符号数的负值 汇编句法: NEG

文档评论(0)

189****1013 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档