官术网_书友最值得收藏!

1.3.1 計算機架構

一般來說,我們認為普通程序員不需要深入了解計算機的工作原理。當用過程式語言編寫程序時,操作系統會處理所有的低級操作。程序顯示為一個進程,該進程在需要處理器、內存和文件系統時隨時可以訪問它們。進程似乎有自己連續的內存空間,文件只是一系列可讀寫的字節。

然而,實際上這些都不是真的,操作系統一直在為你抽象這些真實情況(以便使編程更簡單)。深入理解計算機架構實際運作方式對于逆向工程師來說至關重要。圖1.3展示了構成計算機的主要組件,包括中央處理器、橋接器、內存和外設。

圖1.3 計算機架構

1.中央處理器

中央處理器(Central Processing Unit,CPU)是計算機進行處理的地方。CPU內部包含以下組件:

? 算術邏輯單元(Arithmetic Logic Unit,ALU):ALU負責在計算機中執行數學運算,比如加法和乘法。

? 寄存器:寄存器負責進行臨時數據存儲,并被用作x86指令的主要輸入和輸出。寄存器提供對單字數據的極速訪問,并通常通過名稱進行訪問。

? 控制單元:控制單元負責執行代碼。這包括讀取指令和協調計算機內其他元件的操作。

2.橋接器和外設

CPU通過系統總線(bus)連接到橋接器(bridge)。橋接器的主要目的是將CPU與系統的其他組件(包括內存和I/O總線)連接起來,I/O總線是外設(如鍵盤、鼠標和揚聲器)與系統相連接的地方。當信息在總線上流動時,橋接器負責控制這種信息流并確保流入一個總線的流量被正確地路由到適當的總線上。

外設通過I/O總線連接,使得計算機能夠與外部世界進行通信。這包括從顯卡、鍵盤、鼠標、揚聲器和其他系統發送和接收數據。

3.內存和寄存器

顧名思義,內存是計算機上存儲數據的地方。數據以線性字節序列的形式存儲,可以通過它們的地址訪問。這種設計允許系統對存儲的數據以相對較快的速度進行訪問。

當程序想要訪問內存中的數據時,CPU會通過總線發送一個請求給橋接器,然后橋接器會將這個請求轉發給內存,在那里,指定地址的數據會被訪問。然后,請求的數據需要沿著原路返回到CPU,才能被程序使用。相比之下,寄存器位于CPU內部,這使得它更易于訪問。

寄存器是位于CPU內部的存儲設備,不同于內存,它并不是線性字節序列。寄存器有特定的名稱,并與每個寄存器有一定的大小關聯。

寄存器和內存有同樣的功能:它們都用來存儲數據。然而,它們各有所長(就質量和數量而言)。寄存器數量稀少且昂貴,但數據訪問速度極快。內存便宜且大量存在,但訪問速度較慢。

程序關聯的大部分數據(包括代碼本身和其數據)將存儲在內存中。在程序運行期間,會將小塊的數據復制到寄存器進行處理。

主站蜘蛛池模板: 凤凰县| 威信县| 望城县| 红原县| 进贤县| 新密市| 精河县| 杨浦区| 千阳县| 新巴尔虎左旗| 香格里拉县| 靖安县| 天柱县| 奎屯市| 平泉县| 东丰县| 南康市| 马龙县| 吴堡县| 洪洞县| 疏勒县| 会东县| 苏尼特右旗| 山东省| 连平县| 锡林浩特市| 贵阳市| 措勤县| 阳信县| 炉霍县| 清远市| 福泉市| 独山县| 垫江县| 于都县| 波密县| 舒城县| 西安市| 宁波市| 镇雄县| 乌什县|