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.
我找到了我的解决方案:
asm volatile("mov %0, sp nt":"=r"(x));
适用于这种特定情况的是:
register void* sp __asm__("sp");
__asm__("" : "+r"(sp) :: "memory");
它甚至可以在ARM和x86之间移植。。。
您正在尝试为ARM CPU组装x86程序集。