lad*_*kie 7 c x86 assembly gcc
我不确定这个内联汇编是做什么的:
asm ("mov %%esp, %0" : "=g" (esp));
Run Code Online (Sandbox Code Playgroud)
特别是那个: "=g" (esp)部分.
"=g" (esp)定义内联汇编的输出.该g告诉它可以使用任何通用寄存器或内存,存储结果的编译器.的(esp),该结果将被存储在名为C变量的装置esp.mov %%esp, %0是汇编命令,它只是将堆栈指针移动到第0个操作数(输出).因此,此程序集只是将堆栈指针存储在名为的变量中esp.
如果您需要详细信息,请阅读有关Extended Asm的GCC文档.
简短的回答是,它将x86堆栈指针(%esp寄存器)移动到名为"esp"的C变量中."= g"告诉编译器它可以替换%0汇编代码中的哪种操作数.(在这种情况下,它是一个"通用操作数",这意味着几乎允许任何寄存器或内存引用.)
| 归档时间: |
|
| 查看次数: |
1895 次 |
| 最近记录: |