我想通過asm內聯一個分支來調用c中的外部函數。我正在編譯爲arm m0指令集,但它返回的是錯誤的表達式。ASM內聯調用C外部函數
的代碼是:
__asm volatile (
" cmp r3,#0 \n"
" b %[my_function] \n" //Call function
" bx r14 \n"
: // no output
: [my_function] "i" (my_function) // input
: "r0" // clobber
);
的回報是:
/tmp/ccICkDIE.s: Assembler messages:
/tmp/ccICkDIE.s:152: Error: bad expression -- `b #my_function'
我們需要做什麼?
爲什麼你將'my_function'標記爲直接參數?那麼'may_function'將如何返回,因爲你只能分支?下面這行永遠不會被執行。 – Olaf
創建一個調用'my_function'的非常短的C程序。然後用'-S'選項編譯並查看編譯器生成的程序集。 – user3386109
此代碼適用於Cortex-M4指令集,但不適用於Cortex-M0。 Olaf –