當前位置:首頁 » 編程軟體 » x8664體系探索及編程

x8664體系探索及編程

發布時間: 2022-07-24 07:03:57

『壹』 x86/x64體系探索及編程的前言

2003年前後,我開始對x86平台的一些架構知識產生了濃厚的興趣,在業余時間斷斷續續地學習了AMD的System Programming手冊。後來,為了方便,索性挑了些感興趣的章節列印出來,偶爾拿出來翻翻。也曾通過寫一個OS來學習x64的體系知識,當然這個OS只是個試驗品。
在計劃好寫本書之後,我又好好地重讀了Intel的幾卷手冊,特別是Intel 64 and IA-32 Architectures Software Developer's Manual的Volume 3 System Programming Guide和Volume 1 Basic Architecture。
因此,本書所寫的內容是基於Intel處理器的,至於所測試機器的處理器則是Intel的Westmere微架構處理器(SandyBridge的上一代)。但是,如非明確註明,大部分內容對於AMD處理器也是適用的,有些地方甚至反復多次對Intel與AMD的區別進行了強調。
盡管我已竭力探索事物的本質真相,然而不可否認,本書中仍可能會有些個人主觀的認知因素,但必須說明的是,這些主觀的認知是經過客觀的實驗事實而得出的,本書的每個知識點都經過了實驗例子進行測試。在本書成書過程中,我慢慢地發現,如果沒有經過實驗的測試竟然覺得心裡不踏實,總覺得欠缺什麼而不敢下筆。本書中有上百個實驗,每個章節都有數個例子。然而比起我所做過的測試仍相距甚遠。
通過本書,我希望能引起讀者的共嗚,激發求知的慾望和探索的精神,以及學會怎樣「肓人摸象」。盡管摸到的可能只是事實的一部分,但是只要我們不斷地進行摸索,經過反復的測試,我們終將會慢慢積累知識,在一無所知的情況下逐步接近真相。

『貳』 x86/x64體系探索及編程的章節閱讀

如果想對x86與x64有較全面的了解,那麼從第1章到第21章最好都去閱讀。對於x86與x64編程基礎不是那麼好的讀者,第1章和第2章是必須要去了解的。
要想更好地了解x86與x64平台,第1篇、第2篇,以及第4篇是需要好好閱讀的,它們是x86與x64架構體系的基石。
第3篇與第5篇旨在幫助讀者擴展視野,它們是讓x86與x64平台變得強大的地方。
x86與x64的章節
在每一個章節里都會有x86與x64體系的相關描述,特別是在第2篇和第3篇。如非明確註明,x86下大多數的特徵在x64下也是適用的。譬如對MSR(Model-Specific Register)的訪問方式在64位執行環境下與x86體系下是一樣的;再譬如對local APIC的編程方式,在x64下與x86下也是一樣的;又譬如對x87 FPU與SSE指令的執行環境,大多數情況下在x64下與x86下是一樣的。
總之,除了第12章明確描述x64內容外,其他章節都會含有x86與x64的描述。
只要您有耐心,它們都是不二之選。
致謝
感謝電子工業出版社博文視點編輯及相關工作人員的辛勤勞動使本書得以出版,感謝譚文先生作序,感謝羅雲彬先生推薦。
鄧志
2012年8月

『叄』 x86/x64體系探索及編程的讀者對象

如果你工作在x86與x64平台上;如果你對x86與x64架構知識有興趣;如果你正在學習x86與x64,或者有一定的基礎,想繼續擴展視野:我想本書是適合你閱讀的。
本書假設你有一定的x86基礎知識,包括:
1)有一些匯編語言的基礎,至少能看懂一些簡單的匯編代碼。
2)有一些x86架構知識,知道x86是什麼。譬如:知道什麼是實模式、保護模式等。
3)最好能有一些寫boot代碼的知識。即使沒有,你也可以參照書中的源代碼例子。
盡管書中例子是使用匯編語言編寫,但即便你的匯編語言基礎不那麼好,閱讀起來也不會感到太困難,因為這些例子的代碼並不像從高級語言反匯編出來的代碼那樣涉及過多的程序結構知識,譬如:
1)你不會面對著stack的各種開棧銷棧處理,因為實驗例子中的過程調用基本上不會使用棧來傳遞參數。
2)你不會面對著各種復雜的程序分支結構和編程技巧,實驗例子都使用很純粹的匯編代碼編寫。
了解一下nasm
如果你對匯編語言掌握比較熟練,你可能需要去了解一下nasm匯編語法,因為本書的所有實驗例子都使用nasm編譯器編譯。別擔心,對一條匯編代碼,nasm的語法和Intel使用的語法是一樣的,但對於操作數定址到內存,則表達形式有一些差異。
nasm與Intel在內存操作數定址的表達上有一些區別,主要有以下兩方面。
1)operand size(操作數尺寸)的指示字。
2)segment override prefix(段改寫前綴)的位置。
在Intel語法上:
mov dword ptr [eax], 1 ; 操作數尺寸使用dword ptr指示字
mov eax, cs:[20100h] ; 段前綴放在[]括弧外
而在nasm語法上則需要變通一下:
mov dword [eax], 1 ; 操作數尺寸指示字去掉ptr字
mov eax, [cs:20100h] ; 段前綴放在[]括弧內
另外,例子中也有使用宏定義,因此也需要注意一下nasm中宏的定義方式,如下所示:
%macro NMI_DISABLE 0 ; 由%macro 開始,參數個數為0
......
%endmacro ; 由%endmacro結束

『肆』 x86/x64體系探索及編程 例子怎麼用

本書是對Intel手冊所述處理器架構的探索和論證。全書共五大部分,從多個方面對處理器架構相關的知識進行了梳理介紹。書中每個章節都有相應的測試實驗,所運行的實驗例子都可以在真實的機器上執行。
通過閱讀本書,讀者應能培養自己動手實驗的能力。如果再有一些OS方面的相關知識,基本上就可以寫出自己簡易的OS核心。
本書適合有一定的x86基礎知識,且對了解處理器架構及編程感興趣的讀者閱讀。

『伍』 x86/x64體系探索及編程的作者介紹

鄧志,1977年生於廣東,在銀行工作十餘年,現自由職業者。對計算機有一股熱情和蠻勁,善於思考,特別喜歡琢磨底層架構。熟悉C語言,並且精通x86/x64平台的匯編語言與機器指令系統,能用匯編寫簡易的OS核心。

『陸』 x86/x64體系探索及編程的本書特色

本書是對Intel手冊所描述的處理器架構進行探索和論證,每個章節都有相應的測試實驗,所運行的實驗例子可以在真實的機器上執行。部分實驗是不能在VMware虛擬機和bochs模擬器上進行的,必須要在真實機器上運行。例如:第3篇的絕大部分內容和第4篇的部分內容。
通過閱讀本書,大約能培養自己動手實驗的能力。由於本書的實例是在祼機(無OS環境)上運行,因此,如果能走完本書的例子,加上一些OS知識的處理,基本上就可以寫出自己簡易的OS核心。
關於x86與x64
本書的另一個特色是無縫地集成了對x86與x64體系的描述。因此,既適合於x86體系,也適合於x64體系。這是因為,x64是在x86的基礎上擴展而來的64位技術,x64體系有x86的全部內容,又增添了全新的long-mode工作模式與64位執行環境。
在現在的技術趨勢下,為什麼還要保留對x86體系的描述?一方面,這能滿足不同的讀者層;另一方面,也是最重要的原因:x64體系並不是一個全新的平台架構,而是基於x86架構擴展而來的。因此對x64的描述絕不能脫離x86架構,x64體系還保留著向下兼容的能力,在long-mode的64位執行環境里,許多情況下仍然可能使用常見的32位編程技術,這主要是因為,在64位執行環境里,盡管default address size(默認地址大小)是64位,然而絕大部分指令的default operand size(默認操作數大小)依然是32位。
從軟體編程的角度上看,Pointer(指針)值是屬於64位的(地址寬度為64位),但是integer與long仍屬於32位(默認的數據寬度為32位),除非明確數據使用64位的long long類型訪問,64位執行環境里指令使用REX prefix(REX擴展操作數前綴)來達到訪問64位的數據寬度。
當然,如果只把它看成一本描述x64體系的書籍,那也是沒問題的!即使是Intel官方的手冊里也是同時在對Intel64與IA-32架構進行描述。

『柒』 x86/x64體系探索及編程的名家推薦

·在學習x86匯編語言的過程中,總會遇到這樣一種情況:基礎的指令和架構已經學完,驅動或者應用也會開發了,但想要再進一步發掘處理器的新增指令集以及新特徵,卻發現參考資料只有Intel的指令手冊,每條指令寥寥數語的說明文字對於了解復雜的新特徵根本是杯水車薪。現在,本書以詳盡的示例帶領讀者探索這部分內容,全面深入地為讀者展現了x86處理器的高級特徵。
羅雲彬
暢銷書《琢石成器——Windows環境下32位匯編語言程序設計》作者
·這本書真正是讓我眼前一亮。到目前為止,這是我見過的對x86處理器介紹得最詳盡又最具實踐指導意義的書。我如果學習的話,一定會選擇這本書。很顯然,在實踐中解決困難,應用所學知識的樂趣,是任何高大全的課程所無法比擬的。如果耐心地將這本書上的內容讀過,將作者提供的例子一一運行過,我相信對x86處理器的知識,必定會瞭然於胸。
譚文
暢銷書《天書夜讀——從匯編語言到Windows 內核編程》
《寒江獨釣——Windows 內核安全編程》作者

『捌』 x86/x64體系探索及編程的介紹

《x86/x64體系探索及編程》是2012年出版的圖書,作者是鄧志。

熱點內容
用gcc編譯16位匯編 發布:2025-02-06 09:06:07 瀏覽:822
什麼低端安卓手機不卡 發布:2025-02-06 09:03:32 瀏覽:13
我的世界伺服器卡領地 發布:2025-02-06 08:50:45 瀏覽:255
我的世界公網ip伺服器 發布:2025-02-06 08:46:28 瀏覽:772
php數組值求和 發布:2025-02-06 08:30:56 瀏覽:819
java類可以作為 發布:2025-02-06 08:28:54 瀏覽:412
sql更改列 發布:2025-02-06 08:22:37 瀏覽:396
創建索引sql 發布:2025-02-06 08:22:29 瀏覽:235
西門子有密碼如何初始化 發布:2025-02-06 08:22:28 瀏覽:594
EV壓縮 發布:2025-02-06 08:21:13 瀏覽:336