我在使用 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 上运行良好吗?
最后,这可能与架构之外的其他事情有关吗?