2012-10-08 124 views
2

我在使用Windows vista x86的同時在FASM中做了一個簡單的應用程序。應用程序編譯並運行良好,沒有任何錯誤。FASM - x64與x86

然後,我將相同的確切源代碼(字面上相同的文件)移動到我的其他PC上運行Windows Vista的X64。編譯源代碼後,我收到錯誤。

當在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上正常運行?

最後,這有可能與架構有關嗎?

回答

2

我挖了一些舊的MASM代碼與最新版本的FASM一起使用。我不得不添加此使用.if宏:

include 'MACRO/IF.INC' 

還有:

include "win32a.inc" 

它來編譯。注意我得到一個非法指令錯誤,但不包括macro/if.inc

也許舊的32位系統上的版本win32a.inc包含.if宏?

0

首先QuasarDonkey有一個點,在宏文件夾中有if文件。我不能肯定地說你的x86程序在x64上運行良好。它確實形成了我在Windows 8上,但不是Windows 7.如果不嘗試在兼容模式下運行它