我试图使用BeRTOS了德州仪器的Stellaris Cortex-M3的。我的工作环境是IAR。为了适应IAR和我正在使用的具体uC,我做了很多小的改动,但我有一个我看起来无法解决的问题......坦率地说,这有点凌驾于我的头上。GCC内嵌汇编IAR嵌入式大会
这段代码:
1 void NAKED lm3s_busyWait(unsigned long iterations)
2 {
3 register uint32_t __n __asm("r0") = iterations;
4
5 __asm volatile (
6 "1: subs r0, #1\n\t"
7 "bne 1b\n\t"
8 "bx lr\n\t"
9 : : "r"(__n) : "memory", "cc");
10
11 }
...正在产生一些错误和警告。
Error: expected a ";" -----> Line 3
Error: expected a "(" -----> Line 5
Error: expected a ")" -----> Line 9
Warning: variable "__n" was declared but never referenced -----> Line 3
有什么建议吗?
请考虑看看这个。它特别指出,它不是用于Cortex内核,但它确实提供到像“不引用特定的寄存器” ...... http://supp.iar.com/Support/?note=86655 – Ross
后来版本的IAR的工具支持GCC风格的内联汇编。我不认为有明确使用r0的方法,但语法允许让编译器为你选择一个寄存器。有关详细信息,请参阅IAR编译器手册。 – Lindydancer