TI中文支持网
TI专业的中文技术问题搜集分享网站

关于CCS环境下的DSP的立即数

毕业后玩的DSP都是汇编,自从VC33后就很少亲自编程了。最近因为工作原因不得不接触CCS5.2,看了一些案例程序,突然意识到一个问题,就是在CCS中用difine定义的数,在程序中使用时会保留多少精度呢?学过单片机的人都知道,立即数寻址方式下的立即数是精度有限的,如果F28335的指令码是32位,那么立即数寻址的精度必然低于32位。那么具体是多少呢?比如:
#define   sanfenzhiyi    0.3333333333333333333333333333333333
在程序中有:
a=1;
b=a*sanfenzhiyi;
那么此条语句从汇编的角度来讲应该算立即数寻址,后面的3能保留多少位呢,谢谢。
Tony Tang:

define是宏,编译时是要直接替换到调用的地方,所以取决于上b的类型。

SUN wang:

回复 Tony Tang:

您好,多谢答复。
宏定义和直接替换,我是知道的。大概是我搞汇编太久了,所以我思路还是凝聚在汇编的阶段。C语言在CCS里应该是先转换成汇编语言,才最终成为机器码。那么在汇编系统里,对于语句中的立即数(这个立即数无论怎么来的,直接写的还是宏定义的),都应该属于该机器码中的一部分。如在VC33的汇编系统中,其立即数寻址时,BIT0~BIT15是给指令中的立即数的,也就是说,VC33的系统中的立即数只有16位的有效精度,无论是整型还是小数。
不知道我上面的认识是否有错?
谢谢指导。

赞(0)
未经允许不得转载:TI中文支持网 » 关于CCS环境下的DSP的立即数
分享到: 更多 (0)