如何确定我在GCC中编译的架构?

时间:2009-10-26 07:05:07

标签: architecture assembly cross-platform

我想编写可以在gcc下轻松编译32或64位linux的代码。我想我正在寻找像

这样的东西
#ifdef IA32
subl $0x4, %esp
#endif

#ifdef X86_64
subl $0x4, %rsp
#endif

2 个答案:

答案 0 :(得分:2)

您最需要的是_LP64,它是在指针大小为64位宽时定义的

答案 1 :(得分:1)

我相信以下内容应该有效:

#if defined __i386__
subl $0x4, %esp
#elif defined __x86_64__
subq $0x4, %rsp
#else
#error Unknown architecture!
#endif

为您修复了64位代码中sub的后缀=)