This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

32位数除以16位数,2407汇编如何高效移植至28027?



原来在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程序中?有没有例子可以参考?

先谢了!