ARM C内联汇编 - LDR指令

时间:2018-03-15 14:53:40

标签: arm inline inline-assembly

我正在使用RPI2上的内联汇编(ARM arch),我正在使用GCC作为我的编译器。 我想编译并运行以下部分代码,但我发现错误,如果有人可以帮助我或给我任何帮助来解决问题,请。 以下是我需要帮助的代码部分:

    int main(void)
    { 
     int a;
     asm("PUSH {r0}");
     asm("PUSH {r1}");
     asm("LDR r0, =a");
     asm("MOV r1, sp");
     asm("STR r1, [r0]");
     asm("POP {r1}");
     asm("POP {r0}");
    }

我所犯的错误是关于LDR指令。我试图删除'='或代替LDR命令来使用MOV,但仍然无法正常工作。

1 个答案:

答案 0 :(得分:0)

要访问特定寄存器,可以使用asm寄存器变量,例如:

register int sp asm("sp");
__asm__ __volatile__("" : "=r" (sp));