3 第3章汇编语言指令系统 在DSP应用中,虽然可以使用CC+t高 非 级语言编程,降低了对编程者的要求, 但在一些实时性要求高的场合仍然需要 采用汇编编程,以充分利用DSP丰富的 硬件资源,发挥它的实时运算能力。 用汇编语言编程,要求编程者对DSP的 低层有充分的了解,包括硬件结构、存 储器空间模型和o口的组织等。同时又 要求编程者对指令系统有深刻的了解。 山东大学生物医学工程刘忠国
山东大学生物医学工程刘忠国 1 第3章 汇编语言指令系统 ➢ 在DSP应用中,虽然可以使用C/C++高 级语言编程,降低了对编程者的要求, 但在一些实时性要求高的场合仍然需要 采用汇编编程,以充分利用DSP丰富的 硬件资源,发挥它的实时运算能力。 ➢ 用汇编语言编程,要求编程者对DSP的 低层有充分的了解,包括硬件结构、存 储器空间模型和I/O口的组织等。同时又 要求编程者对指令系统有深刻的了解
3 第3章汇编语言指令系统 非 3.1C54x汇编语言指令集介纽 3.2寻址方式 3.3c54x系列DSP的指令系统 参考:TMS320c54 X DSP Reference set Volume 2: Mnemonic Instruction Set . pdf 1画spru1zc,20047官网
3.1 C54x汇编语言指令集介绍 3.2 寻址方式 3.3 C54x系列DSP的指令系统 第3章 汇编语言指令系统 参考:TMS320C54x DSP Reference Set Volume 2: Mnemonic Instruction Set.pdf, spru172c, 2001, TI官网 2
31c54X汇编语言指令集介绍 c54X汇编语言源程序指令包括: >汇编语言指令 Assembly Language Instructions >汇编伪指令 Assembler directives >宏指令 Macro Directives 本章介绍c54XDSP的汇编语言指令系统。与 其它cPU的指令集相同,汇编语言指令又称为硬 指令,它们在汇编和连接后形成可执行的机器码, 供DSP进行运算和其它操作。 TMS320C54x assem bly language source programs consist of source statements that can contain assembler directives, assembly language instructions, macro directives, and comments TMS320C54X Assembly Language Tools User's Guide--SPRU102F
C54x汇编语言源程序指令包括: ➢ 汇编语言指令Assembly Language Instructions ➢ 汇编伪指令Assembler Directives ➢ 宏指令Macro Directives 3.1 C54x汇编语言指令集介绍 TMS320C54x assembly language source programs consist of source statements that can contain assembler directives, assembly language instructions, macro directives, and comments. 本章介绍C54x DSP的汇编语言指令系统。与 其它CPU的指令集相同,汇编语言指令又称为硬 指令,它们在汇编和连接后形成可执行的机器码, 供DSP进行运算和其它操作。 3 TMS320C54x Assembly Language Tools User’s Guide--SPRU102F
31c54X汇编语言指令集介绍 31.1指令系统中的符号、缩写及操作符 序号符号 含 义 A 累加器A ALU 算术逻辑运算单元 123456789 AR 泛指通用辅助寄存器 ARx 指定某一辅助寄存器AR0~AR7 ARP ST0中的3位辅助寄存器指针 ASM sT中的5位累加器移位方式位16~15 B 累加器B BRAF ST中的块重复操作标志位 BRC 块重复操作计数器 10BTc或 bit code 用于测试指令,指定数据存储器单元中 的哪一位被测试取指范围:0-15 BIT Xmem. BITC
5 ARP ST0中的3位辅助寄存器指针 6 ASM ST1中的5位累加器移位方式位-16~15 BIT Xmem, BITC 3.1 C54x汇编语言指令集介绍 4 3.1.1 指令系统中的符号、缩写及操作符 序号 符 号 含 义 1 A 累加器A 2 ALU 算术逻辑运算单元 3 AR 泛指通用辅助寄存器 4 ARx 指定某一辅助寄存器AR0~AR7 7 B 累加器B 8 BRAF ST1中的块重复操作标志位 9 BRC 块重复操作计数器 10 BITC或bit_code 用于测试指令,指定数据存储器单元中 的哪 一位被测试,取指范围:0~15
31c54x汇编语言指令集介绍 31.1指令系统中的符号、缩写及操作符(续) 序号符号 义 11c16s1中的双16位双精度算术运算方式位 12csT0中的进位位 13Cc2位条件码(0≤c≤3) CMPR CC,ARx 14 CMPT ST1中的ARP修正方式位 15cPL|sT中的直接寻址编辑标志位 16cond表示一种条件的操作数,用于条件执行指令 17c,[D]延时选项 18DABD地址总线 19DAR|DAB地址寄存器 20dmad16位立即数数据存储器地址(0-6555
3.1 C54x汇编语言指令集介绍 序号 符 号 含 义 11 C16 ST1中的双16位/双精度算术运算方式位 12 C ST0中的进位位 3.1.1 指令系统中的符号、缩写及操作符 (续) 5 13 CC 2位条件码(0CC3) CMPR CC, ARx 16 cond 表示一种条件的操作数,用于条件执行指令 17 [d],[D] 延时选项 14 CMPT ST1中的ARP修正方式位 15 CPL ST1中的直接寻址编辑标志位 18 DAB D地址总线 19 DAR DAB地址寄存器 20 dmad 16位立即数数据存储器地址(0~65535)
31c54x汇编语言指令集介绍 311指令系统中的符号、缩写及操作符(续) 序号符号 含 义 21Dmem数据存储器操作数 22 DP ST0中的数据存储器页指针 0<DP<511 23 Dst 目的累加器(A和B) 24 dst与dst相反的目的累加器 25 EABE地址总线 26 EAR EAB地址寄存器 27 extrad23位立即数程序存储器地址 28 FRCT ST中的小数方式位 29 hA)累加器A的高阶位AH或BH 30 HMST中的保持方式位
3.1 C54x汇编语言指令集介绍 序号 符 号 含 义 21 Dmem 数据存储器操作数 22 DP ST0中的数据存储器页指针 (0DP511) 3.1.1 指令系统中的符号、缩写及操作符 (续) 6 23 Dst 目的累加器(A和B) 24 dst_ 与dst相反的目的累加器 25 EAB E地址总线 26 EAR EAB地址寄存器 27 extpmad 23位立即数程序存储器地址 28 FRCT ST1中的小数方式位 29 hi(A) 累加器A的高阶位(AH或BH) 30 HM ST1中的保持方式位
31c54x汇编语言指令集介绍 31.1指令系统中的符号、缩写及操作符(续) 序号符号 含 义 31 FR中断标志寄存器 32 INTM ST1中的中断屏蔽位 33 K 少于9位的短立即数 34 k3 3位立即数(0≤k3≤7)LD#k3,ARP 35 k5 5位立即数(-16≤k515)LD#k5ASM 36 k9 9位立即数(0≤k9511)LD#k9,DP 37 k 16位长立即数 38 Lmem|利用长字寻址的32位单数据存储器操作数 39mmr,MMR存储器映像寄存器 MMRX 40MB,存储器映像寄存器,ARO~AR7或sP MVMM MMRX, MMRI
INTR K; 0 ≤K ≤31 TRAP K; 0 ≤K ≤31 IDLE K; 1 ≤K ≤3 LD #K, dst; 0 ≤K ≤255 RPT #K; 0 ≤K ≤255 FRAME K; –128 ≤K ≤127 3.1 C54x汇编语言指令集介绍 序号 符 号 含 义 31 IFR 中断标志寄存器 32 INTM ST1中的中断屏蔽位 3.1.1 指令系统中的符号、缩写及操作符 (续) 33 K 少于9位的短立即数 38 Lmem 利用长字寻址的32位单数据存储器操作数 39 mmr,MMR 存储器映像寄存器 40 MMRx, MMRy 存储器映像寄存器,AR0~AR7或SP 34 k3 3位立即数(0k37) LD #k3, ARP 35 k5 5位立即数(-16k515) LD #k5, ASM 36 k9 9位立即数(0k9511) LD #k9, DP 37 lk 16位长立即数 7 MVMM MMRx, MMRy
3.1c54x汇编语言指令集介绍 31.1指令系统中的符号、缩写及操作符(续) 序号符号 含 义 41 nXC指令后面的字数,取1或2 42 N指定状态寄存器,N=0为ST0,N=1为sT1 43[ OVA ST中的累加器A溢出标志 44 OVB ST0中的累加器B溢出标志 45 oDst指定目的累加器(A或B)的溢出标志释中 46 ODst另一个目的累加器A或B的溢出标志注释中 47 OSrc指定源累加器(A或B的溢出标志注释中) 48 OVM ST1中的溢出方式位 49 PA16位立即数端口地址(0≤PA65535 50PAR|程序存储器地址寄存器
RSBX N, SBIT; 0SBIT15 XC n, cond [, cond [, cond] ] 3.1 C54x汇编语言指令集介绍 序号 符 号 含 义 41 n XC指令后面的字数,取1或2 42 N 指定状态寄存器,N=0为ST0,N=1为ST1 3.1.1 指令系统中的符号、缩写及操作符(续) 8 43 OVA ST0中的累加器A溢出标志 44 OVB ST0中的累加器B溢出标志 45 OVdst 指定目的累加器(A或B)的溢出标志(注释中) 46 OVdst_ 另一个目的累加器(A或B)的溢出标志(注释中) 47 OVsrc 指定源累加器(A或B)的溢出标志(注释中) 48 OVM ST1中的溢出方式位 49 PA 16位立即数端口地址(0PA65535) 50 PAR 程序存储器地址寄存器
31.1指令系统中的符号、缩写及操作符(续) 序号符号 义 51 PC 程序计数器 52 pmad e6位立即数程序存储器地址(0≤ pmads6555 53 pmem程序存储器操作数 54 PMST处理器工作方式状态寄存器 55 prod 程序存储器操作数(c54x指令中没有使用 56 R舍入选项 57 rnd舍入; Round的缩写 58 RC 重复计数器 59RTN快速返回寄存器 60 REA块重复结束地址寄存器 61RSA块重复起始地址寄存器 block-Repeat End Address register block-Repeat Start Address register 9
RND src [, dst] 3.1.1 指令系统中的符号、缩写及操作符 (续) 序号 符 号 含 义 51 PC 程序计数器 52 pmad 16位立即数程序存储器地址(0pmad65535) 9 53 pmem 程序存储器操作数 54 PMST 处理器工作方式状态寄存器 55 prog 程序存储器操作数(c54x指令中没有使用) 56 [R] 舍入选项 57 rnd 舍入 ;Round的缩写 58 RC 重复计数器 59 RTN 快速返回寄存器 60 REA 块重复结束地址寄存器 block-Repeat End Address register 61 RSA 块重复起始地址寄存器 block-Repeat Start Address register
31c54x汇编语言指令集介绍 31.1指令系统中的符号、缩写及操作符(续) 序号符号 含 义 62 SB用于指定状态寄存器位的位地址 0~15 63 SHFT4位移位值(0-15) 64SHFT5位移位值(16-15 65 sind间接寻址的单数据存储器操作数 6 smem16位单数据存储器操作数 SP堆栈指针寄存器 68 sPC 源累加器(A或B 69ST0,ST1状态寄存器0,状态寄存器1 70 SXM ST1中的符号扩展方式位 71 T 暂存器 10
BANZ[D] pmad, Sind(只出现于此指令) RSBX N, SBIT; 0SBIT15 3.1 C54x汇编语言指令集介绍 序号 符 号 含 义 62 SBIT 用于指定状态寄存器位的4位地址 (0~15) 3.1.1 指令系统中的符号、缩写及操作符(续) 10 63 SHFT 4位移位值(0~15) 64 SHIFT 5位移位值(-16~15) 65 Sind 间接寻址的单数据存储器操作数 66 Smem 16位单数据存储器操作数 67 SP 堆栈指针寄存器 68 src 源累加器(A或B) 69 ST0,ST1 状态寄存器0,状态寄存器1 70 SXM ST1中的符号扩展方式位 71 T 暂存器