c - GCC 程序集输出 : Get variables declared 'extern'

标签 c gcc assembly

我正在使用 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/

相关文章:

c - 如何成对反转链表

c - 不确定这行代码在 C 中意味着什么

c - 运算符 `<--` 在 C 中做什么?

c++ - 避免 gperf 输出文件中的 'warning: declaration UserSuppliedStruct does not declare anything'

xcode - 如何让 gcc 中的链接器识别 OpenCL 库函数?

windows - 如何在 Windows XP 的 CMD 中执行汇编语言代码?

c - 要在 C 中 sleep ,我应该使用 while 时钟还是系统调用?

c++ - 使用 distutils 构建 Python 扩展模块

assembly - Z80 (TI-83+) 在 CALL 上停止工作

assembly - C 函数语法