码迷,mamicode.com
首页 > 其他好文 > 详细

TI C66x DSP 指令集 -之- ADDKPC

时间:2014-05-07 07:26:39      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ext   color   http   2014   

          ADDKPC指令的作用是通过一条指令实现返回地址的保存与nop指令的执行。在调用B指令实现真正跳转前,要保存下一条指令的地址(为了执行完跳转程序后,能够返回),并同时执行n个nop指令。该指令有助于减小设置函数调用的返回地址时使用的指令数。

如下面的汇编代码,未使用ADDKPC指令时,在B指令后要保存LABEL的地址到B3寄存器(因为B指令在5个cycle后才会起作用,所以保存LABEL地址的两条指令会执行到,因为只需2个cycle),然后执行3个nop,这样在B指令后,共用了5个cycle,下个cycle B指令就是真正起作用,跳转到func执行;使用ADDKPC指令后,只需一条指令即可实现地址的保存与NOP的执行,ADDKPC指令使用一个cycle,再执行4个nop,也是共5个cycle,之后跳转到func执行

bubuko.com,布布扣

ADDKPC的用法:ADDKPC label, reg, n  //label是标签的地址,reg是寄存器,n是执行nop数

TI C66x DSP 汇编:

bubuko.com,布布扣

如上图,第一条指令执行B跳转指令,B指令后,执行了一个nop(1个cycle),然后执行两个ADD指令(2个cycle),然后在一个cycle同时执行OR与ADDAW指令(||所在行的执令会与他前面的那条指令同时执行,所以占用1个cycle),最后三条指令ADDAW,ADDAW,ADDKPC会同时执行(1个cycle,并在ADDKPC指令中保存CacluateEquWeightsIRC_2PIPE函数的返回地址),所以B指令后共用了5个cycle,在第6个cycle后,就会真正的跳转了,在CacluateEquWeightsIRC_2PIPE函数汇编代码的最后,会直接跳到B3地址处。B3寄存器应该是编译器默认的保存返回地址的寄存器。

 

TI C66x DSP 指令集 -之- ADDKPC,布布扣,bubuko.com

TI C66x DSP 指令集 -之- ADDKPC

标签:style   blog   ext   color   http   2014   

原文地址:http://blog.csdn.net/yiyeguzhou100/article/details/25049983

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!