第3章指令系统上课用201003_第1页
第3章指令系统上课用201003_第2页
第3章指令系统上课用201003_第3页
第3章指令系统上课用201003_第4页
第3章指令系统上课用201003_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020/6/13,1,第3章指令系统,为了最大限度地使用处理器的基本硬件,以提高效率,同时将程序所使用存储空间降到最小,C54xDSP具有高度专门化的、复杂且不规则的指令集。它具有以下特点:1具有多种灵活的寻址方式2大多数DSP指令是复合指令,有利于编制出高效率的汇编程序3采用流水操作,指令多为单周期指令4指令长度和指令执行时间可以不一样5片内存储器一般为固定地址映射的存储器,指令的操作时间可以严格预测6程序的可读性差指令集多采用助记符指令形式或算术指令形式为防止和减少流水线冲突,需对指令进行重排7指令依赖硬件结构,可移植性较差,2020/6/13,2,主要内容,存储器寻址方式,汇编语言指令系统,2020/6/13,3,TMS320C54x的指令表示方法,C54xDS的助记符指令主要是由操作码和操作数两部分组成,在进行汇编以前,操作码和操作数都是用助记符表示。助记符指令的基本形式为:操作码操作数1,操作数2,操作数3其中操作码指出指令应完成的何种操作,操作数表示参与指令操作的数,操作数包括源操作数和目的操作数,可以有多个,也可以没有,假设有2个操作数,则源操作数在操作数1的位置,目的操作数在操作数2的位置。操作数可以有多种表达形式,例如立即数、寄存器、程序地址、数据地址、I/O地址等,寻找操作数的方式称为寻址方式。例如:LD#1Fh,A这里LD为操作码,表示这是一条装载指令,#1Fh表示操作数1,它是源操作数,A表示操作数2,它是目的操作数。该指令执行结果是将立即数#1Fh装载至累加器A中,,2020/6/13,4,访问的数据类型,单字(16位数),通过DB总线读取数据,通过EB总线写数据,双字(32位数)只有双精度和长字指令能寻址32位数,CPU通过CB总线读取数据高16位,通过DB总线读取数据的低16位通过EB总线写32位数时,需要2个时钟周期,3.1存储器寻址方式,数据寻址反映了CPU对数据空间的访问能力,灵活多样的数据寻址往往会给程序编制带来极大的方便。能够访问的数据类型有两种:,2020/6/13,5,图3-132位字的存储顺序,32位字的存储顺序,2020/6/13,6,寻址方式,立即寻址,绝对寻址,累加器寻址,直接寻址,间接寻址,存储器映射寄存器寻址,存储器寻址方式,堆栈寻址,2020/6/13,7,1立即寻址,以指令中立即数为操作数,采用号作为前缀来表示立即数,立即数的长度取决于指令的类型,例:ld0 x80,A,存储器寻址方式,短立即数,长立即数,2020/6/13,8,2绝对寻址,指令中含有所要寻找的操作数的16位存储单元地址。,16位地址表示形式:地址标号,如:TABLE;16位符号常量,如:89AB、1234。,用途:用于对速度要求较低的场合。,2020/6/13,9,2绝对寻址,绝对寻址有四种类型:数据存储器地址(dmad)寻址;程序存储器地址(pmad)寻址;端口(PA)寻址;*(1k)寻址。,2020/6/13,10,MVKDEXAM1,*AR5;,数据存储器的16位地址dmad值,将数据存储器EXAM1地址单元中的数据复制到AR5寄存器所指向的数据存储单元中。,MVPDTABLE,*AR2;,程序存储器的16位地址pmad值,将程序存储器TABLE地址单元中的内容复制到AR2寄存器所指向的数据存储单元中。,PORTRFIFO,*AR5;,I/O端口地址PA,把一个数从端口为FIFO的I/O口复制到AR5寄存器所指向的数据存储单元中。,LD*(PN),A;,把地址为PN的数据单元中的数据装到累加器A中。,注意:*(1k)寻址的指令不能与循环指令(RPT,RPTZ)一起使用。,2020/6/13,11,3累加器寻址-指把累加器中的数值作为地址来对程序存储访问的方式,相关指令,readaSmemwritaSmemReada-根据累加器A指定的地址从相应的程序存储器中读取数据,并将其写入到Smem指定的数据存储器中,Writa-把Smem指定的数据存储器的数值取出,按照A所指定的地址将它写入相应的程序存储器单元中。,采用单循环指令与上述指令配合时,累加器A的数值会自动增加,因此可以方便的实现程序空间和数据空间数据的交换,存储器寻址方式,2020/6/13,12,4直接寻址,C54xDSP数据存储器按块(页)组织,每80H(128)个存储单元为一个块(页),64K字的数据存储器可分成512页,数据分页见图。,2020/6/13,13,直接寻址所要寻址的数据存储器16位地址是由基地址和偏移地址构成。偏移地址是由指令中的7位地址构成,基地址由数据页指针DP或堆栈指针SP构成。直接寻址方式可以在不改变DP或SP的情况下,随机地寻找128个存储单元中的任何一个单元地址,且直接寻址的指令只需要一个字,寻址速度快,能进行流水线并行操作。直接寻址地址表示形式可以有以下两种:变量前加,如x;在偏移量前加,如5。,2020/6/13,14,通过设置ST1中的CPL位,CPL=0,选择DP,CPL=1选择SP。,直接寻址的地址形成(见P34),存储器寻址方式,2020/6/13,15,地址形成过程:,当CPL=0时,,高9位,低7位,16位数据存储器地址,2020/6/13,16,地址形成过程:,当CPL=1时,,高9位,低7位,16位数据存储器地址,SP+dmad,2020/6/13,17,指令格式,利用数据指针DP和堆栈指针SP寻址。,指令格式:,2020/6/13,18,寻址范围,DP地址的范围是从0511(29-1),将存储器分成512页。,7位dmad范围是从0127,允许每页有128个可以访问的单元。,SP可以指向存储器中的任意一个地址064k。Dmad是距栈顶的数,可以指向当前页中具体的单元,允许访问存储器任意基地址中的连续的128个单元,2020/6/13,19,变量前加,如x;在偏移量前加,如5。,利用直接寻址可以在不改变DP或SP的情况下,随机寻址128个存储单元中的任何一个单元。,直接寻址的优点:每条指令只需要一个字。,直接寻址标识:,2020/6/13,20,举例,例1:数据存储器存储数据如图所示,采用数据页指针DP直接寻址,完成x,y单元的两个数据求和。,RSBXCPL,LD#3,DP,LDx,A,ADDy,A,;CPL复位;立即数3赋给DP;x单元的数据送入A;完成x和y单元的数据相加,LD#3,DP,LD#3,DP,000000011,LDx,A,LDx,A,1111111,000000011,1111111,01FF,1000,0000001000,01FF,1000,ADDy,A,0000000,000000011,0000000,0180,0001,0001,+,1001,0180,0001,1001,000000,ADDy,A,ADDy,A,LD#4,DP,LD#4,DP,RSBXCPL,LD#3,DP,000000011,LDx,A,1111111,0000001000,LD#4,DP,000000100,ADDy,A,0000000,+,0,0,5,1,000000,0000001500,2020/6/13,21,3.1.4直接寻址,例2:数据存储器存储数据如图所示,利用堆栈指针SP直接寻址,求堆栈中距栈顶两个数x,y的和。,SSBXCPL,LD1,A,ADD2,A,;CPL置位;x单元的数据送入A;完成x和y单元的数据相加,SP,x:,y:,SP,x:,y:,SSBXCPL,LD1,A,x:,0200H,1=0201H,0100,0000000100,0100,x:,ADD2,A,2=0202H,y:,0050,0,000000,5,1,0,+,y:,0050,0000000150,2020/6/13,22,直接寻址特点:,所寻址数据存储器的16位地址是由DP或SP与7位偏移地址dmad构成;寻址速度快,能进行流水线并行操作。,用途:主要用于要求运算速度较快的场合。,注意:上述两种直接寻址方式是相互排斥的;采用DP寻址时,要注意数据所在的页面指针。,2020/6/13,23,5、间接寻址,利用辅助寄存器中数值作为绝对地址(C5400系列有8个辅助寄存器),主要用于按某种固定方式对数据空间的连续访问64K16bit数据空间任一单元都可以通过一个辅助寄存器中的16bit地址进行访问,修改方式可以为后加、后减、特定步长,寻址方式最为灵活,2020/6/13,24,灵活的寻址方式,按辅助寄存器内地址更新方式分类,按寻址的辅助寄存器数目来分类,线性寻址(通常的顺序访问),循环寻址(把某段数据区视为一个头尾相接的环,地址的变化始终在该段数据区范围内),比特翻转寻址(专门为FFT变换而设计的,完成地址比特翻转的翻译),单数据(Smem)方式(在一条指令中只利用一个辅助寄存器间接寻址),双数据(Dmem)方式(在一条指令中同时利用两个辅助寄存器间接寻址),2020/6/13,25,单数据间接寻址结构,单操作数寻址的结构如图所示,辅助寄存器中地址的产生是通过辅助寄存器算术单元(ARAU)和相关的硬件来完成的,ARAU完成对16比特无符号地址的算术运算,其源数据来自辅助寄存器、BK、1k和地址更新方式。,辅助寄存器算术单元,2020/6/13,26,间接寻址范围,根据辅助寄存器(AR0AR7)给出的16位地址进行寻址。,每一个辅助寄存器都可以用来寻址64K字数据存储空间中任何一个单元。,两个辅助寄存器算术运算单元(ARAU0和ARAU1)可以根据辅助寄存器的内容进行操作,完成16位无符号数算术运算。,2020/6/13,27,可完成的操作:,用单指令对存储器进行16位数据的读操作或写操作;,用单指令可以完成对两个独立的数据存储单元的读操作;,用单指令可以读和写两个连续的数据存储单元;,用单指令可以在读一个数据存储单元的同时,向另一个存储单元进行写操作。,2020/6/13,28,指令格式,1.单操作数寻址,用来完成存储单元中16位单数据的读写操作。,2020/6/13,29,注1:寻址16位字时增/减量为1,32位字时增/减量为2。注2:这种方式只能用写操作指令。注3:这种方式不允许对存储器映像寄存器寻址。,2020/6/13,30,注1:寻址16位字时增/减量为1,32位字时增/减量为2。,2020/6/13,31,注3:这种方式不允许对存储器映像寄存器寻址。,2020/6/13,32,说明:*ARx-线性寻址,ARx的内容为数据存储器地址*ARx-线性寻址,寻址结束后,ARx地址减1*ARx+-线性寻址,寻址结束后,ARx地址加1*+ARx-线性寻址,寻址以前,ARx地址加1*ARx-0B-比特翻转寻址,寻址结束后,用位倒序进位的方法从ARx中减去AR0的值*ARx+0B-比特翻转寻址,寻址结束后,用位倒序进位的方法从ARx中加上AR0的值*ARx-0-线性寻址,寻址结束后,ARx地址减AR0的值*ARx+0-线性寻址,寻址结束后,ARx地址加AR0的值*ARx-%-循环寻址,寻址结束后,按循环减的方法将AR0中的值减1。*ARx+%-循环寻址,寻址结束后,按循环加的方法将AR0中的值加1。*ARx+0%-循环寻址,寻址结束后,按循环加的方法将AR0中的值加到ARx*ARx-0%-循环寻址,寻址结束后,按循环减的方法将AR0中的值减ARx,2020/6/13,33,特殊的间接寻址功能:,在存储器中设置一个缓冲区作为滑动窗,来保存最新的一批数据,并用新的数据覆盖旧的数据,实现循环寻址。,(1)循环寻址,循环寻址原理,ARx用来存放要寻址的数据缓冲区地址,循环缓冲容量寄存器BK用来放置循环缓冲区的长度R。循环寻址有效基地址(EFB)指向数据循环缓冲区的首地址,是通过把所选用的辅助寄存器的低N位置成0而得到的,缓存区的结束地址(EOB)指向数据循环缓冲区的结束地地址,是通过把辅助寄存器的低N位替换成BK的低N位得到的。ARx指向要寻址的数据循环缓冲区地址。循环缓冲区的偏移量(index)就是ARx的低N位;,2020/6/13,34,循环寻址的步长(step)就是加到辅助寄存器ARx或从辅助寄存器ARx中减去的值,由间接寻址指令表达式给出。例如*ARx-%、*ARx+%,步长(step)为1,ARx+0%、*ARx-0%,步长(step)由AR0指定,*+ARx(lk),步长(step)由偏移值lk所指定。循环寻址实现以下算法:If0index+step32,则N=6。因此缓存区的首地址必须是XXXXXXXXXX0000002。循环寻址操作过程首先要指定一个ARx指向循环缓冲区,根据ARx的低N位作为循环缓冲区的偏移量进行规定的寻址操作。寻址完成后,再根据循环寻址算法修正偏移量,并返回ARx的低N位。,2020/6/13,36,2020/6/13,37,建立滑动窗口循环寻址是DSP的一个关键技术,它广泛应用于卷积、相关和线性滤波等算法。循环缓冲区可以看成是一个滑动窗口,它有一个专门的指针总是指向最旧的的数据,每当状态更新后,最新的数据将覆盖最旧的数据,而指针移向“次旧”的数据,即窗口滑动。,(1)循环寻址(续),循环缓冲区的偏移量(index)就是ARx的低N位;循环寻址的步长(step)就是加到辅助寄存器ARx或从辅助寄存器ARx中减去的值,由间接寻址指令表达式给出。例如*ARx-%、*ARx+%,步长(step)为1,ARx+0%、*ARx-0%,步长(step)由AR0指定,*+ARx(lk),步长(step)由偏移值lk所指定。,2020/6/13,38,实例用AR2作为寻址寄存器,对一个长度为6的数据缓冲区进行循环寻址,用以下指令实现上述功能:STM#6,BKLD*+AR2(4)%,ASTLA,*+AR2(4)%因为BK=6,根据2NR,求得N=3,即数据缓冲区首地址的低3位必须是0,假设AR2=200H,则index=0,step=4,根据上面给出的循环寻址算法可计算循环寻址后的寻址单元地址:执行第2条指令时:因index=index+step=4BK,则index=index+step=4,寻址204h单元执行第3条指令时:因index=index+step=4+4=8BK,则index=index+step-BK=4+4-6=2,寻址202h单元,2020/6/13,39,(2)位倒序寻址(比特翻转寻址),寻址地址=ARx+AR0,AR0存放整数N,是FFT点数的一半,辅助寄存器ARx指向数据存放的物理单元,注意:地址以位倒序的方法产生,即进位是从左向右例:AR2指向FFT数据区,且数据区的首地址为01100000B,数据区大小为16,则AR0的值为00001000B,将AR0和AR2相加,生成比特翻转的地址,其结果如下:*AR2+0B;AR2=01100000(第0值)*AR2+0B;AR2=01101000(第1值)*AR2+0B;AR2=01100100(第2值)*AR2+0B;AR2=01101100(第3值)*AR2+0B;AR2=01100010(第4值)*AR2+0B;AR2=01101010(第5值)*AR2+0B;AR2=01100110(第6值)*AR2+0B;AR2=01101110(第7值),2020/6/13,40,比特翻转寻址(续)下表是4位地址的比特翻转地址与原始地址的对应关系:,存储器寻址方式,实例向PA口连续16次输出数据,该串数据采用位码倒序的间接寻址方法获得。程序如下:RPT#15;重复执行下条指令16次PORTW*AR1+0B,PA;采用位码倒序的间接寻址,向PA口输出数据,2020/6/13,41,2020/6/13,42,5间接寻址,2.双操作数寻址,用于完成执行2次读操作或者1次读和1次写的并行存储操作(用表示)。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。,两个数据存储器操作数由Xmem和Ymem表示。,Xmem:读操作数;,Ymem:,在两次读操作的指令中,表示另一个读操作数;,在一次读和一次写的指令中,表示写操作数。,2020/6/13,43,2.双操作数寻址,指令格式:,2020/6/13,44,2.双操作数寻址,2020/6/13,45,2.双操作数寻址,在指令中,由于只有2位可以用于选择辅助寄存器,所以根据Xar或Yar的值可以选择4个寄存器。,2020/6/13,46,间接寻址特点:通过辅助寄存器和辅助寄存器指针来寻址数据空间存储单元,并自动实现增量、减量、变址寻址、循环寻址,共有16种修正地址的方式。,用途:用于需要按固定步长寻址的场合。,5间接寻址,2020/6/13,47,6存储器映像寄存器寻址,是一种不考虑DP和SP为何值,以0为基地址来访问MMR的寻址方式。主要用于修改存储器映像寄存器的内容。,1.采用直接寻址方式,2.采用间接寻址方式,高9位数据存储器地址置0,利用指令中的低7位地址直接访问MMR。,高9位数据存储器地址置0,按照当前辅助寄存器ARx的低7位地址访问MMR。,2020/6/13,48,6存储器寻址方式,2020/6/13,49,6存储器映像寄存器寻址,C54x共有8条指令可以进行MMR寻址。,LDMMMR,dst;将MMR加载到累加器MVDMdmad,MMR;数据存储器向MMR传送数据MVMDMMR,dmad;MMR向指定地址传送数据MVMMMMRx,MMRy;MMRx向MMRy传送数据POPMMMR;将数据从栈顶弹至MMRPSHMMMR;将MMR数据压入堆栈STLMsrc,MMR;累加器低位存入MMRSTM#lk,MMR;长立即数lk存入MMR,2020/6/13,50,6存储器映像寄存器寻址,MMR寻址特点:,寻址速度快,对MMR执行写操作开销小;可直接利用MMR的名称快速访问数据存储空间的0页资源;只能寻址数据空间的0页单元。,用途:主要用于不改变DP、SP的情况下,修改MMR中的内容。,2020/6/13,51,7堆栈寻址,堆栈:当发生中断或子程序调用时,用来自动保存PC内容以及保护现场或传送参数。,C54x的堆栈是向低地址生长,并由16位堆栈指针SP管理。SP总是指向栈顶。,堆栈寻址:利用SP指针,按照先进后出的原则进行寻址。,当进栈操作时,SP先减小,然后数据进入堆栈;,当出栈操作时,数据先出栈,然后SP增加。,2020/6/13,52,举例,进栈操作时,SP先减小,然后数据进入堆栈;,SPSP-1,使SP指向03FEH;,SP,03FEH,数据进栈,SP=03FEH。,13FF,SP,出栈操作时,数据先出栈,然后SP增加。,SP=03FEH,数据出栈;,SP,13FF,SPSP+1,使SP指向03FFH。,SP,2020/6/13,53,7堆栈寻址,采用堆栈寻址的指令:,PSHDSmem;将Smem中的数据压入堆栈PSHMMMR;将MMR中的数据压入堆栈POPDSmem;将数据从栈顶弹至Smem中POPMMMR;将数据从栈顶弹至MMR中,2020/6/13,54,3.2TMS320C54x的指令系统,3.2.1指令系统概述,指令集的符号和缩写(见P42表3-9、3-10、3-11),指令系统的操作符,2020/6/13,55,表4-23指令系统中的符号和缩写,2020/6/13,56,2020/6/13,57,表4-24操作码中的符号和缩写,2020/6/13,58,指令系统的汇编语法,语法、操作数、机器码、执行结果、状态位的影响、指令字长、指令执行的周期数、单指令重复执行情况、流水线冲突情况,3.2.2指令系统分类(TMS320C54x的指令一共有129条),算术运算指令,逻辑运算指令,程序控制操作指令,加载和存贮操作指令,2020/6/13,59,表4-27常用指令助记符,2020/6/13,60,1算术运算指令算术运算指令是实现数学计算的重要指令集合。C54x的算术指令具有运算功能强、指令丰富等特点,包括:,加法指令(ADD)减法指令(SUB)乘法指令(MPY)乘法-累加/减指令(MAC/MAS)双字运算指令(DADD)特殊用途指令,2020/6/13,61,说明,加法指令操作码:ADD、ADDC、ADDM和ADDS,具体说明见表3-13。如果目的累加器dst被指定,则结果存放在dst中;如果没有被指定,则结果存放在源累加器src中。可完成带移位的加法,移位操作数的范围为-16SHIFT15,0SHFT15。正数为左移位,左移位低位添0,高位受SXM位影响。如果SXM1,则高位进行符号扩展;如果SXM0,则高位清零。负数为右移位,受SXM位影响。如果SXM1,则高位进行符号扩展;如果SXM0,则高位清零。,长立即数,符号位不扩展,表4-28加运算指令,2020/6/13,62,2020/6/13,63,【例1】ADD*AR3+,14,A,1500H14+0000001200H=000101010000000000000000000000=05400000,2020/6/13,64,减法指令操作码:SUB、SUBB、SUBC和SUBS,具体说明见表3-14。用SUBC指令,再重复16次减法运算,可实现两个无符号数的除法运算。减法指令中状态位与加法指令中的基本相同。,带借位的减法运算,含条件的移位减法,无符号数减法,表4-30减法算指令,2020/6/13,65,2020/6/13,66,【例2】SUB#12345,8,A,B,A-3039h8=0000001200h-0000303900h=FFFFCFD900h,C54xDSP没有除法硬件也不提供单周期除法指令,用SUBC指令,加上重复指令RPT,重复16次减法运算,可实现两个无符号数的除法运算。,实例4.8实现无符号整数除法num/den:LDnum,A;将被除数num装入累加器A的低16位RPT#15;重复执行指令SUBC16次SUBCden,A;进行条件移位减法,完成除法STLA,;将商存于变量quot中STHA,quot1;将余数存于quot1中,2020/6/13,67,2020/6/13,68,乘法指令C54x的指令系统提供了10条乘法运算指令,其运算结果都是32位的,存放在累加器A和B中,如表3-15所示操作码MPY、MPYR、MPYA、MPYU、SQUR参与运算的乘数可以是T寄存器、立即数、存储单元和累加器A或B的高16位。如果是无符号数相乘,则使用一条专用于无符号数相乘的指令,即MPYU指令,其他指令都是有符号数的乘法,实例实现整数乘法y=axLDa,T;将a装入T寄存器RSBXFRCT;清FTCT标志位,准备整数乘MPYx,A;完成a与x相乘,结果放入A累加器(32位),STLA,y;计算结果存入y中实例4.10实现小数乘法temp3=temp1temp2SSBXFRCT;置FRCT标志位,准备小数乘法LDtemp1,16,A;将变量temp1装入累加器A的高16位MPYAtemp2;完成temp2与累加器A的高16位相乘,结果放入B累加器,并将temp2装入T寄存器STHB,temp3;将乘积结果的高16位存入变量temp3,2020/6/13,69,2020/6/13,70,乘法-累加和乘法-减法指令这类指令共计22条,表3-16参与运算的乘数可以是T寄存器、立即数、存储单元和累加器A或B的高16位。乘法运算结束后,再将乘积与目的操作数进行加法或减法运算操作码:MAC、MACR、MACA、MACAR、MACD、MACP、MACSU、MAS、MASR,实例实现乘-加运算y=ax+bLDb,B;B=bLDx,T;T=xMACa,B;乘法累加,B=ax+bSTLB,y;计算结果的低字BL存入y中STHB,y+1;计算结果的高字BH存入y+1中,2020/6/13,71,2020/6/13,72,双字算术运算指令指令共计6条,完成双16位数的加减运算,表3-18是对双操作数指令的说明双操作数指令中有一个操作数Lmem是长数据存储操作数,该指令为双长字(32位)的指令。如DADD指令,它在C16的控制下完成一个32位的加法运算或两个16位的加法运算。当C160时,指令以双精度(32位)方式执行;即40位的src与Lmem相加;当C161时,指令以双16位方式执行。即src高16位与Lmem的高16位相加,src低16位与Lmem的低16位相加。,2020/6/13,73,【例28】DADD*AR3+,A,B,C160时,指令以双精度(32位)方式执行15349456H+0056788933H=006BAD1D89H,2020/6/13,74,专用指令专用指令用来完成一些特殊的操作,共15条,其中包含了用于FIR滤波器的专用指令FIRS,求多项式的专用指令POLY等,不仅简化了编程,而且大多数指令是在单周期内完成。,表4-36专用指令,2020/6/13,75,2020/6/13,76,2逻辑运算指令,逻辑与指令,ANDSmem,srcSrc=src&Smem,逻辑或指令,异或指令,ORSmem,srcsrc=src|Smem,XORSmem,srcSrc=srcSmem,移位指令,ROLsrc累加器带进位位循环左移,测试指令,BITXmem,BITCTC=Xmem(15BITC)把双数据存储器操作数Xmem指定位复制到状态寄存器ST0的TC位。,2020/6/13,77,3程序控制操作指令,跳转指令,BACCDsrcPC=src(150),调用指令,中断指令,返回指令,RETDPC=SP+,2020/6/13,78,表4-42后缀有D的分支转移指令的说明,表4-43延迟调用指令的说明,2020/6/13,79,表4-44中断指令,表4-45返回指令,2020/6/13,80,程序控制操作指令(续),重复指令,RPTSmem重复执行单条指令,RC=Smem计数为单数据存储器操作数,堆栈操作指令,其它程序控制指令,2020/6/13,81,表4-46重复指令,表4-47堆栈操作指令,2020/6/13,82,条件操作,C54x有一些指令只有在一个或者多个条件满足后才被执行。下表列出了这些指令与其要用到的条件和相应的操作数符号。,2020/6/13,83,1.使用多个条件,下表中列出了多个条件,多种条件的组合就构成了指令的多重条件。不是所有条件都能构成多重条件。将各种条件分成2组,可以在第1组和第2组中选择不同类别的条件进行组合,但必须注意以下几点:,在第1组中最多可选择两个条件,组内A类和B类条件可以用与/或构成多重条件,但不能用组内同类条件构成与/或多重条件。当选择两个条件时,累加器必须是同一个。例如,可以同时选择AEQ和AOV,但不能同时选择AEQ和BOV。,在第2组中最多可选三个条件,可以在A类、B类和C类中各选一个条件进行与/或构成多重条件,但不能在同类选两个以上条件。例如,可以同时测试TC、C和BIO,但不能同时测试TC、C和NC。,组与组之间可用或构成多重条件,2020/6/13,84,2.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论