電腦系統:深入理解電腦系統--第三章摘抄

來源:互聯網
上載者:User

參考材料:深入理解電腦系統(第3章)

1. (3.2.1)電腦machine-level programming重要的兩類抽象:

一個重要抽象,是將format and behavior of a machine-level program抽象形成instruction set architecture,即ISA(指令集體繫結構)

對於ISA,要有以下基本觀念:IA32的ISA和x86-64的ISA,以及其他大多數ISA,在抽象時都將指令按順序執行抽象。但是處理器的硬體可以並發地執行許多指令,並且採用了一些safeguards來確保並存執行之後的結果和一條一條順序執行的結果一樣。

第二個重要抽象,是將整個電腦中的memory system用虛擬位址來抽象,使得memory system就好像一個“連續”的位元組塊。要有的基本觀念是,這個抽象對應的實際電腦basis是一些分離的hardware memories,和operating system software(?)

2.(3.2.1)

作業系統負責管理虛擬位址空間,將虛擬位址翻譯成實際processor memory中的物理地址

3.(3.2.2)

當一個源檔案產生了'.o'的目標二進位檔案後,無法直接查看。

但是還是有個查看目標代碼檔案內容的方法,就是對'.o'目標檔案使用反組譯碼器(disassembler)。它的輸出還是二進位檔案,但是,反組譯碼器將這些二進位按照指令進行了分段。讓我們知道哪一段是一個指令(格式上與彙編器產生的彙編檔案一樣,分行的)

關於ISA的指令(以IA32為例),我們要有以下基本觀念:都是和編碼中的基本思想相關

一是,ISA中每條指令佔用位元組數不等,常用的指令所需的位元組數少,不太常用的指令的位元組數多--》這樣的話,相對於每條指令佔用等長位元組數的ISA,這種佔用位元組數不等的ISA為程式產生的總空間要更少。

二是,ISA中的指令在設計時,達到了一個效果,對於一個二進位指令串,從某個位元組開始,解碼的結果是唯一的,這是達到了編碼理論中“唯一可譯性”的要求。(如何為指令設計編碼可以達到“唯一可譯性”呢?可以看薑丹老師的《資訊理論》)。

(我想。大概正是反組譯碼器正是利用了唯一可譯性,從而將一串指令位元組序列分割開來的。)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.