我試圖使用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