1692|0

2015

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

TI C66x DSP 指令集 -之- ADDKPC [复制链接]

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执行。





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


TI C66x DSP 汇编:





如上图,第一条指令执行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寄存器应该是编译器默认的保存返回地址的寄存器。


 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表