SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
作者:陳鍾誠
旗標出版社
系統程式
(為何撰寫此書)
系統程式 - 舊約聖經
 25 年來,大部分的「系統程式」教科書都是採用
Beck 的 “System Software: An Introduction to
Systems Programming,” 一書,這本書可以說是系
統程式課程的聖經。
 該書由於以貝殼為封面,作者又是 Beck,因此被
簡稱為貝殼書。
 簡單,理論清楚
貝殼書
 目前最常被採用的教科書是俗稱貝殼書的
 System Software An Introduction to System
Programming 3rd, Leland L. Beck, Addison Wesley.
台北圖書代理.
 系統程式 第三版, 文京圖書有限公司, 艾迪生維斯理
出版社.
貝殼書為何成為聖經
 優點:簡單,理論清楚
 沒有競爭對手
 理論類書籍 – 大部分是考試用書
 考試用書:翟高壽 (新文京)、林建福 (儒林)
 教科書:許明壽 (松崗),林煙桂 - 使用 Turbo C
 寫得不夠好,而且已過時
 實作類書籍 – 不適合作為教科書
 系統程式實作 - 林邦傑 (林煙桂應該就是林邦傑)
 DOS 系統程式設計 -- (1980 – 1990) 台灣以施威銘先生最具代表性
 Linux 系統程式設計 – 很多 (Jollen 陳俊宏, …., 邱毅凌, Jserv, …)
 Windows 系統程式設計 – 也不少
貝殼書的章節架構
 第一章 背 景
 第二章 組譯器
 第三章 載入器和連結器
 第四章 巨集處理器
 第五章 編譯器
 第六章 作業系統
 第七章 其他系統軟體
 第八章 軟體工程導論
 附錄A SIC/XE 指令集與位址模式
 附錄B ASCⅡ字元碼
 附錄C SIC/XE 參考資訊
本書與貝殼書的章節比較
 第 1 章 系統軟體
 第 2 章 電腦的硬體結構
 第 3 章 組合語言
 第 4 章 組譯器
 第 5 章 連結與載入
 第 6 章 巨集處理器
 第 7 章 高階語言
 第 8 章 編譯器
 第 9 章 虛擬機器
 第 10 章 作業系統
 第 11 章 嵌入式系統
 第 12 章 系統軟體實作
 附錄 A CPU0 處理器
 附錄 B C0 語言的語法
 附錄 C GNU 開發工具
 附錄 D Dev C++ 開發環境
 附錄 E Cygwin 開發環境
 第一章 背 景
 第二章 組譯器
 第三章 載入器和連結器
 第四章 巨集處理器
 第五章 編譯器
 第六章 作業系統
 第七章 其他系統軟體 (資料庫)
 第八章 軟體工程導論
 附錄A SIC/XE 指令集
 附錄B ASCⅡ字元碼
 附錄C SIC/XE 參考資訊
貝殼書的優缺點
 優點
 簡單
 使用 SIC/XE 簡化處理器,避開了實際處理器的複雜性
 理論清楚
 以 SIC/XE 貫穿整本書,清楚的闡述了組譯、連結、載入、編譯等主
題。
 缺點
 沒有使用 C 語言 (Beck 先生熟悉的是 Pascal)
 沒有實作系統軟體
 通常撰寫SIC組譯器是這門課學生的作業
 作者曾經提供 Pascal 寫的 SIC 組譯器,但很少人用了 (因為 Pascal)
 沒有操作實務
 貝殼書只有理論。
貝殼書為何能風行 25 年? (1)
 25 年前
 硬體環境:80286, 8051, …
 作業系統:DOS 時代
 程式環境:使用 Turbo Pascal,Turbo C,….
 程式語言:Pascal, C, …
 現在
 硬體環境:IA32, ARM, MIPS, …
 作業系統:Windows, Linux, Android, OS X, …
 程式環境:Visual Studio, Eclipse, Dev C++, GNU, …
 程式語言:C, C++, C#, Java, Obj C, Python, ….
貝殼書為何能風行 25 年? (2)
DOS
int 中斷
貝殼書
理論
SIC/XE
Turbo Pascal
Turbo C
硬體環境:80286、8051, …
Windows
Linux
Android
JVM
Virtual PC
VM Ware
貝殼書
理論
SIC/XE
C
C++
Java
C#
Obj C
Python
硬體環境:IA32, IA64, ARM, MIPS, …
1988 年 2010 年
一個迷惘了 20 年的資訊系學生
 1989 年
 我在交通大學唸書時,老師就是使用這本書作為教材,當時對
這門課似懂非懂,雖然我很認真的在課堂上寫出一個 SIC 機器
的組譯器,但是仍然認為這門課與產業實務無關,我未來應該
用不到它。
 2002 年
 進入產業界之後,我才發現原來「系統程式」並不是一種理論
,而是整個台灣電子資訊產業的核心。整整經過 20 年,我才恍
然發現這門課的用途。環顧台灣的電子資訊產業,亟需要大量
的系統程式人才,但是 Beck 的書籍所提供的內容,無法讓學
生認識到這個情況,因為只有理論而沒有實務。
本書的環境基礎
執行環境:
Windows
Linux
Android
JVM
Virtual PC
VM Ware
本書:旗標 陳鍾誠
理論:CPU0, C0
語言:C
實務:GNU/Dev C++
平台:Linux, Virtual PC
實作:as0, vm0, c0c
程式語言:
C
C++
Java
C#
Python
開發環境:
Visual Studio,
Eclipse,
Dev C++,
硬體環境:IA32, IA64, ARM, MIPS, …
CPU0 是 ARM 的精簡版
C
GNU
Dev C++
撰寫本書的原因
 核心原因:
 「系統程式」並不只是一種理論
本書的特色 (重點所在)
 理論:採用簡化的處理器
 承襲貝殼書的方法,但將 SIC/XE 改為更接近 ARM 的 CPU0
 語言:以 C 語言為核心
 C 語言在「系統程式、嵌入式系統、作業系統」上極為重要
 清楚說明 C 語言與組合語言的連結方式
 實作:採用 C 語言實作系統軟體
 實作組譯器 (as0)、虛擬機 (vm0)、編譯器 (c0c)
 實務案例:結合今日的工具與環境
 以 GNU 工具為主:gcc, as, ld, make, objdump, …
 使用學生最常用的工具 Dev C++
 結合 Linux 作業系統與 Virtual PC 虛擬機
本書與其他課程的關係
程式設計
(C, Dev C++)
系統程式
(C, Dev C++)
(GNU gcc, make)
(Linux)
(c0c, as0, vm0)
(CPU0)
作業系統
作業系統實務
(Linux)
嵌入式系統
(GNU, gcc, make)
(ARM)
CPU0  ARM
編譯器
(gcc)
c0c, gcc
虛擬機
vm0程式設計
(C#, Java)
本書的網站
 網址:
 http://sp1.wikidot.com/
 內容
 投影片下載
 程式碼下載
 大量的補充教材,隨時新增與修改
 微軟組合語言
 微軟開發工具: Visual Studio, ML, CL, LINK, …
 Linux 作業系統:行程切換、Thread、
 理論補充:Thread、競爭情況、死結、號誌 (以 C# 示範)
 產業訊息:Android, QEMU, 嵌入式裝置, …
未來
 程式、程式、程式
 重新打造輪子
 已有:編譯器 (c0c)、組譯器 (as0)、虛擬機 (vm0)
 目前:
 作業系統: os0 – 以 cpu0 的組合語言寫成
 未來
 處理器:cpu0 – 以 VHDL 實作,在 Altera FPGA 板上設計運
行,使用 Quartus II 模擬
 KISS: Keep it Simple and Stupid
出版計劃
 用程式打造自己的電腦 – 從軟體到硬體
 編譯器 c0c (使用 c 語言)
 組譯器 as0 (使用 c 語言)
 虛擬機 vm0 (使用 c 語言)
 作業系統 os0 : 使用 c0 語言 + cpu0 的組合語言
 CPU0 : (使用 VHDL 語言)
 開發時使用 Altera Quartus II 進行模擬
 完成後使用 Altera FPGA 板進行燒錄測試
後記 (1)
 直到我接受彥發兄的邀請,開始撰寫此書之後,我
突然明白了一件事
 問題:
 為何沒有人願意寫一本全新的系統程式教科書
 答案:
 這個主題真的是太廣大、太複雜了,要懂得東西很多,又超
級難寫。
後記 (2)
 修正完本書交稿給昕暐兄之後,我就住院了
 感謝昕暐與彥發兄特別到醫院看我
 看來我被系統程式難倒了,難到頭都暈了

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

系統程式 -- 第 11 章
系統程式 -- 第 11 章系統程式 -- 第 11 章
系統程式 -- 第 11 章
 
系統程式 -- 第 4 章
系統程式 -- 第 4 章系統程式 -- 第 4 章
系統程式 -- 第 4 章
 
系統程式 -- 前言
系統程式 -- 前言系統程式 -- 前言
系統程式 -- 前言
 
系統程式 -- 第 4 章 組譯器
系統程式 -- 第 4 章 組譯器系統程式 -- 第 4 章 組譯器
系統程式 -- 第 4 章 組譯器
 
系統程式 -- 第 10 章
系統程式 -- 第 10 章系統程式 -- 第 10 章
系統程式 -- 第 10 章
 
系統程式 -- 第 5 章 連結與載入
系統程式 -- 第 5 章 連結與載入系統程式 -- 第 5 章 連結與載入
系統程式 -- 第 5 章 連結與載入
 
系統程式 -- 第 0 章
系統程式 -- 第 0 章系統程式 -- 第 0 章
系統程式 -- 第 0 章
 
系統程式 -- 第 7 章
系統程式 -- 第 7 章系統程式 -- 第 7 章
系統程式 -- 第 7 章
 
系統程式 -- 第 7 章 高階語言
系統程式 -- 第 7 章 高階語言系統程式 -- 第 7 章 高階語言
系統程式 -- 第 7 章 高階語言
 
系統程式 - 第二章
系統程式 - 第二章系統程式 - 第二章
系統程式 - 第二章
 
系統程式 -- 附錄
系統程式 -- 附錄系統程式 -- 附錄
系統程式 -- 附錄
 
系統程式 -- 第 10 章 作業系統
系統程式 -- 第 10 章 作業系統系統程式 -- 第 10 章 作業系統
系統程式 -- 第 10 章 作業系統
 
系統程式 -- 第 3 章
系統程式 -- 第 3 章系統程式 -- 第 3 章
系統程式 -- 第 3 章
 
系統程式 -- 第 5 章
系統程式 -- 第 5 章系統程式 -- 第 5 章
系統程式 -- 第 5 章
 
系統程式 -- 第 6 章 巨集處理器
系統程式 -- 第 6 章 巨集處理器系統程式 -- 第 6 章 巨集處理器
系統程式 -- 第 6 章 巨集處理器
 
系統程式 -- 第 12 章
系統程式 -- 第 12 章系統程式 -- 第 12 章
系統程式 -- 第 12 章
 
系統程式 -- 第 11 章 嵌入式系統
系統程式 -- 第 11 章 嵌入式系統系統程式 -- 第 11 章 嵌入式系統
系統程式 -- 第 11 章 嵌入式系統
 
系統程式 -- 第 9 章 虛擬機器
系統程式 -- 第 9 章 虛擬機器系統程式 -- 第 9 章 虛擬機器
系統程式 -- 第 9 章 虛擬機器
 
用十分鐘搞懂《離散數學》
用十分鐘搞懂《離散數學》用十分鐘搞懂《離散數學》
用十分鐘搞懂《離散數學》
 
Chapter2
Chapter2  Chapter2
Chapter2
 

Andere mochten auch

用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!
鍾誠 陳鍾誠
 
用十分鐘開始理解深度學習技術 (從 dnn.js 專案出發)
用十分鐘開始理解深度學習技術  (從 dnn.js 專案出發)用十分鐘開始理解深度學習技術  (從 dnn.js 專案出發)
用十分鐘開始理解深度學習技術 (從 dnn.js 專案出發)
鍾誠 陳鍾誠
 
人造交談語言 (使用有BNF的口語透過機器翻譯和外國人溝通)
人造交談語言  (使用有BNF的口語透過機器翻譯和外國人溝通)人造交談語言  (使用有BNF的口語透過機器翻譯和外國人溝通)
人造交談語言 (使用有BNF的口語透過機器翻譯和外國人溝通)
鍾誠 陳鍾誠
 

Andere mochten auch (20)

用十分鐘搞懂 《資管、資工、電子、電機、機械》 這些科系到底在學些甚麼?
用十分鐘搞懂  《資管、資工、電子、電機、機械》  這些科系到底在學些甚麼?用十分鐘搞懂  《資管、資工、電子、電機、機械》  這些科系到底在學些甚麼?
用十分鐘搞懂 《資管、資工、電子、電機、機械》 這些科系到底在學些甚麼?
 
用十分鐘 學會《資料結構、演算法和計算理論》
用十分鐘  學會《資料結構、演算法和計算理論》用十分鐘  學會《資料結構、演算法和計算理論》
用十分鐘 學會《資料結構、演算法和計算理論》
 
十分鐘讓程式人搞懂雲端平台與技術
十分鐘讓程式人搞懂雲端平台與技術十分鐘讓程式人搞懂雲端平台與技術
十分鐘讓程式人搞懂雲端平台與技術
 
《計算機結構與作業系統裏》-- 資工系學生們經常搞錯的那些事兒!
《計算機結構與作業系統裏》--  資工系學生們經常搞錯的那些事兒!《計算機結構與作業系統裏》--  資工系學生們經常搞錯的那些事兒!
《計算機結構與作業系統裏》-- 資工系學生們經常搞錯的那些事兒!
 
用十分鐘決定要不要念大學《資訊工程系》
用十分鐘決定要不要念大學《資訊工程系》用十分鐘決定要不要念大學《資訊工程系》
用十分鐘決定要不要念大學《資訊工程系》
 
用十分鐘將你的網站送上雲端
用十分鐘將你的網站送上雲端用十分鐘將你的網站送上雲端
用十分鐘將你的網站送上雲端
 
如何用十分鐘快速瞭解一個程式語言 《以JavaScript和C語言為例》
如何用十分鐘快速瞭解一個程式語言  《以JavaScript和C語言為例》如何用十分鐘快速瞭解一個程式語言  《以JavaScript和C語言為例》
如何用十分鐘快速瞭解一個程式語言 《以JavaScript和C語言為例》
 
用十分鐘學會 《微積分、工程數學》及其應用
用十分鐘學會  《微積分、工程數學》及其應用用十分鐘學會  《微積分、工程數學》及其應用
用十分鐘學會 《微積分、工程數學》及其應用
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!
 
用十分鐘開始理解深度學習技術 (從 dnn.js 專案出發)
用十分鐘開始理解深度學習技術  (從 dnn.js 專案出發)用十分鐘開始理解深度學習技術  (從 dnn.js 專案出發)
用十分鐘開始理解深度學習技術 (從 dnn.js 專案出發)
 
人造交談語言 (使用有BNF的口語透過機器翻譯和外國人溝通)
人造交談語言  (使用有BNF的口語透過機器翻譯和外國人溝通)人造交談語言  (使用有BNF的口語透過機器翻譯和外國人溝通)
人造交談語言 (使用有BNF的口語透過機器翻譯和外國人溝通)
 
怎樣才算是一個合格的資工系畢業生
怎樣才算是一個合格的資工系畢業生怎樣才算是一個合格的資工系畢業生
怎樣才算是一個合格的資工系畢業生
 
系統程式 -- 附錄
系統程式 -- 附錄系統程式 -- 附錄
系統程式 -- 附錄
 
適合資工系畢業生的 一百零一種工作
適合資工系畢業生的  一百零一種工作適合資工系畢業生的  一百零一種工作
適合資工系畢業生的 一百零一種工作
 
用20分鐘搞懂 《系統分析、軟體工程、專案管理與設計模式》
用20分鐘搞懂   《系統分析、軟體工程、專案管理與設計模式》用20分鐘搞懂   《系統分析、軟體工程、專案管理與設計模式》
用20分鐘搞懂 《系統分析、軟體工程、專案管理與設計模式》
 
用十分鐘《讓你的專案一開始就搞砸》!
用十分鐘《讓你的專案一開始就搞砸》!用十分鐘《讓你的專案一開始就搞砸》!
用十分鐘《讓你的專案一開始就搞砸》!
 
用十分鐘理解 《神經網路發展史》
用十分鐘理解 《神經網路發展史》用十分鐘理解 《神經網路發展史》
用十分鐘理解 《神經網路發展史》
 
假如我是個大學資工系畢業生
假如我是個大學資工系畢業生假如我是個大學資工系畢業生
假如我是個大學資工系畢業生
 
用十分鐘瞭解JavaScript的模組 -- 《還有關於npm套件管理的那些事情》
用十分鐘瞭解JavaScript的模組 -- 《還有關於npm套件管理的那些事情》用十分鐘瞭解JavaScript的模組 -- 《還有關於npm套件管理的那些事情》
用十分鐘瞭解JavaScript的模組 -- 《還有關於npm套件管理的那些事情》
 
寫給資工系畢業生的工作面試指南
寫給資工系畢業生的工作面試指南寫給資工系畢業生的工作面試指南
寫給資工系畢業生的工作面試指南
 

Ähnlich wie 系統程式 -- 為何撰寫此書 (6)

程式人雜誌 -- 2013年3月號
程式人雜誌 -- 2013年3月號程式人雜誌 -- 2013年3月號
程式人雜誌 -- 2013年3月號
 
工作站教學
工作站教學工作站教學
工作站教學
 
程式人雜誌 -- 2013年2月號
程式人雜誌 -- 2013年2月號程式人雜誌 -- 2013年2月號
程式人雜誌 -- 2013年2月號
 
Linux软件工程师
Linux软件工程师Linux软件工程师
Linux软件工程师
 
Revise the Historical Development about C/UNIX
Revise the Historical Development about C/UNIXRevise the Historical Development about C/UNIX
Revise the Historical Development about C/UNIX
 
Jni文档
Jni文档Jni文档
Jni文档
 

Mehr von 鍾誠 陳鍾誠

西洋史 (你或許不知道但卻影響現代教育的那些事)
西洋史  (你或許不知道但卻影響現代教育的那些事)西洋史  (你或許不知道但卻影響現代教育的那些事)
西洋史 (你或許不知道但卻影響現代教育的那些事)
鍾誠 陳鍾誠
 

Mehr von 鍾誠 陳鍾誠 (18)

用十分鐘瞭解 新竹科學園區的發展史
用十分鐘瞭解  新竹科學園區的發展史用十分鐘瞭解  新竹科學園區的發展史
用十分鐘瞭解 新竹科學園區的發展史
 
用十分鐘搞懂 λ-Calculus
用十分鐘搞懂 λ-Calculus用十分鐘搞懂 λ-Calculus
用十分鐘搞懂 λ-Calculus
 
交⼤資訊⼯程學系備審資料 ⾱詠祥
交⼤資訊⼯程學系備審資料 ⾱詠祥交⼤資訊⼯程學系備審資料 ⾱詠祥
交⼤資訊⼯程學系備審資料 ⾱詠祥
 
smallpt: Global Illumination in 99 lines of C++
smallpt:  Global Illumination in 99 lines of C++smallpt:  Global Illumination in 99 lines of C++
smallpt: Global Illumination in 99 lines of C++
 
西洋史 (你或許不知道但卻影響現代教育的那些事)
西洋史  (你或許不知道但卻影響現代教育的那些事)西洋史  (你或許不知道但卻影響現代教育的那些事)
西洋史 (你或許不知道但卻影響現代教育的那些事)
 
區塊鏈 (比特幣背後的關鍵技術) -- 十分鐘系列
區塊鏈  (比特幣背後的關鍵技術)   -- 十分鐘系列區塊鏈  (比特幣背後的關鍵技術)   -- 十分鐘系列
區塊鏈 (比特幣背後的關鍵技術) -- 十分鐘系列
 
區塊鏈 (比特幣背後的關鍵技術) -- 十分鐘系列
區塊鏈  (比特幣背後的關鍵技術)   -- 十分鐘系列區塊鏈  (比特幣背後的關鍵技術)   -- 十分鐘系列
區塊鏈 (比特幣背後的關鍵技術) -- 十分鐘系列
 
梯度下降法 (隱藏在深度學習背後的演算法) -- 十分鐘系列
梯度下降法  (隱藏在深度學習背後的演算法) -- 十分鐘系列梯度下降法  (隱藏在深度學習背後的演算法) -- 十分鐘系列
梯度下降法 (隱藏在深度學習背後的演算法) -- 十分鐘系列
 
用十分鐘理解 《微分方程》
用十分鐘理解  《微分方程》用十分鐘理解  《微分方程》
用十分鐘理解 《微分方程》
 
系統程式 -- 第 12 章 系統軟體實作
系統程式 -- 第 12 章 系統軟體實作系統程式 -- 第 12 章 系統軟體實作
系統程式 -- 第 12 章 系統軟體實作
 
系統程式 -- 第 8 章 編譯器
系統程式 -- 第 8 章 編譯器系統程式 -- 第 8 章 編譯器
系統程式 -- 第 8 章 編譯器
 
nand2tetris 舊版投影片 -- 第五章 計算機結構
nand2tetris 舊版投影片 -- 第五章 計算機結構nand2tetris 舊版投影片 -- 第五章 計算機結構
nand2tetris 舊版投影片 -- 第五章 計算機結構
 
nand2tetris 舊版投影片 -- 第四章 機器語言
nand2tetris 舊版投影片 -- 第四章 機器語言nand2tetris 舊版投影片 -- 第四章 機器語言
nand2tetris 舊版投影片 -- 第四章 機器語言
 
nand2tetris 舊版投影片 -- 第三章 循序邏輯
nand2tetris 舊版投影片 -- 第三章 循序邏輯nand2tetris 舊版投影片 -- 第三章 循序邏輯
nand2tetris 舊版投影片 -- 第三章 循序邏輯
 
nand2tetris 舊版投影片 -- 第二章 布林算術
nand2tetris 舊版投影片 -- 第二章 布林算術nand2tetris 舊版投影片 -- 第二章 布林算術
nand2tetris 舊版投影片 -- 第二章 布林算術
 
nand2tetris 舊版投影片 -- 第一章 布林邏輯
nand2tetris 舊版投影片 -- 第一章 布林邏輯nand2tetris 舊版投影片 -- 第一章 布林邏輯
nand2tetris 舊版投影片 -- 第一章 布林邏輯
 
Boolean arithmetic
Boolean arithmeticBoolean arithmetic
Boolean arithmetic
 
Introduction
IntroductionIntroduction
Introduction
 

Kürzlich hochgeladen

1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
PUAXINYEEMoe
 
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
PUAXINYEEMoe
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
michaelell902
 

Kürzlich hochgeladen (9)

1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
 
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade SixMath Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
 
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
 
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
 
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdftaibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
 
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
 
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdftaibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
 

系統程式 -- 為何撰寫此書

  • 2. 系統程式 - 舊約聖經  25 年來,大部分的「系統程式」教科書都是採用 Beck 的 “System Software: An Introduction to Systems Programming,” 一書,這本書可以說是系 統程式課程的聖經。  該書由於以貝殼為封面,作者又是 Beck,因此被 簡稱為貝殼書。  簡單,理論清楚
  • 3. 貝殼書  目前最常被採用的教科書是俗稱貝殼書的  System Software An Introduction to System Programming 3rd, Leland L. Beck, Addison Wesley. 台北圖書代理.  系統程式 第三版, 文京圖書有限公司, 艾迪生維斯理 出版社.
  • 4. 貝殼書為何成為聖經  優點:簡單,理論清楚  沒有競爭對手  理論類書籍 – 大部分是考試用書  考試用書:翟高壽 (新文京)、林建福 (儒林)  教科書:許明壽 (松崗),林煙桂 - 使用 Turbo C  寫得不夠好,而且已過時  實作類書籍 – 不適合作為教科書  系統程式實作 - 林邦傑 (林煙桂應該就是林邦傑)  DOS 系統程式設計 -- (1980 – 1990) 台灣以施威銘先生最具代表性  Linux 系統程式設計 – 很多 (Jollen 陳俊宏, …., 邱毅凌, Jserv, …)  Windows 系統程式設計 – 也不少
  • 5. 貝殼書的章節架構  第一章 背 景  第二章 組譯器  第三章 載入器和連結器  第四章 巨集處理器  第五章 編譯器  第六章 作業系統  第七章 其他系統軟體  第八章 軟體工程導論  附錄A SIC/XE 指令集與位址模式  附錄B ASCⅡ字元碼  附錄C SIC/XE 參考資訊
  • 6. 本書與貝殼書的章節比較  第 1 章 系統軟體  第 2 章 電腦的硬體結構  第 3 章 組合語言  第 4 章 組譯器  第 5 章 連結與載入  第 6 章 巨集處理器  第 7 章 高階語言  第 8 章 編譯器  第 9 章 虛擬機器  第 10 章 作業系統  第 11 章 嵌入式系統  第 12 章 系統軟體實作  附錄 A CPU0 處理器  附錄 B C0 語言的語法  附錄 C GNU 開發工具  附錄 D Dev C++ 開發環境  附錄 E Cygwin 開發環境  第一章 背 景  第二章 組譯器  第三章 載入器和連結器  第四章 巨集處理器  第五章 編譯器  第六章 作業系統  第七章 其他系統軟體 (資料庫)  第八章 軟體工程導論  附錄A SIC/XE 指令集  附錄B ASCⅡ字元碼  附錄C SIC/XE 參考資訊
  • 7. 貝殼書的優缺點  優點  簡單  使用 SIC/XE 簡化處理器,避開了實際處理器的複雜性  理論清楚  以 SIC/XE 貫穿整本書,清楚的闡述了組譯、連結、載入、編譯等主 題。  缺點  沒有使用 C 語言 (Beck 先生熟悉的是 Pascal)  沒有實作系統軟體  通常撰寫SIC組譯器是這門課學生的作業  作者曾經提供 Pascal 寫的 SIC 組譯器,但很少人用了 (因為 Pascal)  沒有操作實務  貝殼書只有理論。
  • 8. 貝殼書為何能風行 25 年? (1)  25 年前  硬體環境:80286, 8051, …  作業系統:DOS 時代  程式環境:使用 Turbo Pascal,Turbo C,….  程式語言:Pascal, C, …  現在  硬體環境:IA32, ARM, MIPS, …  作業系統:Windows, Linux, Android, OS X, …  程式環境:Visual Studio, Eclipse, Dev C++, GNU, …  程式語言:C, C++, C#, Java, Obj C, Python, ….
  • 9. 貝殼書為何能風行 25 年? (2) DOS int 中斷 貝殼書 理論 SIC/XE Turbo Pascal Turbo C 硬體環境:80286、8051, … Windows Linux Android JVM Virtual PC VM Ware 貝殼書 理論 SIC/XE C C++ Java C# Obj C Python 硬體環境:IA32, IA64, ARM, MIPS, … 1988 年 2010 年
  • 10. 一個迷惘了 20 年的資訊系學生  1989 年  我在交通大學唸書時,老師就是使用這本書作為教材,當時對 這門課似懂非懂,雖然我很認真的在課堂上寫出一個 SIC 機器 的組譯器,但是仍然認為這門課與產業實務無關,我未來應該 用不到它。  2002 年  進入產業界之後,我才發現原來「系統程式」並不是一種理論 ,而是整個台灣電子資訊產業的核心。整整經過 20 年,我才恍 然發現這門課的用途。環顧台灣的電子資訊產業,亟需要大量 的系統程式人才,但是 Beck 的書籍所提供的內容,無法讓學 生認識到這個情況,因為只有理論而沒有實務。
  • 11. 本書的環境基礎 執行環境: Windows Linux Android JVM Virtual PC VM Ware 本書:旗標 陳鍾誠 理論:CPU0, C0 語言:C 實務:GNU/Dev C++ 平台:Linux, Virtual PC 實作:as0, vm0, c0c 程式語言: C C++ Java C# Python 開發環境: Visual Studio, Eclipse, Dev C++, 硬體環境:IA32, IA64, ARM, MIPS, … CPU0 是 ARM 的精簡版 C GNU Dev C++
  • 13. 本書的特色 (重點所在)  理論:採用簡化的處理器  承襲貝殼書的方法,但將 SIC/XE 改為更接近 ARM 的 CPU0  語言:以 C 語言為核心  C 語言在「系統程式、嵌入式系統、作業系統」上極為重要  清楚說明 C 語言與組合語言的連結方式  實作:採用 C 語言實作系統軟體  實作組譯器 (as0)、虛擬機 (vm0)、編譯器 (c0c)  實務案例:結合今日的工具與環境  以 GNU 工具為主:gcc, as, ld, make, objdump, …  使用學生最常用的工具 Dev C++  結合 Linux 作業系統與 Virtual PC 虛擬機
  • 14. 本書與其他課程的關係 程式設計 (C, Dev C++) 系統程式 (C, Dev C++) (GNU gcc, make) (Linux) (c0c, as0, vm0) (CPU0) 作業系統 作業系統實務 (Linux) 嵌入式系統 (GNU, gcc, make) (ARM) CPU0  ARM 編譯器 (gcc) c0c, gcc 虛擬機 vm0程式設計 (C#, Java)
  • 15. 本書的網站  網址:  http://sp1.wikidot.com/  內容  投影片下載  程式碼下載  大量的補充教材,隨時新增與修改  微軟組合語言  微軟開發工具: Visual Studio, ML, CL, LINK, …  Linux 作業系統:行程切換、Thread、  理論補充:Thread、競爭情況、死結、號誌 (以 C# 示範)  產業訊息:Android, QEMU, 嵌入式裝置, …
  • 16. 未來  程式、程式、程式  重新打造輪子  已有:編譯器 (c0c)、組譯器 (as0)、虛擬機 (vm0)  目前:  作業系統: os0 – 以 cpu0 的組合語言寫成  未來  處理器:cpu0 – 以 VHDL 實作,在 Altera FPGA 板上設計運 行,使用 Quartus II 模擬  KISS: Keep it Simple and Stupid
  • 17. 出版計劃  用程式打造自己的電腦 – 從軟體到硬體  編譯器 c0c (使用 c 語言)  組譯器 as0 (使用 c 語言)  虛擬機 vm0 (使用 c 語言)  作業系統 os0 : 使用 c0 語言 + cpu0 的組合語言  CPU0 : (使用 VHDL 語言)  開發時使用 Altera Quartus II 進行模擬  完成後使用 Altera FPGA 板進行燒錄測試
  • 18. 後記 (1)  直到我接受彥發兄的邀請,開始撰寫此書之後,我 突然明白了一件事  問題:  為何沒有人願意寫一本全新的系統程式教科書  答案:  這個主題真的是太廣大、太複雜了,要懂得東西很多,又超 級難寫。
  • 19. 後記 (2)  修正完本書交稿給昕暐兄之後,我就住院了  感謝昕暐與彥發兄特別到醫院看我  看來我被系統程式難倒了,難到頭都暈了