Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我的asm知识太有限了,需要知道以下代码:
movl %%esp %0
是否%0代表寄存器、内存地址或其他内容?是什么%0意思?
%0
它代表一些输入/输出操作数。它允许您在汇编代码中使用 C 变量。这个页面有一些很好的例子。
%0只是代码中定义的第一个输入/输出操作数。实际上,这可能是堆栈变量、堆变量或寄存器,具体取决于编译器如何生成汇编代码。
例如:
int a=10, b; asm ("movl %1, %%eax; movl %%eax, %0;" :"=r"(b) /* output */ :"r"(a) /* input */ :"%eax" /* clobbered register */ );
%0b在这种情况下是并且%1是a。
b
%1
a