【发布时间】:2014-06-10 01:50:46
【问题描述】:
所以我正在尝试在 GCC 中为 windows 编译一些 C。长话短说,我无法让 Visual Studios 编译适用于 XP 的 EXE。所以我想我可以试试 GCC。
它正在努力的代码是:
__asm __volatile ("rdtsc": "=a" (lower), "=d"(upper));
我得到的错误是:
HITWxp.c:22:2: error: inconsistent operand constraints in an 'asm'
__asm __volatile ("rdtsc": "=A" (lower), "=D"(upper));
^
现在,当我将行更改为此时,它会编译:
__volatile ("rdtsc": "=A" (lower));
我注意到它在第二个示例中将“=a”从第一个示例转换为大写“=A”。所以我认为它不区分大小写。
最终结果需要是在 WinXP/7/8/8.1 x86/x64 上运行的 EXE。
有什么想法吗?
提前致谢!
【问题讨论】:
-
你用的是什么版本的gcc?
-
4.8.1 我确实这么认为。如果是由于这个原因,我如何在 Windows 中获取新版本?因为 GCC 确实生成了一个可以在 XP 中运行的 EXE
-
或者我将如何在 Linux for Windows 中编译它。因为我理解通过拆分产生错误的行会产生 x86 和 x64 操作系统的 RDTSC。所以我有点需要那个:)
-
你用什么类型的lower和upper?
标签: c++ c gcc assembly windows-xp