- 1、本文档共69页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]dspDSP指令系统与特点 3
第1组 例如 可以从A类中选一个条件,同时可以从B类中选择一个条件。但是不能从同一类中选择两个条件。 另外,两种条件测试的累加器必须是同一个。 可以同时测试AGT和AOV,但不能同时测试AGT和BGT。 第2组 例如 可以在A、B、C三类中各选择一个条件,但不能从同一类中选择两个条件 可以在A、B、C三类中各选择一个条件,但不能从同一类中选择两个条件 特 例 如果条件分支转移出去的地方只有1~2字的程序段,则可以用一条单周期条件执行指令(XC)来代替分支转移指令: XC n,cond[,cond[,cond]] 当n=1,且条件得到满足,就执行紧随此 条件指令后的1个字指令。 当n=2,且条件得到满足,就执行紧随此 指令后的1个双字指令或者2条单 字指令。 当条件不满足,就依n的值执行1 条或2条NOP指令。 例3-3 编写计算 的主要程序部分。 .bss x,4 ;为X建立4个单元, ;放置X1、X2、X3、X4 .bss y,1 ;为Y建立1个单元,放置Y STM #x,AR1 ;将X1的地址传给AR1 STM #3,AR2 ;将循环次数3传给AR2 LD #0,A ;对A清零 loop:ADD *AR1+,A ;对X1、X2、X3、X4循环累 ;加,结果放A中 BANZ loop,*AR2- ;检查循环是否应结束 STL A,y ;将累加结果存入Y中 特点2 特点1 4.单条指令的重复操作 重复执行(RC)+1次。RC内容不能编程设置,只能由重复指令(RPT和RPTZ)中的操作数加载。操作数n的最大值为65 535,最大重复执行次数为65 535+1。 一旦重复指令被取指、译码,直到重复循环完成以前,对所有的中断(包括 ,但不包括 )均不响应。 功能 重复执行下一条指令 重复过程 当RPT指令执行时: ①首先把循环的次数装入循环计数器(RC), ②其循环次数n由一个16位单数据存储器操作数 Smem或一个8位或16位常数k或lk给定。这样, 紧接着的下一条指令会循环执行n+1次。 ③循环,RC在执行减1操作时不能被访问。 注意:该循环内不能套用循环。 当RPTZ指令执行时:对目的累加器dst清0, 循环执行下一条指令n+1次。 例3-5 利用单条指令的重复操作对数组x[5]={0,0,0,0,0}进行初始化。 .bss x,5 ;为数组x分配5个存储单元 STM #x,AR1 ;将x的首地址赋给AR1 LD #0,A ;对A清零 RPT #4 ;设置重复执行下条指令5次 STL A,*AR1+;对x[5]各单元清零 或者 .bss x,5 STM #x,AR1 RPTZ A,#4;对A清零并设置重复执行下条指令5次 STL A,*AR1+ 特点 5.块重复操作 利用C54x内部的块重复计数器(BRC,加载值可为0~65 535)、块重复起始地址寄存器(RSA)、块重复结束地址寄存器(REA)与程序块重复指令RPTB,可对紧随RPTB、由若干条指令构成的程序块进行重复操作。 功能 将重复操作的范围扩大到任意长度的循环回路 注意 1.RPT指令一旦执行,不会停止操作,即使有中断请求也不响应; 2.RPTB指令可以响应中断; 例3-6 对数据组x[5]中的每个元素加1。 .bss x,5 ;为数组x分配5个存储单元 begin: LD #1,16,B ;将1左移16位放入B的 ;高端字的最低位 STM #4,BRC ; 4→BRC,(PC)+2 →RSA STM #x,AR4 ;将x的首地址赋给AR4 RPTB next-1 ;将NEXT-1 →REA ADD *AR4,16,B,A ;x地址的内容左移16位加 ; B的高端字,结果放A STH A,*AR4+ ;将A的高端字存入x单元, ;完成加1操作 next: LD #0,B ;对B清零 … ;必需next-1作为结束地址 对寄存器的占用 6.循环的嵌套 执行RPT指令时占用RPTC寄存器(重复计数器); 执行RPTB指令时要用到BRC、RSA和RSE寄存器。只有一套块重复寄存器,故块重复操作不能嵌套。 由于RPT与RPTB两者用了不同
文档评论(0)