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
第 6 章、巨集處理器
Search
陳鍾誠
June 08, 2022
Education
0
68
第 6 章、巨集處理器
陳鍾誠
June 08, 2022
Tweet
Share
More Decks by 陳鍾誠
See All by 陳鍾誠
第 7 章、高階語言
ccckmit
0
120
第 9 章、虛擬機器
ccckmit
0
72
第 8 章、編譯器
ccckmit
0
150
數學、程式和機器
ccckmit
1
760
語言處理技術
ccckmit
0
160
微積分
ccckmit
0
420
系統程式 第 1 章 -- 系統軟體
ccckmit
0
420
系統程式 第 2 章 -- 電腦的硬體結構
ccckmit
0
400
系統程式 第 3 章 -- 組合語言
ccckmit
0
330
Other Decks in Education
See All in Education
2024年度秋学期 統計学 第12回 分布の平均を推測する - 区間推定 (2024. 12. 11)
akiraasano
PRO
0
120
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
2.6k
The Prison Industrial Complex by Billy Dee
oripsolob
0
620
2024年度秋学期 統計学 第8回 第1部の演習 (2024. 11. 6)
akiraasano
PRO
0
100
子どものためのプログラミング道場『CoderDojo』〜法人提携例〜 / Partnership with CoderDojo Japan
coderdojojapan
4
15k
【お子さま向け】Amazon ECS サービスディスカバリーって知ってる?【楽しい読み聞かせ】
tubone24
7
830
オンラインゆっくり相談室ってなに?
ytapples613
PRO
0
160
保育士チームが実践している連続的な観察と多面的な観察を共有するための振り返り / Reflection to share “continuous and multifaceted observations” as practiced by a team of childcare professionals
psj59129
0
3.3k
小学校プログラミング教育、次の5年に向けて 〜つくること・学ぶことの歓びへ〜 /NextGenerationOfProgrammingEducation
kiriem
2
370
付箋を使ったカラオケでワイワイしましょう / Scrum Fest Okinawa 2024
bonbon0605
0
140
Algo de fontes de alimentación
irocho
1
480
Поступай в ТОГУ 2025
pnuslide
0
16k
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Documentation Writing (for coders)
carmenintech
67
4.6k
A better future with KSS
kneath
238
17k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
We Have a Design System, Now What?
morganepeng
51
7.4k
Building Adaptive Systems
keathley
40
2.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.6k
Side Projects
sachag
452
42k
Transcript
第 6 章、巨集處理器 作者:陳鍾誠 旗標出版社
第 6 章、巨集處理器 6.1 組合語言的巨集 6.2 巨集處理的演算法
6.3 實務案例:C 語言的巨集
簡介:巨集處理器 巨集處理器 (Macro Processor) 乃是一種方便程式 撰寫者使用, 避免重複撰寫程式的工具 在程式被編譯前,
巨集處理器會先將程式當中的巨 集展開, 然後再交給編譯器或組譯器進一步處理。
6.1 組合語言的巨集
巨集處理器的動作 巨集展開 將巨集的內容嵌入到呼叫行上,並整個展開 參數取代 將巨集參數取代為呼叫參數
標記編號 為標記加上編號, 以避免重複的狀況。
6.2 巨集處理的演算法 通常分為兩輪 (2-Pass) 進行處理 第一輪:定義巨集 將巨集內容儲存到記憶體表格中。
第二輪:展開巨集 在呼叫時展開巨集,並進行參數取代與標記編號等動 作。
單層巨集處 理器的演算 法
6.3 實務案例:C 語言的巨集 在 C 語言的設計中, 有兩種巨集宣告方式 方式一:
使用 #define 指令宣告巨集函數 方式二: 利用 inline 指令, 讓一般函數改為巨集函數 方式一較為常用,本節將以#define為例
C 語言的巨集展開 使用 gcc 加上 –E 參數,可以將巨集展開
條件式展開 不加 DEBUG:gcc -E macroDebug.c -o MacroDebug_E.c 有加
DEBUG:gcc -E -D_DEBUG_ macroDebug.c -o MacroDebug_DEBUG_E.c
習題 6.1 請說明巨集處理器的輸入、輸出與功能為何? 6.2 請說明巨集處理器會如何處理巨集參數? 6.3 請說明巨集處理器在展開標記時會產生甚麼問題,
應如何解決? 6.4 請使用 gcc 工具將範例 6.2 展開, 觀察展開後的檔 案, 並說明展開前後的對應關係。 6.5 請使用 gcc 工具將範例 6.3 展開, 觀察展開後的檔 案, 並說明展開前後的對應關係