我正在尝试从C代码调用用asm编写的asm_uart_string()proc。 proc asm_uart_string()仅从r0寄存器中获取一个参数,它是要打印的字符串的地址。我正在尝试传递应打印的“ txt”变量的地址:
char txt[]="eeeeeeeeeeeeeeeee\r\n";
asm("ldr r0, %0" :: "m" (txt));
asm("bl asm_uart_string");
但是我没有得到想要的东西,因为objdump返回以下代码:
7b4: e59f3058 ldr r3, [pc, #88] ; 814 <main+0x3d0>
7b8: e5930000 ldr r0, [r3]
7bc: eb0000bb bl ab0 <asm_uart_string>
我在用C代码内联asm方面没有太多经验,目前还不知道如何将“ txt”的地址正确传递给r0寄存器。有什么建议吗?