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.

[参考译文] TMS320F28335:RPT #(N−1)|| PREAD *XAR2++、* XAR7正在运行

Guru**** 2585275 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1261304/tms320f28335-rpt-n-1-pread-xar2-xar7-running

器件型号:TMS320F28335

大家好、

1.

RPT #10

|| PREAD *XAR2++,*XAR7

RPT #11

|| PREAD *XAR2++,*XAR7

在我的客户测试后、这两条指令的执行时间不同、 3个周期 。 (CCS11.0调试->运行->时钟)

但根据 TMS320C28x CPU 和指令集(修订版 F) 页面 368 ,差异是 1个周期

原因是什么?

2.汇编语言部分的源代码为:

_ARRAY_MOVE:

CMPB AL, #0x0
MOVL XAR7, @XAR5
SB Exit, EQ
ADDB AL, #-1
MOVZ AR5, @AL

RPT @AR5
|| PREAD *XAR4++, *XAR7

Exit:
LRETR

C:

extern void ARRAY_MOVE(Uint16* ARRAY1,Uint16* ARRAY2,Uint16 lenth)

main 函数:

ARRAY_MOVE(ARRAY1, ARRAY2,10);

ARRAY_MOVE(ARRAY1, ARRAY2,11);

运行时间随着 lenth 的增加而增加多少?

--

谢谢、此致

耶鲁

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,耶鲁,

    1. 这是否与客户执行和测试的代码完全相同(看起来不是基于第二个问题中的代码)? 如果没有、请提供 说明以及更改方式。 它们在何处启动/停止来测量这两条指令的时钟周期?
    2. 客户应该能够使用 C28x 指令集计算此值、或者他们可以利用 CCS 中的 Counter 事件对其进行计时。

    此致、

    阿米尔·奥马尔