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.
答案 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程序集。