原来在2407里有一段定点乘除计算,翻译成C语言是这样的:
w=((dp3_MotorPole<<10)*(sint32)dp3_MAngleFake)/10000 ;
在2407用汇编语言是如下实现的:
非常高效清晰:清晰是指_dp3_MotorPole(这里等于4)左移10位后成为d‘4096,装入16位的T寄存器,再乘以_dp3_MAngleFake后变成一个32位数,装入ACC,然后用16次SUBC指令完成除法。
用汇编写这样的加减乘除很好操控。
可是,我在CCS6中对28027用C写这段程序,查看其生成的ASM文件,是如下这样:
它call了除法子程序。
我想问:
1)这样call出来的除法效率怎么样?
2)对于28027有没有必要用汇编写这种乘除法?
3)如果有必要,如何将汇编嵌入C程序中?有没有例子可以参考?
先谢了!