2013-03-17 161 views
0

我在64位模式下編譯的技術優勢是什麼,而不是32位?我們是否正在談論我的應用程序可以使用的RAM?我可以使用的CPU寄存器的大小?某些內聯彙編在64位模式下不起作用?

我問,因爲我讀了這個問題:

ICC inline assembler doesn`t like push/pop

一個男人不能讓聯彙編指令POP編譯,因爲他在64位模式編譯和POP僅適用於32個寄存器(至少,我是如何閱讀答案的)。

我不敢相信你不能使用POP彙編命令,如果你在64位模式下編譯?

我的主要問題是,如果您選擇64位編譯 - 這是否意味着您不能使用「常規」內聯彙編指令?

+0

最相關的優點是更通用的寄存器,更大的地址空間,保證存在SSE。 – 2013-03-17 15:25:13

+0

您可以在64位模式下使用'POP'彙編指令,但特別是'POP ebp'不能以64位模式編碼。另一方面'POP rbp'(64位版本的ebp)應該可以正常工作。 – 2013-03-17 15:41:45

+0

@JorgeNúñez謝謝,這更有意義!所以他彈出錯誤的註冊表! – user997112 2013-03-17 15:51:20

回答

2

pushpop在64位模式不能有32位操作數,只有16位或64位,它不是pop僅適用於32位寄存器的情況。通常,很多代碼在32位和64位模式下的工作方式都是相同的,但是一些很少使用的指令(十進制數學,與分段有關的指令)已從64位模式中完全刪除。