我試圖用icachetest工作,它有一個文件,任命icache.s
包含:如何在ARM程序集中聲明一個定義並使用它?
#define LOOP \
subs r2, r2, #1 ; \
mov r0, r0 ; \
mov r0, r0 ; \
mov r0, r0 ; \
mov r0, r0 ; \
mov r0, r0 ; \
beq end_loop ; \
mov r0, r0 ; \
我使用arm-eabi-as
編譯這個項目,但我得到這個錯誤:
AS icache.S
icache.S: Assembler messages:
icache.S:16: Error: junk at end of line, first unrecognized character is `\'
icache.S:17: Error: junk at end of line, first unrecognized character is `\'
icache.S:18: Error: junk at end of line, first unrecognized character is `\'
icache.S:19: Error: junk at end of line, first unrecognized character is `\'
icache.S:20: Error: junk at end of line, first unrecognized character is `\'
icache.S:21: Error: junk at end of line, first unrecognized character is `\'
icache.S:22: Error: junk at end of line, first unrecognized character is `\'
icache.S:23: Error: junk at end of line, first unrecognized character is `\'
icache.S:52: Error: bad instruction `loop LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP'
icache.S:53: Error: bad instruction `loop LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP'
icache.S:54: Error: bad instruction `loop LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP LOOP'
您不應該使用'as' - 只需要使用'gcc',以便調用預處理器,例如, 'gcc -Wall icache.S ...'。 –
「as」是什麼? – 0x90
作爲彙編程序,乾淨的程序集將與as組裝好。如果你正在使用C代碼在你的程序集中嘗試一些混合語言的東西,那麼你需要在被gcc調用之前的C預處理器。基本上你不使用定義在asm中使用宏。 –