Вызов сборщика руки в gcc - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь вызвать процедуру asm_uart_string (), написанную в asm из кода C.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>

У меня нет большого опыта встраивания asm в C-код, и в настоящее время я не знаю, как правильно передать адрес "txt" в r0.Есть предложения?

...