我正試圖在ARM M4彙編中調用printf並遇到一些問題。目的是在R1中轉儲內容。該代碼是像我滿足的是,當把「output_string」地址爲R0以下ARM Cortex-M4:在彙編中調用printf時遇到了問題
.data
.balign 4
output_string:
dcb "content in R1 is 0x%x\n", 0
....
.text
....
push {r0, r1}
mov r1, r0
ldr r0, =output_string
bl printf
pop {r0, r1}
的問題,該值將添加一個額外的1。例如,如果符號「output_string」有一個值0x2000,R0將得到值0x2001。
我覺得這與THUMB/ARM模式有關。但是我已經在數據部分中聲明瞭「output_string」,爲什麼彙編器仍然將它作爲指令地址進行轉換?
或者是有一些更正式的方式來做這種in-assembly函數調用嗎?
哪個工具鏈? – auselen
我正在使用iar 6.73 –