我正在使用 gcc.exe -S -masm=intel -o filename.S filename.c
从 C 代码创建汇编代码。我将一些变量声明为 extern
以允许稍后链接。我期望 nasm 中有类似 extern variable
的东西,但汇编文件中从未提及该变量。
有没有办法检查变量是否为外部变量?或者我可以强制 gcc 将此信息添加到程序集文件中吗?
最佳答案
如果程序集文件中未提及您的 extern
变量,则您可能没有使用该变量。但是,即使您正在使用它,您也不会在汇编中看到类似 .extern varname
的内容。 GNU 汇编程序将所有 undefined symbol 视为外部符号。 GCC 知道这一点并且不会发出 .extern
指令。因此,寻找,呃,“PC 相关”变量(如 mov eax, DWORD PTR varname[rip]
)。那是你的 extern
变量。
关于c - GCC 程序集输出 : Get variables declared 'extern' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33598312/