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

一些关于DSP执行步骤的疑问?

①在DSP 2809中,我有以下执行语句:

long VinActualValue=3000;

int FixedDutyValue=361;

int VoutCalValue=0;

VoutCalValue=(VinActualValue*FixedDutyValue)/1000;

请问DSP在执行此条语句"VoutCalValue=(VinActualValue*FixedDutyValue)/1000;"时的顺序是什么呢?我能确定(VinActualValue*FixedDutyValue)/1000的值不超过int的长度.

猜想一:VoutCalValue=VinActualValue*FixedDutyValue;(int型乘以long型,会强制把int型转换成long型(正确否?),此条语句执行导致数据溢出)

            VoutCalValue=VoutCalValue/1000;(运行结果出错)

猜想二:Temp=VinActualValue*FixedDutyValue;(Temp是DSP临时为语句执行分配的一个long型变量)

             VoutCalValue=Temp/1000;(运行结果正确)

Martin Yu:

①在DSP 2809中,我有以下执行语句:

long VinActualValue=3000;

int FixedDutyValue=361;

int VoutCalValue=0;

VoutCalValue=(VinActualValue*FixedDutyValue)/1000;

请问DSP在执行此条语句"VoutCalValue=(VinActualValue*FixedDutyValue)/1000;"时的顺序是什么呢?我能确定(VinActualValue*FixedDutyValue)/1000的值不超过int的长度.

猜想一:VoutCalValue=VinActualValue*FixedDutyValue;(int型乘以long型,会强制把int型转换成long型(正确否?),此条语句执行导致数据溢出)

            VoutCalValue=VoutCalValue/1000;(运行结果出错)

猜想二:Temp=VinActualValue*FixedDutyValue;(Temp是DSP临时为语句执行分配的一个long型变量)

             VoutCalValue=Temp/1000;(运行结果正确)

Harry xie1:

回复 Martin Yu:

Martin Yu老师,汇编我忘了,还是看不懂呢。

意思是说VoutCalValue=(VinActualValue*FixedDutyValue)/1000.意思是不是在执行VinActualValue*FixedDutyValue时,把结果放到ACC中,从而不会溢出.

故可以说:

ong VinActualValue=3000;

int FixedDutyValue=361;

int VoutCalValue=0;

VoutCalValue=(VinActualValue*FixedDutyValue)/1000;

它的执行结果不会出错。可以在程序中使用吧?

①在DSP 2809中,我有以下执行语句:

long VinActualValue=3000;

int FixedDutyValue=361;

int VoutCalValue=0;

VoutCalValue=(VinActualValue*FixedDutyValue)/1000;

请问DSP在执行此条语句"VoutCalValue=(VinActualValue*FixedDutyValue)/1000;"时的顺序是什么呢?我能确定(VinActualValue*FixedDutyValue)/1000的值不超过int的长度.

猜想一:VoutCalValue=VinActualValue*FixedDutyValue;(int型乘以long型,会强制把int型转换成long型(正确否?),此条语句执行导致数据溢出)

            VoutCalValue=VoutCalValue/1000;(运行结果出错)

猜想二:Temp=VinActualValue*FixedDutyValue;(Temp是DSP临时为语句执行分配的一个long型变量)

             VoutCalValue=Temp/1000;(运行结果正确)

Harry xie1:

回复 Martin Yu:

嗯,懂了,它中间结果是存在累加器里面.所以不会溢出。最终结果才从累加器赋值到VoutCalValue.

赞(0)
未经允许不得转载:TI中文支持网 » 一些关于DSP执行步骤的疑问?
分享到: 更多 (0)