“线程: 测试”中讨论的其它部件
大家好,我是在写一篇关于 C2000 DSP C 编译器的问题的文章的
(Code Composer Studio 8.0.0.00016,编译器版本21.6.0.LTS,DSP TMS320F28375S)。
以下是两个翻译示例:
ACC 32位无符号(DSP 蓄能器)
RES 16位无符号局部变量
1) C 代码 ACC ==((UINT16)(ACC >> 16))<<4);
RES = ACC + 1;
ASM 代码 Add ACC,AH<#4 ;SXM = 0
需要 添加 附件,#1
MOV PL,AL
ASM 代码 MOVL P,附件
从编译器 MOV ACC,PH <<#4.
MOVZ AR7,AL
MOVL 附件
Addu ACC,AR7.
MOVL P,附件
MOV AL,PL
ADB AL,#1
MOV PL,AL
2) C 代码 分辨率= ACC +(((UINT16)(ACC >> 16))<<4)+1;
ASM 代码 Add ACC,AH<#4 ;SXM = 0
需要 添加 附件,#1
MOV PL,AL
ASM 代码 MOVZ AR4,AL
从编译器 MOV ACC,AH <<#4.
添加 AR4, AL
ADDBXAR4 ,#1
示例2编译器中的 ASM 代码不是预期的代码(即我应该编写的代码),但仍然可以接受。
但是,在示例1中,编译器生成的汇编指令数是预期代码的三倍。
我做了些什么错了吗?
是否有编写 C 代码的指导方针,以便编译器生成的汇编代码高效?
谢谢!
下午好