CS:APP 學習筆記

CS:APP 全名為 Computer Systems: A Programmer’s Perspective,是 CMU 計算機概論課程的教材。
根據 jserv 老師的說法,這們課等同台灣研究所課程的難度,希望大家認真讀這本教材後,能夠有國外頂尖大學大二學生的程度。隨著電腦科技發展日新月異,最基礎的學科仍舊是所有新技術的根基,與其不斷追求新技術,不如好好打穩根基,因此決定研讀這本教科書,搭配 CMU 的課程講義與影片,還有 jserv 老師的補充資料一同學習,期許自己能夠對資訊科技有扎實的基礎。

共筆連結

我將筆記寫於 hackmd ,方便所有朋友發現任何錯誤都可以直接修正,我也同步把筆記發表於 CS:APP Taiwan study group ,歡迎一起來讀書討論!

CH2 Presentation and Maipulating Information

(推薦必讀,對於程式碼會有更深刻的認知!)
共筆連結

CH3 Machine-level Representation of Programs

共筆連結

CH7 Linking

共筆連結

參考資料

  1. CS:APP 學習指引緒論
  2. CMU 15-213

CS:APP Ch7 Linking 學習筆記

更新版修改於 https://hackmd.io/@haogroot/cs-app_ch7

為什麼要學習 Linking

  • 理解 linker 幫助你建構大型程式
    • 大型程式會包含許多 libraries ,了解如何 linking 可以幫助你處理棘手的編譯錯誤。
  • 理解 linker 可以避免寫程式上犯下難以抓出的錯誤
    • linker 執行 symbol resolution 所做的決定將大大的影響程式執行。
  • 理解 linking 幫助你理解 scope 的概念
    • global 跟 local variable 之間的差別
    • static 的作用
  • 理解 linking 幫助你理解重要的系統概念
  • 理解 linking 讓你更理解如何使用 shared library
  • 我個人在工作上常常遇到 Linker 報出的錯誤,深感完全不理解其背後的運作原理,所以決定將這張拿出來好好學習。

閱讀全文〈CS:APP Ch7 Linking 學習筆記〉