【发布时间】:2014-07-30 16:05:49
【问题描述】:
我正在尝试在 C++ 文件中编译以下 asm 代码,但它像 GCC 一样找不到 asm 部分中使用的变量。
DWORD d_eaxSave, d_ebxSave, d_ecxSave, d_edxSave, d_esiSave, d_ediSave, d_espSave, d_ebpSave;
#define ASM_UNPREFIXED_INTEL_START ".intel_syntax noprefix\n\t"
#define SAVE_REGISTERS() __asm__ (ASM_UNPREFIXED_INTEL_START \
"mov d_eaxSave, eax\n\t" \
"mov d_ebxSave, ebx\n\t" \
"mov d_ecxSave, ecx\n\t" \
"mov d_edxSave, edx\n\t" \
"mov d_esiSave, esi\n\t" \
"mov d_ediSave, edi\n\t" \
"mov d_espSave, esp\n\t" \
"mov d_ebpSave, ebp");
但是当我尝试编译时,GCC 给了我以下错误:
undefined reference to `d_eaxSave'
undefined reference to `d_ebxSave'
undefined reference to `d_ecxSave'
undefined reference to `d_edxSave'
undefined reference to `d_esiSave'
undefined reference to `d_ediSave'
undefined reference to `d_espSave'
undefined reference to `d_ebpSave'
请问我该怎么做才能消除这些错误?
【问题讨论】:
-
一般情况下,副本不是很好...
-
问题是重复的,但另一个问题的答案都是错误的。您应该使用此处给出的 Antti Haapala 回答的输出参数。
-
我不认为它是重复的。不过关了也没关系,因为安蒂·哈帕拉已经答应了。
-
嗯,这确实不完全是重复的,因为另一个是关于 C 中的全局变量,而这是关于 C++;因为变量在这里有 C++ 链接,所以那里的任何东西都不能直接在这里工作。
标签: c++ gcc assembly compiler-errors