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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
陳鍾誠
June 08, 2022
Education
130
0
Share
第 6 章、巨集處理器
陳鍾誠
June 08, 2022
More Decks by 陳鍾誠
See All by 陳鍾誠
第 7 章、高階語言
ccckmit
0
210
第 9 章、虛擬機器
ccckmit
0
140
第 8 章、編譯器
ccckmit
0
260
數學、程式和機器
ccckmit
2
850
語言處理技術
ccckmit
0
220
微積分
ccckmit
1
530
系統程式 第 1 章 -- 系統軟體
ccckmit
0
600
系統程式 第 2 章 -- 電腦的硬體結構
ccckmit
0
570
系統程式 第 3 章 -- 組合語言
ccckmit
0
450
Other Decks in Education
See All in Education
fake vs real
latrrr
0
140
Course Review - Lecture 13 - Information Visualisation (4019538FNR)
signer
PRO
1
2.6k
Modern Data Fetching Techniques in Angular
debug_mode
0
190
2026年度春学期 統計学 第3回 クロス集計と感度・特異度,データの可視化 (2026. 4. 23)
akiraasano
PRO
0
120
生成AI時代のエンジニア育成について考えてみた
akasan
0
120
2026年度春学期 統計学 第5回 分布をまとめるー記述統計量(平均・分散など) (2026. 5. 7)
akiraasano
PRO
0
110
小さなまちで始める デジタル創作の居場所〜すべての子どもが創造的に未来を描ける社会へ〜
codeforeveryone
0
510
Case Studies and Future Research - Lecture 12 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
120
[2026前期火5] 論理学(京都大学文学部 前期 第1回)「ハルシネーションを外部世界との対応を考えずに見分ける方法」
yatabe
0
1k
[2026前期火5] 論理学(京都大学文学部 前期 第2回)「論理的な正しさはどこにあるのか」
yatabe
0
910
Interaction - Lecture 10 - Information Visualisation (4019538FNR)
signer
PRO
0
2.6k
Πλουτοκρατία: Η Τυραννία του Μαμμωνά και η Μεταανθρώπινη Δουλεία
amethyst1
0
250
Featured
See All Featured
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
560
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
590
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
So, you think you're a good person
axbom
PRO
2
2k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
200
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Scaling GitHub
holman
464
140k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
150
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
300
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
370
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 展開, 觀察展開後的檔 案, 並說明展開前後的對應關係