线性汇编随记

 
 

1.在线性汇编中是可以加入"||"的,虽然TI文档里说在线性汇编里并行指令是非法,

如果加入位置正确的话,是可以提高速度的

2.在没有编排流水而将循环展开,有时候得到的性能比不采用循环展开,由CCS软件流水的性能要好.(特别是对于循环次数少如4次的情况

3.不需要指定功能单元,寄存器组,交叉通道.分配哪个寄存器, 即如使用LDNDW .D1T2 A_s1,中d1t2是不需要的,.2X,.1X这样的也不需要指定,要reg而不是rega或regb分配寄存器,因为目前来说,CCS自动分配的比我分配的要好

4.用.reg tmp1:tmp0,在生成的asm文件中没有发现编译器没有MAP给它分配寄存器,调用它的代码也没有执行,要考虑程序编写的问题,有可能是因为上下相似功能的代码使用了相同的中间寄存器

4.多写些线性汇编指令

5.EXTU的功能

6这样的线性汇编:
     CMPGT theta,cond,if_0
      LDH *a++,ai
[if_0] ADD sum,ai,sum
[!if_0] SUB    sum,ai,sum
想实现的效果是当theta>cond时,执行ADD sum,ai,sum,反之则反
但是现在在调试程序时发现if_0=1时,
这两个加了条件指令的语句"都会执行",

还有,在if_0=0时,
这两个加了条件指令的语句也是"都会执行",
请问可能是什么原因?
谢谢
开飞机的贝塔(79675460) 17:01:20
理论上这是一个条件指令,
应该只执行一个语句啊...

实际上是执行的"两个"条件语句(中括号里的),而只执行一条中括号后面的代码

实际上是相当于if(if_0)和if(!if_0),满足条件的就才进去执行,但两个if还是执行了的

 

转自http://hi.baidu.com/ecice/blog/item/0ecb311298c071cbc2fd7879.html谢谢原作者(如霜的天空?)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值