PIC淺談--《x86/x64體系探索及程式設計》試讀
看到《x86/x64體系探索及程式設計》這本書的介紹裡提到“基本上就可以寫出自己簡易的OS核心”,突然想起自己大學時候學的是硬體,曾經也嘗試著去用c來寫一個簡單的OS系統。當然,說是系統也算不上,只是當時很流行研究多工搶佔,就學著做一個簡單的多工搶佔的OS。現在想來卻也不記得當時具體是怎麼做的和做成什麼樣的了。
重點看了看試讀章節第二章的部分,恰好也看到了“PIC”這樣一個話題。我在學習的時候也查過,但是關於這部分的資料不太多。網上搜到的PIC相關內容大多是指“PeripheralInterfaceController”,但是在OS程式設計基礎中的PIC指的是PositionIndependentCode,中文叫“位置無關編碼”,試讀章節裡也用一個getstdhadle()的例子來簡單介紹了一下什麼是位置無關編碼,因為這也算是X86基礎知識吧,並沒有太深入的介紹,那我也在這裡用最簡單易懂的方式介紹下我對“位置無關編碼”的理解。
所謂的位置無關編碼。是一種庫檔案的編碼組織方式,其特點是方便系統裝載。我們瞭解這個可以從頭說開,像試讀章節的例子中一樣,最早的時候我們都是用“絕對地址”來連結定位一段程式碼,這樣就會出現一個問題,這個地址是這些程式碼的起始地址,程式碼必須放在這個絕對的位置上才能正常執行,否則當程式碼去訪問、執行某個變數名、函式名對應地址上的程式碼時就會找不到,程式也就跑掛了。這樣用絕對地址去定位的編碼方式我們叫“位置相關編碼”。
有“相關”就有“無關”,有“絕對”就肯定有“相對”。位置無關編碼裡的定位跳轉指令不是一段絕對跳轉指令,而是一段相對跳轉指令,訪問的是一個相對跳轉地址,因此,包括這個語句和main在內的程式碼段無論是否放在它的執行域這段程式碼都能正常執行。這就是所謂的位置無關程式碼。現在我們的編碼方式也已經更多的使用位置無關編碼。
本文摘自ITEYE,ITeye11月技術圖書有獎試讀活動,原文連結如下:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13164110/viewspace-750464/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺談程式設計程式設計
- 淺談程式設計思想程式設計
- 淺談非同步程式設計非同步程式設計
- 淺談Windows API程式設計WindowsAPI程式設計
- 淺談軟體測試
- 淺談程式設計正規化程式設計
- 淺談物件導向程式設計物件程式設計
- 淺談程式設計師創業程式設計師創業
- 淺談設計模式及python實現設計模式Python
- 淺談PHP物件導向程式設計PHP物件程式設計
- 白板程式設計淺談——Why, What, How程式設計
- 淺談如何提高程式設計效率?程式設計
- 淺談PHP程式碼設計結構PHP
- 淺談Javascript物件導向程式設計JavaScript物件程式設計
- 淺談軟體開發中的防禦式程式設計程式設計
- 淺談應用動態體驗設計
- 優惠劵系統庫存設計淺談
- 淺談程式設計師的“內卷化”程式設計師
- SpringBoot 非同步程式設計淺談Spring Boot非同步程式設計
- 淺談軟體測試規範
- iOS探索:Block解析淺談iOSBloC
- 安全管理 | 淺談資訊保安管理體系建設
- 讀《程式設計大師訪談錄》程式設計
- 淺談高可用設計
- 淺談表單設計
- 淺談彈性計算管控可觀測性體系建設
- 【淺談設計模式(三)】讓你一分鐘讀懂設計模式設計模式
- [淺談設計模式(三)] 讓你一分鐘讀懂設計模式設計模式
- 【淺談設計模式(二)】讓你一分鐘讀懂設計模式設計模式
- [淺談設計模式(二)] 讓你一分鐘讀懂設計模式設計模式
- [淺談設計模式(一)] 讓你一分鐘讀懂設計模式設計模式
- Babel知識體系淺談Babel
- 淺談程式設計師職業生涯規劃程式設計師
- C#非同步程式設計之淺談TaskC#非同步程式設計
- 淺談程式設計師的英語學習程式設計師
- 淺談Swift網路程式設計最佳實踐Swift程式設計
- 淺談程式設計師的數學修養程式設計師
- 淺談閱讀