c - 从 gcc 中的内联汇编引用全局变量

标签 c gcc assembly inline-assembly undefined-reference

我遇到链接器生成 undefined reference 错误的问题 来自内联汇编代码。

int global_var = 0;
void myfunc()
{
    asm(".intel_syntax noprefix\n");
    asm("lea eax, global_var\n");
}

我正在使用 GCC 3.4.2 使用 -masm=intel 进行编译,没有任何优化或任何其他操作 如果有人也遇到这种不便,请提供帮助。

最佳答案

基本上,这是一个名称修改问题 - 也就是说,编译器在编译阶段修改(更改)变量和函数的名称。在本例中,“global_var”更改为“_global_var”

如果您更改函数的第二行以使其访问“_global_var”,则它可以正常编译。 (测试GCC 4.7.1)

关于c - 从 gcc 中的内联汇编引用全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14676222/

相关文章:

c++ - 以字符数组为参数的模板元编程

multithreading - `xchg` 是否包含 `mfence` 假设没有非时间指令?

c++ - 为什么 pre_c_init 会访问定义的程序段之外的内存?

android - 是否可以在 iPhone 模拟器或 Android 模拟器中执行 ARM 程序集?

c - 是否可以使用 #if 到 mcro 函数中检查宏参数

c - 使用strstr时如何表示 "if substring present in string do something"?

c++11 - 对 '__gthrw___pthread_key_create(unsigned int*, void (*)(void*)) 的 undefined reference

c - glibc - 强制函数调用(无内联扩展)

c - 从网络服务器读取标准输入

c++ - 如何在C/C++中将 double 或浮点型可变数字存储在数组中