TI C66x DSP 指令集 -之- 操作码(opcode)详解

操作码(opcode)就是操作指令,表示该指令应进行什么性质的操作。CPU从程序计数器(PC寄存器)中得到操作码的地址,然后从程序存储空间获取操作码,然后译码,取出操作数,最后执行。

下面以在.D Functional Unit中执行的LDW指令(Load Word From Memory With a 5-Bit Unsigned Constant Offset or Register Offset)讲解。以下内容可参考TMS320C66x_DSP_CPU_and_Instruction and Set.pdf文档中Appendix C。

Table C-2 列出了.D unit的opcode所使用的符号及其意义。

Table C-3为Table C-2中mode符号的编码。

LDW指令,Syntax与opcode格式。

TI C66x DSP汇编,0x1083F62C为opcode的地址,0x021002E6为opcode,"LDW.D2T2      *+B4[0],B4"为opcde的译码结果。0x021002E6 = 0b100001
00000000 0010 1110 0110,结合以上各图,可知table C-2中的符号的值为,s=1(使用B组寄存器),y=1(使用.D2 unit,因为每个CPU有两个data path,所以有两个.D unit,.D1与.D2),mode = 1(根据table C-3,可知使用的是*+R[ucst5]格式),offsetR/ucst5=0(表示无偏移,即等于0),baseR=4(根据s=1,即使用了B组寄存器,所以这里4表示B4寄存器),dst=4(同样表示B4寄存器)。所以对0x021002E6的译码结果就是LDW.D2T2     
*+B4[0],B4。

TI C66x DSP 指令集 -之- 操作码(opcode)详解,布布扣,bubuko.com

时间: 2024-10-14 04:44:40

TI C66x DSP 指令集 -之- 操作码(opcode)详解的相关文章

TI C66x DSP 指令集 -之- ADDKPC

ADDKPC指令的作用是通过一条指令实现返回地址的保存与nop指令的执行.在调用B指令实现真正跳转前,要保存下一条指令的地址(为了执行完跳转程序后,能够返回),并同时执行n个nop指令.该指令有助于减小设置函数调用的返回地址时使用的指令数. 如下面的汇编代码,未使用ADDKPC指令时,在B指令后要保存LABEL的地址到B3寄存器(因为B指令在5个cycle后才会起作用,所以保存LABEL地址的两条指令会执行到,因为只需2个cycle),然后执行3个nop,这样在B指令后,共用了5个cycle,下

TI C66x DSP 系统events及其应用 - 5.3(Interrupt)

对于TI C66x DSP的每个CPU有INT4~15共12个中断输入.对于中断,event combiner将INTC的输入event 4~127分为4个组(event 0~3为INTC内部使用,如图示为event combiner的四个输出),然后event 0~127作为Interrupt Selector的输入.类似于4.x中的exception,中断也有同样功能的event flag,event mask,masked event flag寄存器. Interrupt Seclctor

TI C66x DSP 系统events及其应用 - 5.8(ISTP)

中断服务表指针ISTP(Interrupt Service Table Pointer)寄存器用于定位中断服务程序的位置,即ISTP指明中断发生后去哪里找要执行的程序,ISTP(其中的ISTB字段)就是指向IST表的寄存器.ISTP中的一个字段ISTB确定IST的地址基数部分:另一个字段HPEINT确定特定的中断并定位特定的取指包在IST中的位置.图6-4所示为ISTP的各字段,表6-2描述了各字段及其如何使用. 下图为ISTP寄存器,bit 0~4必须设置为0,即IST表的起始地址或者说获取包

TI C66x DSP 系统events及其应用 - 5.9(IST重定位)

RESET中断的获取包必须位于0地址处,然后其他中断的获取包可以位于任何256字(1k字节边界)对齐的程序空间.IST的位置由ISTP寄存器中的ISTB字段决定. IST重新定位举例: 1,将IST重新定位到800h: 将地址0h~200h的源IST拷贝到800h~A00h中: 将800h写到ISTP寄存器中: MVK 800h,B2 MVC B2,ISTP 则ISTP = 800h = 1000 0000 0000b 2,ISTP引导CPU重新定位的IST中去顶相应的ISFP(指令获取包) 假

TI C66x DSP 系统events及其应用 - 5.10(中断控制寄存器)

C66x DSP执行中断的简要流程: 1.使能了全局中断和子中断,如果硬件检测到中断发生,那么CPU就要跳转. 2.软件把CPU内部的A,B类寄存器的值等推入堆栈保存,把当前PC寄存器的值放入IRP/NRP寄存器中以备中断返回能找到当前被打断的位置. 3.CPU的PC指针读出中断向量表的地址,也就是把"ISTP寄存器的ISTB值+子中断向量偏移量"装入PC寄存器,这样就执行跳转. 4.在中断向量表里一般有就用跳转指令,这样就可以跳转到我们用C语言编写的中断服务子程序中.由于我们在一般的

TI C66x DSP 系统events及其应用 - 5.4(event与ISR配置)

根据5.2中的讲解,当监控high priority queue的PDSP channel设定好后,那么与之对应的event就知道了(PDSP channel与event一一对应)(注意5.x讲的是中断的配置,并不是exception的配置,4.x讲的是exception) 中断event与ISR配置代码如下,目的是使event与ISR建立联系: /*Configure event*/ EventCombinerEventConfig( systemEvent,  (TEventCombiner

TI C66x DSP硬件信号量 - 3(Direct Semaphore)

jeecg v3.0入门视频 链接: http://pan.baidu.com/s/1bnrMfiJ密码: 8q0k MiniDao持久层 入门视频 链接: http://pan.baidu.com/s/1eQGc4W6 密码: stst JEECG-OnlineCoding<企业招聘系统> 视频 链接:http://pan.baidu.com/s/1sjHHVM9 密码: os7b JEECG公开课视频 链接: http://pan.baidu.com/s/1pJFeiiJ 密码: cr75

TI C66x DSP硬件信号量 - 1

In a multicore environment-where system resources must be shared-it is important to control simultaneous accesses to the available resources. To ensure correct system operation, it is necessary to limit access to a resource by one-and only one-core a

TI C66x DSP硬件信号量 - 4(Semaphore moudle)

我们将以下面的例子介绍const变量和static变量的存放位置: static int val_a = 1; // 初始化的静态变量 int val_b = 2;        // 全局变量 const int val_c = 3;  // const 全局变量 static int val_d;     // 未初始化的静态变量 int val_e;            // 未初始化的全局变量 int main() { static int val_f = 5;  // 初始化的局部静