第三章DSP软件体系 C54x寻址方式 ●‘C54x特殊寻址方式说明 C54x指令集 TMS320C54X ‘C54x特殊指令使用说明
第三章 DSP软件体系 •‘C54x寻址方式 •‘C54x特殊寻址方式说明 •‘C54x指令集 •‘C54x特殊指令使用说明
§3-1TMS32054x的寻址方式 立即数寻址:指令中嵌有一个固定的数 绝对地址寻址:指令中有一个固定的地址 累加器寻址:按累加器内的地址去访问程序存储器中 的一个单元 直接寻址:指令中的7bits是一个数据页内的偏移地址, 而所在的数据页由数据页指针DP或SP决定。 该偏移加上DP和SP的值决定了在数据存储器 中的实际地址。 间接寻址:按照辅助寄存器中的地址访问存储器。 存储器映射寄存器寻址:修改存储器映射寄存器中的值, 而不影响当前DP或SP的值。 堆栈寻址:把数据压入和弹出系统堆栈
立即数寻址: 指令中嵌有一个固定的数 绝对地址寻址:指令中有一个固定的地址 累加器寻址: 按累加器内的地址去访问程序存储器中 的一个单元 直接寻址:指令中的7bits是一个数据页内的偏移地址, 而所在的数据页由数据页指针DP或SP决定。 该偏移加上DP和SP的值决定了在数据存储器 中的实际地址。 间接寻址:按照辅助寄存器中的地址访问存储器。 存储器映射寄存器寻址:修改存储器映射寄存器中的值, 而不影响当前DP或SP的值。 堆栈寻址:把数据压入和弹出系统堆栈。 §3-1 TMS320C54x的寻址方式
1立即数寻址 在立即数寻址中,指令里包括了立即操作数。在 条指令中可对两种立即数编码。一种是短立即数(3、 5、8或%bits),另一种是16bits的长立即数。立即数可 包含在单字或双字指令中。3,5-,8-或9-bt值在单字 指令中,16-bit值在双字指令中 3- and 4-Bit 8-Bit 9-Bit Constants Constant Constant 16-Bit Constant LD FRAME LD ADD ORM ADDM RPT RPT AND RPTZ ANDM ST BIF STM CMPM MAC XOR R
在立即数寻址中,指令里包括了立即操作数。在 一条指令中可对两种立即数编码。一种是短立即数(3、 5、8或9bits),另一种是16bits的长立即数。立即数可 包含在单字或双字指令中。3-,5-,8-或9-bit值在单字 指令中,16-bit值在双字指令中。 1 . 立即数寻址
1514131211098 6543210 短立即数RPT[1101,00 8-bit constant 1514131211109876543210 长立即数RPT[1110000111 0000 16-bit constant 立即数寻址的其他例子: LD #O, ARP ;ARP=2(#k3) LD#3, ASM ASM=3(#k5) LD#50, DP ;DP=50(#k9) LD#1234, ;A=1234(#k) STM #FFFFh, MR IMR=FFFFh (#lk)
立即数寻址的其他例子: LD #0,ARP ;ARP=2(#k3) LD #3,ASM ;ASM=3(#k5) LD #50,DP ;DP=50(#k9) LD #1234,A ;A=1234(#k) STM #FFFFh,IMR ;IMR=FFFFh(#lk) 短立即数RPT 长立即数RPT
2.直接寻址 在直接寻址中,指 15-8 6-0 令代码包含了数据 Opcode =0 dm 存储器地址的低七mm 位。这7- bit dma (9) 7 LSBs from iR(dma) 作为偏移地址与数 SP(16) 据页指针(DP)或 DAB(16)(read) DAGEN 堆栈指针(SP)相 0 EA=DP: offset(R)EAB(16)(write) 结合共同形成16 CAB(16) (32-bit read) bit的数据存储器 实际地址。如右图 Data bus DB(16) 所示 Data bus EB(16) R
在直接寻址中,指 令代码包含了数据 存储器地址的低七 位。这7-bit dma 作为偏移地址与数 据页指针(DP)或 堆栈指针(SP)相 结合共同形成16- bit的数据存储器 实际地址。如右图 所示。 2. 直接寻址
CPL=0:dma与9-bit的DP相结合形成数据存储器地址。 DP为基准的直接寻 151413121110987 0 Value from the dP Value from the IR(dma) DP 9-bit 9-bi的DP指向数据存储空间 的512个数据页中的一页
CPL=0:dma与9-bit的DP相结合形成数据存储器地址。 以DP为基准的直接寻址 DP 9-bit 9-bit的DP指向数据存储空间 的512个数据页中的一页 0 1 2 510 511
编程举例: Unreg global x,Y,Entry bss x,128,1 put x"on single page sect program" LD #0,A zero accumulator A LD #x, DP i set dp to page with"X ADD #1,A,A i add 1 to accumulator STL a ax store accumulator a at"x ADD #1,A,A STL A,x+128 Wrap back to start of same page (modulo 128)
编程举例:
编程举例:J=∑a1x=a0x+ax+a12x2+a3x 直接寻址编程: mmregs MAC X, A bss x 4.1 word 012h LD #al,T a 0123 word 321lh MAC X+1, A word fell word ff03h Ld #a2, t set“ progran” MAC X+2, LD #O. A LD #X. DP Ld #ao. t
编程举例: 0 0 1 1 2 2 3 3 3 0 y0 a x a x a x a x a x i = i i = + + + = 直接寻址编程: .mmregs .bss x, 4, 1 a0 .word 012h a1 .word 3211h a2 .word fe11h a3 .word ff03h .sect “program” LD #0, A LD #X, DP LD #a0, T MAC x,A LD #a1,T MAC X+1,A LD #a2,T MAC X+2,A …
CPL=1:dma加上SP基地址形成数据存储器地址。(s中) 以SP为基准的直接寻士 1514131211109876543210 Value from the SP 15141312111098 000 Value from the IR(dma) 15141312111098 Effective memory address 使用以SP为基址的直接寻址: SPada AND sample, A LD sample, A ADD Sample, B
以SP为基准的直接寻址 CPL=1:dma加上SP基地址形成数据存储器地址。(st1中) 使用以SP为基址的直接寻址: AND sample, A LD sample, A ADD sample, B ;……
3.间接寻址 在间接寻址中,64K数据空间任意单元都可通过一个 辅助寄存器中的16-bit地址进行访问。C54x有8个16-bit辅助 寄存器(AR0-AR7)。两个辅助寄存器算术单元(ARAU0和 ARAU1),根据辅助寄存器的内容进行操作,完成无符号的 16-bit算术运算。间接寻址很灵活,不仅能从存储器中读或写 个单16-bit数据操作数,而且能在一条指令中访问两个数据 存储器单元(即从两个独立的存储器单元读数据,或读一个 存储器单元同时写另一个存储器单元,或读写两个连续的存 储器单元)。 单操作数寻 15-8 6 2-0 Opcode MOD ARF
3. 间接寻址 在间接寻址中,64K数据空间任意单元都可通过一个 辅助寄存器中的16-bit地址进行访问。‘C54x有8个16-bit辅助 寄存器(AR0-AR7)。两个辅助寄存器算术单元(ARAU0和 ARAU1),根据辅助寄存器的内容进行操作,完成无符号的 16-bit算术运算。间接寻址很灵活,不仅能从存储器中读或写 一个单16-bit数据操作数,而且能在一条指令中访问两个数据 存储器单元(即从两个独立的存储器单元读数据,或读一个 存储器单元同时写另一个存储器单元,或读写两个连续的存 储器单元)。 单操作数寻址