Windows Vista x86を使用しながら、FASMで簡単なアプリケーションを作成しました。アプリケーションはコンパイルされ、エラーなしで正常に実行されました。
次に、まったく同じソースコード(文字通り同じファイル)を、WindowsVistax64を実行している他のPCに移動しました。ソースコードをコンパイルすると、エラーが発生しました。
x86の場合、次のように簡単に始めることができます。
include "win32a.inc"
entry start
x64でコンパイルするときは、次のようなものを使用する必要がありました。
format PE GUI 4.0
include "win32a.inc"
entry start
もう1つの問題(私の主な関心事)は、x86でいつ使用できるかということです。
.if dword [var] = "1234"
;Do something here
.endif
しかし、x64で同じコードをコンパイルしていると、次の行が強調表示された「IllegalInstruction」が表示されます。
.if dword [var] = "1234"
x64でこれを行う別の方法はありますか?
また、両方で互換性がある場所にコーディングするにはどうすればよいですか?x86でコンパイルすると、結果の出力はx64で正常に実行されると思いますか?
最後に、これはアーキテクチャ以外の何かと関係がある可能性がありますか?