变量都是全局变量,定义成Uint32变量
Chan0Delta0 = Chan0Delta0 + Chan0Delta;
Chan1Delta0 = Chan1Delta0 + Chan1Delta;
Chan2Delta0 = Chan2Delta0 + Chan2Delta;
Chan3Delta0 = Chan3Delta0 + Chan3Delta;
……………………………………………………………………
C64X有8个单元(2个运算单元),于是我把CCS优化开关打到-03,本来想让代码能同时执行两个加法运算,反汇编发现并没有并行执行??,这个是为什么呢,或者说有说明办法让两两加法运算同时执行!!
这个是为什么呢?
反汇编截图如下:
Tony Tang:
怎么感觉汇编对应不上C代码,只有其中一条C代码对应的汇编。B14是bss段,B15才是stack.
Non-aggregate data, by default, is placed in the .bss section and is accessed using relative-offsetaddressing from the data page pointer (DP, which is B14). DP points to the beginning of the .bss section.Accessing data via the data page pointer is generally faster and uses fewer instructions than themechanism used for far data accesses.
B14 Child Data page pointer (DP)
B15 Child Stack pointer (SP)
dong wei1:
回复 Tony Tang:
我可能意思没表达清楚,我反汇编截图有点问题。重新截图了一下。
我本意想让DSP加法运算两两一起计算,因为C64X+内部有8个单元(2个加法器),优化开关是打开了的,为什么DSP就不多个加法一起运算呢?或者有说明办法在定义上让:
Chan0Delta0保存到A寄存器,Chan0Delta保存到B寄存器,这样第一组运算可以同时取数据,
Chan0Delta1保存到A寄存器,Chan1Delta保存到B寄存器,这样第二组运算可以同时取数据,
然后两组加法又实现同时计算!!!
Chan0Delta0 = Chan0Delta0 + Chan0Delta;
Chan1Delta0 = Chan1Delta0 + Chan1Delta;
从C语言上,有说明办法实现没有???
dong wei1:
回复 Tony Tang:
我可能意思没表达清楚,我反汇编截图有点问题。重新截图了一下。 我本意想让DSP加法运算两两一起计算,因为C64X+内部有8个单元(2个加法器),优化开关是打开了的,为什么DSP就不多个加法一起运算呢?或者有说明办法在定义上让: Chan0Delta0保存到A寄存器,Chan0Delta保存到B寄存器,这样第一组运算可以同时取数据, Chan0Delta1保存到A寄存器,Chan1Delta保存到B寄存器,这样第二组运算可以同时取数据, 然后两组加法又实现同时计算!!! Chan0Delta0 = Chan0Delta0 + Chan0Delta; Chan1Delta0 = Chan1Delta0 + Chan1Delta; 从C语言上,有说明办法实现没有???