【问题标题】:FASM - x64 vs x86FASM - x64 与 x86
【发布时间】:2012-10-08 14:16:16
【问题描述】:

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

最后,这是否可能与架构无关?

【问题讨论】:

    标签: if-statement x86 64-bit fasm


    【解决方案1】:

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

    include 'MACRO/IF.INC'
    

    还有:

    include "win32a.inc"
    

    让它编译。请注意,如果不包含 macro/if.inc,我会收到 Illegal Instruction 错误。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多