sTmpUint32_3 = sTmpUint32_1 - sTmpUint32_2;
上面一行代码,编译后的汇编代码如下,
测试发现,运行这些汇编代码,需要6个CPU周期
这些指令都是单周期的指令,按理应该只需要4个CPU周期,为什么实际上花费了6个CPU周期
0849dc: 761F0262 MOVW DP, #0x262
0849de: 0606 MOVL ACC, @0x6
0849df: 0308 SUBL ACC, @0x8
0849e0: 1E0A MOVL @0xa, ACC
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.
sTmpUint32_3 = sTmpUint32_1 - sTmpUint32_2;
上面一行代码,编译后的汇编代码如下,
测试发现,运行这些汇编代码,需要6个CPU周期
这些指令都是单周期的指令,按理应该只需要4个CPU周期,为什么实际上花费了6个CPU周期
0849dc: 761F0262 MOVW DP, #0x262
0849de: 0606 MOVL ACC, @0x6
0849df: 0308 SUBL ACC, @0x8
0849e0: 1E0A MOVL @0xa, ACC
如下代码,在减法的前后分别获取timer的计数值,然后计数值相减,就得到了这个减法运算用掉了多少个CPU周期
// 测试uint32 减 uint32 需要花费的CPU cycle数
timerCountPrev = CPUTimer_getTimerCount(CPUTIMER2_BASE);
sTmpUint32_3 = sTmpUint32_1 - sTmpUint32_2;
timerCount = CPUTimer_getTimerCount(CPUTIMER2_BASE);
uint32SubUint32Cycles = timerCountPrev - timerCount - gtimerCountDiff0us;
能用CCS自带的周期计数器看一下吗?
有两种方法,
1. https://software-dl.ti.com/ccs/esd/documents/ccs_counting_cycles.html
2. 