GCC程序集输出:获取声明为'extern'的变量

时间:2015-11-08 19:53:45

标签: c gcc assembly

我使用gcc.exe -S -masm=intel -o filename.S filename.c从C代码创建汇编代码。我将一些变量声明为extern以允许稍后链接。我在nasm中期望类似extern variable,但在汇编文件中从未提及变量。

有没有办法检查变量是否是extern?或者我可以强制gcc将此信息添加到汇编文件中吗?

1 个答案:

答案 0 :(得分:2)

如果汇编文件中未提及extern变量,则可能不会使用此变量。但是,即使您使用它,您也不会在程序集中看到.extern varname之类的内容。 GNU汇编程序将所有未定义的符号视为外部符号。 GCC知道这一点并且没有发出.extern指令。所以,寻找,嗯," PC-relative"变量(如mov eax, DWORD PTR varname[rip])。这是你的extern vars。