我剛在我的32位Vista盒子上安裝了mingw32以試驗gcc內聯彙編。不幸的是,32位gcc編譯器無法識別64位寄存器 ,如%% rax。在32位窗口下的64位寄存器
之前我沉了大量的時間到試圖組建一個新的工具鏈,我有幾個問題:
是否有在x86(英特爾酷睿雙核,T5800),以防止它的一些處理器模式從運行Vista32時使用64位寄存器(即這是一個失敗的原因)?
假設#1的答案是「當然你可以在32位窗口下使用%rax等」,gcc可以配置爲識別64位寄存器並構建一個可運行的可執行文件32位窗口?我知道gcc有一個-m64選項,但是我的版本隨mingw32一起編譯時沒有64位支持。如果可以構建可訪問64位的32位應用程序,我肯定會重建gcc登記冊,但如果它無法正常工作,我不想經歷那種痛苦。
旁白:這實際上是對學習的SSE2指令集(是的,我知道,編譯器內在存在,但我想從一臺機器最多級理解它)的第一步。
在此先感謝您的任何答案!
-Jim
非常感謝您的回答。回覆:64位Vista ...我通過一個接口(我認爲)使用未簽名的驅動程序連接到微控制器,所以沒有喜悅。我可以在32位窗口下運行64位虛擬機嗎?我目前在VMware下有32位RH9和Fedora 11。我會研究64位虛擬機。我可能會略過64,但如果我可以從32位訪問SSE2(我錯誤地認爲SSE2只能從64位獲得)。再次,謝謝! – Jim
我不會說這是錯綜複雜的。不支持的主要原因是32位操作系統不會保存/恢復任務開關上的所有寄存器。操作系統總是必須知道如何保存/恢復進程所看到的所有架構狀態。 (這是在用戶空間進程可以使用SSE之前需要OS支持的原因,但MMX不需要額外的支持)。 –