<分区>
我使用的是带有 ARM Cortex-M4 处理器的 STM32F429。我前提是我不懂ARM的汇编,但是我需要优化代码。我阅读了解决方案
How to measure program execution time in ARM Cortex-A8 processor?
那是我需要的,但该解决方案适用于 Cortex-A8。一时兴起,我尝试在我的代码上实现上面的链接代码,但此时我获得了一个 SEGV:
if (enable_divider)
value |= 8; // enable "by 64" divider for CCNT.
value |= 16;
// program the performance-counter control-register:
asm volatile ("MCR p15, 0, %0, c9, c12, 0\t\n" :: "r"(value)); /*<---Here I have SEGV error*/
// enable all counters:
asm volatile ("MCR p15, 0, %0, c9, c12, 1\t\n" :: "r"(0x8000000f));
// clear overflows:
asm volatile ("MCR p15, 0, %0, c9, c12, 3\t\n" :: "r"(0x8000000f));
如何调整此汇编代码以在 ARM Cortex-M4 上执行?