Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
系統程式 第 1 章 -- 系統軟體
Search
陳鍾誠
April 14, 2022
Education
0
480
系統程式 第 1 章 -- 系統軟體
陳鍾誠
April 14, 2022
Tweet
Share
More Decks by 陳鍾誠
See All by 陳鍾誠
第 6 章、巨集處理器
ccckmit
0
80
第 7 章、高階語言
ccckmit
0
140
第 9 章、虛擬機器
ccckmit
0
81
第 8 章、編譯器
ccckmit
0
180
數學、程式和機器
ccckmit
1
780
語言處理技術
ccckmit
0
170
微積分
ccckmit
0
460
系統程式 第 2 章 -- 電腦的硬體結構
ccckmit
0
450
系統程式 第 3 章 -- 組合語言
ccckmit
0
370
Other Decks in Education
See All in Education
Data Management and Analytics Specialisation
signer
PRO
0
1.3k
探究的な学び:Monaca Educationで学ぶプログラミングとちょっとした課題解決
asial_edu
0
360
プロダクト部門のマネージャー全員でマネジメントポリシーを宣言した記録_-_EMConf_JP_2025.2.27.pdf
stanby_inc
1
2.1k
第1回大学院理工学系説明会|東京科学大学(Science Tokyo)
sciencetokyo
PRO
0
3.3k
著作権と授業に関する出前講習会/dme-2025-05-01
gnutar
0
190
今も熱いもの!魂を揺さぶる戦士の儀式:マオリ族のハカ
shubox
0
170
Tangible, Embedded and Embodied Interaction - Lecture 7 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
1.6k
より良い学振申請書(DC)を作ろう 2025
luiyoshida
1
3k
今から始める8bits CPU アセンブラ言語
sapi_kawahara
0
390
ビジネスモデル理解
takenawa
0
200
i-GIP 2025 中高生のみなさんへ資料
202200
0
330
アジャイルやっていきを醸成する内製講座
nomuson
1
450
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Unsuck your backbone
ammeep
671
58k
A designer walks into a library…
pauljervisheath
205
24k
Done Done
chrislema
184
16k
Practical Orchestrator
shlominoach
187
11k
KATA
mclloyd
29
14k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
24
2.8k
Optimizing for Happiness
mojombo
378
70k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Writing Fast Ruby
sferik
628
61k
Docker and Python
trallard
44
3.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Transcript
作者:陳鍾誠 旗標出版社 第1章、系統軟體
第1章、系統軟體 1.1 何謂系統程式? 1.2 系統程式與系統軟體 1.3 本書的章節架構
1.4 實務案例 (一):Dev C++開發環境 1.5 實務案例 (二):GNU 開發工具
1.1 何謂系統程式? System Software (系統軟體) System Programming (系統程式設計)
System Software (系統軟體) 何謂系統軟體? 設計給程式設計師使用的軟體, 就被稱為系統軟體 設計給一般大眾使用的軟體,
則稱為應用軟體。
系統軟體 v.s 應用軟體 系統軟體 組譯器 載入器
連結器 巨集處理器 編譯器 直譯器 虛擬機 應用軟體 試算表 Excel 排版軟體 Word 瀏覽器 Internet Explorer Firefox Chrome
系統程式設計 (System Programming) 定義: 系統相關的程式設計技術,其中的系統指的是作業系 統或電腦系統。 作業系統層次的程式設計
Linux 系統程式 Windows 系統程式
作業系統相關的程式設計主題 行程管理 執行緒 行程通訊 並行控制
記憶體管理 檔案輸出入 驅動程式
電腦系統相關的程式設計主題 組合語言 C 語言 嵌入式系統
1.2 系統程式與系統軟體 高階語言 編譯器 組合語言 組合語言
組譯器 目的碼 目的碼 連結器 可執行檔 可執行檔 載入器 記憶體,開始執行
高階語言 編譯器 記憶體 組譯器 連結器 載入器 組合語言 目的檔 執行檔 圖
1.1、程式的編譯、組譯、連結、載入之流程 系統程式 1. 高階語言 2. 組合語言 系統軟體 1.編譯器 2.組譯器 3. 連結器 4.載入器
從機器語言到組合語言 組合語言 目的碼 (機器語言) 組譯器
各種組合語言的指令 早期 (1980) (8,16 位元 CPU) 中期 (1990) (複雜指令CPU) 最近
(2000) (精簡指令CPU)
從組合語言到高階語言 範例 1.1 C 語言與組合語言的對應關係 R2, R4
C 語言 1972 年貝爾實驗室所發展出來的 C 語言 Ken Thompson
與 Dennis Ritchie (合稱 K & R) K &R 用 C 語言設計出 UNIX 作業系統 C 語言特別適合用來撰寫作業系統等低階程式,因此是當今 系統程式的主要語言。 C 語言可以進行記憶體映射輸出入,這讓 C 語言特別適合用 來撰寫嵌入式的系統程式
1.3 本書的章節架構 第 1 章 系統軟體 第 2
章 電腦的硬體結構 第 3 章 組合語言 第 4 章 組譯器 第 5 章 連結與載入 第 6 章 巨集處理器 第 7 章 高階語言 第 8 章 編譯器 第 9 章 虛擬機器 第 10 章 作業系統 第 11 章 嵌入式系統 第 12 章 系統軟體實作 組合語言 高階語言 執行平台 實作『組譯器、編譯器、虛擬機器』 導論
本書的章節導引圖 目的檔 (第 5 章) 連結器 (第 5 章) 函式庫
(第 5 章) 組譯器 (第 4 章) 編譯器 (第 8 章) 直譯器 (第 7 章) 高階 語言 (C) (第 7 章) 其他目的檔 (第 5 章) 載入器 (第 5 章) 執行 執行檔 (第 5 章) 虛擬機器 (第 9 章) 電腦的硬體結構 (第 2 章) 作業系統 (第 10 章) 組合語言 (第 3 章) 巨集處理器 (第6章) 系統軟體 (第 1 章) 嵌入式系統 (第 11 章) 系統軟體實作 (第 12 章) 圖 1.2 本書的章節導引圖
1.4 實務案例 (一):Dev C++開發環境 Dev C++ : Bloodshed
Software 公司所設計的免費的開發工具 下載點:http://www.bloodshed.net/devcpp.html Dev C++ 使用 gcc 作為預設的編譯器。
圖 1.3 單一程式檔的Dev C++ 編譯執行畫面
1.5 實務案例 (二):GNU 開發工具 GNU 開發工具 由 GNU
組織所設計 包含 gcc 編譯器 as 組譯器 ld 連結器 make 專案建置工具 Linux 作業系統也是用 GNU 工具所開發完成的
如何使用 GNU 工具 在 Linux 當中 預設就包含了 GNU
工具 在 MS. Windows 中 安裝 Dev C++ 後就會有 GNU 工具,請參考附錄 D 的安裝方法。 安裝 Cygwin 也可以使用 GNU 工具,請參考附錄 E 的安裝方法。
圖 1.4 GNU工具使用的基本流程 main.c sum.c printf.c putc.c kprintf.c main.o sum.o
ld gcc printf.o putc.o kprintf.o ar libc.a libm.a executable gcc
C 語言程式範例
使用 gcc 編譯 C 語言程式
使用 gcc 產生組合語言 使用 -S 參數可要求 gcc 產生組合語言
將 gcc 當成組譯器使用
同時組譯並連結
習題 1. 請說明何謂系統軟體? 2. 請列出你所知道的系統軟體。 3. 請說明系統軟體與系統程式兩者有何區別。 4. 請說明組合語言在系統軟體學習上的角色。 5.
請說明 C 語言在系統程式上的用途。 6. 請列出您所經常使用的程式語言,並說明其相關的系統軟體之用法。 7. 請從網路下載Dev C++ 軟體,並參照附錄 D 的説明,安裝並使用 Dev C++ 撰寫 C 語言程式,並學習該軟體的用法。 8. 請找出 Dev C++ 當中的GNU工具,並在設定好 PATH 環境變數後, 試用 gcc 指令編譯任意一個 C 語言程式 (設定方法請參考本書附錄 D)。