ARM内联约束

时间:2013-07-03 12:28:37

标签: gcc assembly x86 arm

ARM程序集中是否有办法将数组的地址放入寄存器?

类似于

的东西
 __asm__("movl %0,%%eax"::"r"(&array1));
AT&T

X86语法

我最初attempt时的方式

__asm__("LDR R0,%0" :: "m" (&array`)");

你能否给我任何建议或指向我可以为此寻找的地方。

1 个答案:

答案 0 :(得分:5)

这应该有效:

int a[10];
asm volatile("mov %r0, %[a]" : : [a] "r" (a));

ARM GCC Inline Assembler Cookbook是获得正确语法的非常好的资源。

另请参阅GCC文档中的Specifying Registers for Local Variables。您可以直接为变量指定寄存器。

register int *foo asm ("a5");