2

我在使用 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 上运行良好吗?

最后,这可能与架构之外的其他事情有关吗?

4

1 回答 1

2

我挖出了一些旧的 MASM 代码以与最新版本的 FASM 一起使用。我必须添加这个才能使用.if宏:

include 'MACRO/IF.INC'

也:

include "win32a.inc"

让它编译。注意我得到一个非法指令错误,但不包括macro/if.inc.

也许win32a.inc您的旧 32 位系统上的版本包括.if宏?

于 2012-10-08T21:07:56.307 回答