3

诠释 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.
4

3 回答 3

3

我找到了我的解决方案:

asm volatile("mov %0, sp \n\t":"=r"(x));
于 2013-08-14T03:25:47.293 回答
2

适用于这种特定情况的方法是:

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

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

于 2013-08-09T13:19:53.487 回答
0

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

于 2013-08-13T18:34:36.733 回答