GCC内联汇编中的等号g“ = g”是什么意思?

问题描述

| 我不确定此内联程序集的作用:
asm (\"mov %%esp,%0\" : \"=g\" (esp));
特别是“ 1”部分。     

解决方法

        
\"=g\" (esp)
定义嵌入式装配的输出。 “ 3”告诉编译器它可以使用任何通用寄存器或内存来存储结果。
(esp)
表示结果将存储在名为
esp
的c变量中。
mov %%esp,%0
是汇编命令,它仅将堆栈指针移至第0个操作数(输出)。因此,该程序集仅将堆栈指针存储在名为“ 5”的变量中。     ,        如果需要详细信息,请阅读Extended Asm上的GCC文档。 简短的答案是,这会将x86堆栈指针(%esp寄存器)移动到名为\“ esp \”的C变量中。 \“ = g \”告诉编译器它可以代替汇编代码中的the8ѭ哪种类型的操作数。 (在这种情况下,它是一个“通用操作数”,这意味着几乎所有寄存器或内存引用都是允许的。)     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...