簡體   English   中英

可以在64位處理器上運行32位匯編代碼嗎? (德爾福)

[英]Can 32-bit assembly code be ran on a 64-bit processor? (Delphi)

我正在用Delphi編寫程序,並包括一個包含一些匯編代碼(Pipes.pas)的庫。 當我運行調用名為StdWndProc的函數的代碼時,遇到訪問沖突。 該過程是一個包含匯編代碼的匯編函數。

前一段時間,我更新了此代碼(Pipes.pas),以包括unicode支持和其他內容,但我不知道此程序集在做什么。 對這里出什么問題有任何想法嗎?

我在64位計算機上運行,​​可能是該程序集是32位並且在64位處理器上無法正確運行(該項目針對32位構建)。

32位進程執行32位代碼。 該代碼是從匯編程序還是從Delphi或其他某種語言編譯而成的,都沒有關系。

機器是64位還是32位都沒有關系,一個32位進程運行32位代碼。 在64位計算機上,一個32位進程在稱為WOW64的模擬32位計算機上運行。

從概念上講,您正在嘗試的事情是可能的,因此結論是您的代碼存在錯誤。

正如David Heffernan指出的那樣,造成問題的原因幾乎不是OS體系結構。

如果您的代碼在32位計算機上沒有錯誤運行,但是在64位計算機上無法運行,則可能是操作系統問題。 可能是因為使用的32位專屬目錄引起的(如SD:\\ Program Files文件被稱為SD:\\ Program Files文件(在64位Windows x86)的 32個程序),注冊表反射(這會導致你的程序將注冊表數據存儲在Wow3264Node密鑰下),甚至使用舊的16位DLL (無法在wow3264下運行),但這是非常罕見的情況,因為是2013年...

為了能夠提供幫助,我需要有關代碼如何 無法正確運行的更多詳細信息。

(請注意,原始問題已經回答,我只想提供一些更有用的幫助。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM