在iOS中内联asm错误

时间:2013-08-07 05:08:58

标签: ios inline-assembly

int x;
    __asm __volatile(“movl%0,%% sp”:“= r”(x)::“%sp”);
我想将sp存储到x。
错误:


error: unexpected token in operand
    __asm __volatile("movl  %0,  %%sp":"=r"(x)::"%sp");
                     ^
:1:13: note: instantiated into assembly here
        movl  r0,  %sp
                   ^
1 warning and 1 error generated.

3 个答案:

答案 0 :(得分:3)

我找到了解决方案:

asm volatile("mov %0, sp \n\t":"=r"(x));

答案 1 :(得分:2)

对于这个具体案例有用的是:

register void* sp __asm__("sp");
__asm__("" : "+r"(sp) :: "memory");

它甚至可以在ARM和x86之间移植......

答案 2 :(得分:0)

您正在尝试为ARM CPU组装x86程序集。