FASM - x64 vs x86

时间:2012-10-08 14:16:16

标签: if-statement x86 64-bit fasm

我在使用Windows vista x86时在FASM中创建了一个简单的应用程序。该应用程序编译并运行良好,没有任何错误。

然后,我将相同的源代码(字面上相同的文件)移动到运行Windows vista x64的其他PC上。在编译源代码时,我收到了错误。

在x86上,我可以简单地开始:

include "win32a.inc"
entry start

在x64上编译时,我必须使用类似于以下内容的东西:

format PE GUI 4.0
include "win32a.inc"
entry start

另一个问题(我的主要关注点)是在x86上我可以使用:

.if dword [var] = "1234"
    ;Do something here
.endif

但是在x64上编译相同的代码时,我得到了非法指令"突出显示以下行:

.if dword [var] = "1234"

在x64上有没有不同的方法呢?

另外,我如何编码两者兼容的地方?我想,如果我在x86上编译,那么结果输出将在x64上正常运行?

最后,这可能与建筑有关吗?

1 个答案:

答案 0 :(得分:2)

我挖出了一些旧的MASM代码,用于最新版本的FASM。我必须添加它才能使用.if宏:

include 'MACRO/IF.INC'

以及:

include "win32a.inc"

让它编译。注意我收到非法指令错误而不包括macro/if.inc

您旧的32位系统上的win32a.inc版本是否包含.if宏?