SlideShare a Scribd company logo
1 of 25
Download to read offline
Compiler Lecture Note, Intermediate Language Page 1
์ œ 9 ์žฅ
์ค‘ ๊ฐ„ ์–ธ์–ด
์ปดํŒŒ์ผ๋Ÿฌ ์ž…๋ฌธ
Compiler Lecture Note, Intermediate Language Page 2
Contents
โ€ข Introduction
โ€ข Polish Notation
โ€ข Three Address Code
โ€ข Tree Structured Code
โ€ข Abstract Machine Code
โ€ข Concluding Remarks
Compiler Lecture Note, Intermediate Language Page 3
โ€ข Compiler Model
Source
Program
Lexical Analyzer
Syntax Analyzer
Semantic Analyzer
Intermediate
Code Generator
tokens
AST
Front-End
Code Optimizer
Target Code Generator
IC
Back-End
IL
Object
Program
Front-End- language dependant part
Back-End - machine dependant part
Introduction
Compiler Lecture Note, Intermediate Language Page 4
โ€ข IL ์‚ฌ์šฉ์˜ ์žฅ์ 
โ€“ Compiler๋ฅผ ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋…๋ฆฝ์ ์ธ Modul๋“ค๋กœ ๊ตฌ์„ฑ
โ€“ Compiler ์ž์ฒด์˜ portability ์ฆ๊ฐ€
โ€“ Easy Translation
โ€ข ๊ณ ๊ธ‰ ์†Œ์Šค ์–ธ์–ด์™€ ์ €๊ธ‰ ๋ชฉ์  ์ฝ”๋“œ๊ฐ„์˜ semantic gap๋ฅผ ์ด์–ด์ฃผ๋Š” ๊ต๋Ÿ‰ ์—ญํ• 
โ€“ ์ค‘๊ฐ„์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ optimization๋ฅผ ์ˆ˜ํ–‰
โ€ข ๊ธฐ๊ณ„์™€ ๋…๋ฆฝ์ ์ธ ์ตœ์ ํ™” ๊ฐ€๋Šฅ
โ€ข ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๋€ ์ƒํƒœ์—์„œ ํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ํšจ์œจ์ ์œผ๋กœ ์ตœ์ ํ™” ์ˆ˜ํ–‰
โ€“ Interpretive compiling ์‹œ์Šคํ…œ์—์„œ interpreter๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹คํ–‰
โ€ข IL์‚ฌ์šฉ์˜ ๊ฒฐ์ 
โ€“ ๋ชฉ์  ์ฝ”๋“œ๋กœ ์ง์ ‘ ๋ฒˆ์—ญํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด ๋” ๋งŽ์ด ์†Œ์š”
โ€“ ๋น„ํšจ์œจ์ ์ธ ์ฝ”๋“œ ์ƒ์‚ฐ
โ€ข ์ค‘๊ฐ„ ์ฝ”๋“œ๋กœ๋ถ€ํ„ฐ ๋ชฉ์  ์ฝ”๋“œ๋กœ์˜ ๋ฒˆ์—ญ ๊ณผ์ • ํ•„์š”
โ€ข ์ค‘๊ฐ„์–ธ์–ด ๋‹จ๊ณ„์—์„œ ๊ฐ„๋‹จํ•œ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ๊ทน๋ณต
Compiler Lecture Note, Intermediate Language Page 5
โ€ข Two level Code Generation
โ€ข ILS
โ€“ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ์ž๋™ํ™”์— ์˜ํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ
โ€“ ์†Œ์Šค ์–ธ์–ด์— ์˜์กด์ ์ด๋ฉฐ high level์ด๋‹ค.
โ€ข ILT
โ€“ ํ›„๋‹จ๋ถ€์˜ ์ž๋™ํ™”์— ์˜ํ•ด ๋ชฉ์ ๊ธฐ๊ณ„๋กœ์˜ ๋ฒˆ์—ญ์ด ๋งค์šฐ ์‰ฌ์šด ํ˜•ํƒœ
โ€“ ๋ชฉ์ ๊ธฐ๊ณ„์— ์˜์กด์ ์ด๋ฉฐ low level์ด๋‹ค.
โ€ข ILS to ILT
โ€“ ILS์—์„œ ILT๋กœ์˜ ๋ฒˆ์—ญ์ด ์ฃผ๋œ ์ž‘์—…์ž„.
Source Front-End ILS ILS-ILT ILT Back-End Target
โ€ข IL์˜ ์ข…๋ฅ˜
โ€“ Polish Notation ๏ƒจ Prefix notation, IR
โ€“ Three Address Code ๏ƒจ Triple, Quadruple, Indirect Triple
โ€“ Tree Structured Code ๏ƒจ AST, TCOL, Diana
โ€“ Abstract Machine Code ๏ƒจ P-code, EM-code, U-code, Bytecode
Compiler Lecture Note, Intermediate Language Page 6
Compiler Lecture Note, Intermediate Language Page 7
โ˜ž Polish mathematician Lucasiewiez invented the parenthesis-free notation.
โ€ข Postfix(Suffix) Polish Notation
โ€ข earliest IL
โ€ข popular for interpreted language - SNOBOL, BASIC
โ€“ general form :
e1 e2 ... ek OP (k โ‰ฅ 1)
where, OP : k_ary operator
ei : any postfix expression (1 โ‰ค i โ‰ค k)
Polish Notation
Compiler Lecture Note, Intermediate Language Page 8
โ€“ example :
if a then if c-d then a+c else a*c else a+b
ใ€“ใ€‰a L1 BZ c d - L2 BZ a c + L3 BR
L2: a c * L3 BR L1: a b + L3:
โ€“ note
1) high level: source to IL - fast & easy translation
IL to target - difficulty
2) easy evaluation - operand stack
3) optimization ๋ถ€์ ๋‹น - ๋‹ค๋ฅธ IL๋กœ์˜ translation ํ•„์š”
4) parentheses free notation - arithmetic expression
โ€“ interpretive language์— ์ ํ•ฉ
Source Translator Postfix Evaluator Result
Compiler Lecture Note, Intermediate Language Page 9
โ€ข most popular IL, optimizing compiler
โ€ข General form:
A := B op C
where, A : result address
B, C : operand addresses
op : operator
(1) Quadruple - 4-tuple notation
<operator>,<operand1>,<operand2>,<result>
(2) Triple - 3-tuple notation
<operator>,<operand1>,<operand2>
(3) Indirect triple - execution order table & triples
Three Address Code
Compiler Lecture Note, Intermediate Language Page 10
โ€“ example
โ€ข A โ† B + C * D / E
โ€ข F โ† C * D
Quadruple Triple
Indirect Triple
Operations Triple
* C D T1 (1) * C D 1.(1) (1) * C D
/ T1 E T2 (2) / (1) E 2.(2) (2) / (1) E
+ B T2 T3 (3) + B (2) 3.(3) (3) + B (2)
๏‚ฌ T3 A (4) ๏‚ฌ A (3) 4.(4) (4) ๏‚ฌ A (3)
* C D T4 (5) * C D 5.(1) (5) ๏‚ฌ F (1)
๏‚ฌ T4 F (6) ๏‚ฌ F (5) 6.(5)
Compiler Lecture Note, Intermediate Language Page 11
โ€ข Note
โ€ข Quadruple vs. Triple
โ€“ quadruple - optimization ์šฉ์ด
โ€“ triple - removal of temporary addresses
โ‡’ Indirect Triple
โ€ข extensive code optimization ์šฉ์ด
โ€“ IL rearrange ๊ฐ€๋Šฅ (triple ์ œ์™ธ)
โ€ข easy translation - source to IL
โ€ข difficult to generate good code
โ€“ quadruple to two-address machine
โ€“ triple to three-address machine
Compiler Lecture Note, Intermediate Language Page 12
โ€ข Abstract Syntax Tree
โ€“ parse tree์—์„œ redundantํ•œ information ์ œ๊ฑฐ.
โ€ข โ”Œ leaf node --- variable name, constant
โ”” internal node --- operator
โ€“ ์˜ˆ : a * b + c / d a[i] = exp;
Tree Structured Code
add
divmul
b ca d
assign
expindex
ia
Compiler Lecture Note, Intermediate Language Page 13
โ€ข Tree Structured Common Language(TCOL)
โ€“ Variants of AST - containing the result of semantic analysis.
Example) int a; float b;
...
b = a + 1;
AST TCOL
add
1a
assign
b float
assign
b
addi
1๏€ฎ
a
Compiler Lecture Note, Intermediate Language Page 14
Abstract Machine Code
โ€ข Abstract Machine์„ ์ด์šฉํ•œ portable compiler์˜ ๋ชจ๋ธ
โ€ข Abstract Machine์˜ ์„ค๊ณ„
โ€“ source language์˜ ๊ธฐ๋ณธ ์—ฐ์‚ฐ๊ณผ ๋ชจ๋“œ์— ๊ทผ๊ฑฐ
โ€ข ๊ธฐ๋ณธ ์—ฐ์‚ฐ์€ source program์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„ ์ง
์ ‘์ ์ธ ์—ฐ์‚ฐ์— ๋Œ€์‘
โ€ข ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒ ๋ชจ๋“œ๋Š” source language์˜ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ˜•
โ€ข ๊ธฐ๋ณธ์ ์ธ ๋ชจ๋“œ์™€ ์—ฐ์‚ฐ๋“ค์ด Abstract Machine์˜ ๋ช…๋ น์–ด๋ฅผ ๊ฒฐ์ •
โ€“ ์‹ค์ œ ์ปดํ“จํ„ฐ์— ํšจ์œจ์ ์œผ๋กœ ์„ค์น˜ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋„ ๊ณ ๋ ค
front-end back-end
target
machine
abstract machine
interpreter
source
program interface target code
abstract
machine
code
Compiler Lecture Note, Intermediate Language Page 15
โ€ข Motivation
โ€ข โ”Œ rapid development of machine architectures
โ”” proliferation of programming languages
โ€“ portable & adaptable compiler design --- P_CODE
โ€ข porting --- rewriting only back-end
โ€“ compiler building system --- EM_CODE
M front-ends
N back-ends
+ M compilers for N target machines
Compiler Lecture Note, Intermediate Language Page 16
โ€ข Pascal-P Code
โ€“ Pascal compiler๋ฅผ ์ œ์ž‘ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ intermediate language
โ€ข Pascal-P compiler
โ€“ P-์ฝ”๋“œ์—์„œ ์‹ค์ œ ๊ธฐ๊ณ„๋กœ์˜ ๋ฒˆ์—ญ๊ธฐ ๋˜๋Š” P-code interpreter๋ฅผ ์‚ฌ์šฉํ•จ
์œผ๋กœ์จ ์‰ฝ๊ฒŒ ์ด์‹์ด ๊ฐ€๋Šฅ
โ€“ ์†Œ์Šค ์–ธ์–ด๋กœ๋ถ€ํ„ฐ P-code๋กœ์˜ translation๊ณผ interpretation์ด ๋น„๊ต์  ์‰ฝ
๊ฒŒ ์„ค๊ณ„
โ€“ P-code์— ๋Œ€ํ•œ ๊ฐ€์ƒ ๊ธฐ๊ณ„๊ฐ€ P-๊ธฐ๊ณ„์ด๋ฉฐ, P-๊ธฐ๊ณ„๋„ ๋ชจ๋“  ์—ฐ์‚ฐ์ด
์Šคํƒ์—์„œ ํ–‰ํ•ด์ง€๋Š” ๊ฐ€์ƒ์ ์ธ ์Šคํƒ ๊ธฐ๊ณ„(hypothetical stack
machine)
Pascal P CompilerPascal Program P-code
Compiler Lecture Note, Intermediate Language Page 17
โ€ข EM-code
โ€“ ACK ์ค‘๊ฐ„ ์–ธ์–ด
โ€ข ACK(Amsterdam Compiler Kit)
โ€“ Algol ํ˜•ํƒœ์˜ ์†Œ์Šค ์–ธ์–ด์™€ ๋ฐ”์ดํŠธ ๊ธฐ๊ณ„ ํ˜•ํƒœ์˜ ๋ชฉ์  ๊ธฐ๊ณ„์— ์ ํ•ฉํ•œ
EM-๊ธฐ๊ณ„๋ผ๋Š” ๊ฐ€์ƒ ๊ธฐ๊ณ„๋ฅผ ์„ค์ •ํ•˜๊ณ  ์–ธ์–ด์— ๋Œ€ํ•œ ์ „๋‹จ๋ถ€์™€ ๋ชฉ์  ๊ธฐ
๊ณ„์— ๋Œ€ํ•œ ํ›„๋‹จ๋ถ€๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‰ฝ
๊ฒŒ ์ œ์ž‘ํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ๊ธฐ๊ตฌ
โ€“ ๊ฐ€์ƒ์ ์ธ ์Šคํƒ์˜ ๊ฐœ๋…์„ ๋‘” ๊ธฐ๊ณ„ ๊ตฌ์กฐ
โ€“ ์†Œ์Šค ์–ธ์–ด๋กœ๋ถ€ํ„ฐ EM-์ฝ”๋“œ๋กœ์˜ ๋ฒˆ์—ญ๊ณผ EM-์ฝ”๋“œ์˜ ์ธํ„ฐํ”„๋ฆฌํ…Œ
์ด์…˜์ด ๋น„๊ต์  ์‰ฝ๊ฒŒ ์„ค๊ณ„
โ€“ EM-์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ œ์ž‘ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” EM-์ฝ”๋“œ์—์„œ ๋ชฉ์ 
๊ธฐ๊ณ„๋กœ์˜ ๋ฒˆ์—ญ๊ธฐ ๋˜๋Š” EM-์ฝ”๋“œ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋งŒ์„ ๊ตํ™˜ํ•จ์œผ๋กœ
์จ ์‰ฝ๊ฒŒ ์ด์‹ ๊ฐ€๋Šฅ
โ€ข U-code
โ€“ Portable Pascal compiler์—์„œ ์‚ฌ์šฉํ•œ ์ค‘๊ฐ„ ํ˜•ํƒœ
โ€“ ๊ฐ€์ƒ์ ์ธ ์Šคํƒ ๊ธฐ๊ณ„์— ๊ทผ๊ฑฐ
โ€ข ๋ชจ๋“  ๋ช…๋ น์–ด๋“ค์€ ๊ฐ€์ƒ ์Šคํƒ์„ ๊ธฐ์ค€์œผ๋กœ ์ •์˜
โ€ข ์Šคํƒ์—์„œ ๋ชจ๋“  ์—ฐ์‚ฐ ์ˆ˜ํ–‰
โ€“ ์Šคํƒ ๊ธฐ๊ณ„๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ์„ ์Šคํƒ์—์„œ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ๋ณ€์ˆ˜๋“ค์˜ ์ฃผ์†Œ
๋Š” ์Šคํƒ์— ๋Œ€ํ•œ ์ฃผ์†Œ ๋ถ€์—ฌ ๋ฐฉ๋ฒ• ์ด์šฉ
โ€ข ๋ชจ๋“  ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ฃผ์†Œ๋Š” ๋‘ ๊ฐœ์˜ ํ•ญ๋ชฉ(B, O)์˜ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ
โ€“ B : ๋ธ”๋ก์˜ ๋ฒˆํ˜ธ
โ€“ O : ๋ธ”๋ก์˜ ์‹œ์ž‘์œผ๋กœ๋ถ€ํ„ฐ์˜ offset
โ€“ ์˜ˆ
โ€“ ๋ธ”๋ก ๋ฒˆํ˜ธ๋Š” ํ”„๋กœ๊ทธ๋žจ main์ด 1, procedure P๊ฐ€ 2, procedure Q๊ฐ€ 3
โ€“ procedure Q์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜ i์™€ j์˜ ์ฃผ์†Œ๋Š” ๊ฐ๊ฐ (3, 1)๊ณผ (3, 2)๋กœ ํ‘œํ˜„
Compiler Lecture Note, Intermediate Language Page 18
program main
procedure P
procedure Q
var i : integer;
j : boolean;
โ€ข U-code ๋ช…๋ น์–ด๋“ค์˜ ํ˜•ํƒœ์™€ ๊ธฐ๋Šฅ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜
1. ๋‹จ์ผ ๋ช…๋ น์–ด โ‡’ notop, neg
2. ์ด์ง„ ๋ช…๋ น์–ด โ‡’ add, sub, mult, divop, nodop, swp
andop, orop, gt, lt, ge, le, eq, ne
3. ์Šคํƒ ์šด์˜ ๋ช…๋ น์–ด โ‡’ lod, str, ldc, ldr
4. ์ œ์–ด ํ๋ฆ„ ๋ช…๋ น์–ด โ‡’ ujp, tjp, fjp
5. ๋ฒ”์œ„ ๊ฒ€์‚ฌ ๋ช…๋ น์–ด โ‡’ chkh, chkl
6. ๊ฐ„์ ‘ ์ฃผ์†Œ ๋ช…๋ น์–ด โ‡’ ixa, sta
7. procedure ๋ช…๋ น์–ด โ‡’ cal, ret, ldp, proc, endop
8. ๊ธฐํƒ€ ๋ช…๋ น์–ด โ‡’ bgn, sym
Compiler Lecture Note, Intermediate Language Page 19
โ€ข U-code๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์˜ ์ „์ฒด ๊ตฌ์กฐ
โ€“ ๋จผ์ € global variable์˜ ์†์„ฑ์ด ๋‚˜์˜ค๋ฉฐ, ๊ทธ ๋‹ค์Œ์— procedure์˜ code๊ฐ€
๋‚˜์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋งˆ์ง€๋ง‰์— ์ฃผ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ code๊ฐ€ ๋‚˜์˜ด
โ€“ ํ•˜๋‚˜์˜ procedure๋Š” local variable์˜ ์†์„ฑ๊ณผ code๋กœ ๊ตฌ์„ฑ
โ€“ ๋งจ ์ฒ˜์Œ, bgn(begin)์œผ๋กœ ์ œ์–ด๊ฐ€ ๋„˜์–ด์™€ ์‹คํ–‰์ด ์‹œ์ž‘
Compiler Lecture Note, Intermediate Language Page 20
sym(s) global variable(s)
<name> proc
sym(s) for procedure
codes for procedure
ยทยทยท
endop
bgn
codes for main program
ยทยทยท
endop
โ€ข Bytecode
โ€“ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ์ง€์›ํ•˜๋Š” IL๋กœ์„œ ์ด๊ธฐ์ข…๊ฐ„์˜ ์‹คํ–‰ ํ™˜๊ฒฝ
์— ์ ํ•ฉํ•˜๋„๋ก ์„ค๊ณ„๋œ ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ๊ฐ€์ƒ ๊ธฐ๊ณ„ ์ฝ”๋“œ
โ€“ Java compiler
โ€ข Java ํ”„๋กœ๊ทธ๋žจ์„ ์ž…๋ ฅ ๋ฐ›์•„ JVM(Java Virtual Machine)์˜ ๋ช…๋ น์–ด ์ง‘ํ•ฉ์ธ
byetcode ์ƒ์„ฑ
โ€ข Intermediate code ํ˜•ํƒœ์ธ bytecode๋Š” ์ด๊ธฐ์ข…๊ฐ„์˜ ์‹คํ–‰ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•˜๋„
๋ก ์„ค๊ณ„๋˜์–ด portability๊ณผ ์œ ์—ฐ์„ฑ์ด ๋†’๋‹ค.
โ€ข interpreter ๋ฐฉ์‹๊ณผ JIT(Just-In-Time) compiler ๋ฐฉ์‹์— ์˜ํ•ด์„œ ์‹คํ–‰
Compiler Lecture Note, Intermediate Language Page 21
Java CompilerJava Program Bytecode JVM ์‹คํ–‰ ๊ฒฐ๊ณผ
โ€“ Bytecode๋Š” ์ผ๋ฐ˜์ ์ธ Abstract Machine Code์˜ ํŠน์ง•์„ ๋ชจ๋‘ ํฌํ•จ
โ€“ Bytecode ๋งŒ์˜ ํŠน์ง•
โ€ข ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์ „์†ก ํšจ์œจ์„ ์œ„ํ•ด code๋ฅผ ๊ฐ€๋Šฅํ•œ ์ž‘๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์„ค๊ณ„
โ€ข Java language์˜ ๊ธฐ๋Šฅ์„ ๋ฐ˜์˜ํ•˜๋Š” ๋ช…๋ น์–ด๊ฐ€ ์กด์žฌ
โ€“ ๋ฐฐ์—ด, ํด๋ž˜์Šค, ์˜ˆ์™ธ, ์Šค๋ ˆ๋“œ ๋“ฑ์„ ์ง์ ‘ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด ํฌํ•จ
โ€ข ์ž๋ฃŒํ˜•์— ๋”ฐ๋ผ์„œ ๋ช…๋ น์–ด๊ฐ€ ๊ฐ๊ธฐ ๋”ฐ๋กœ ์กด์žฌ
โ€“ ex) iadd ๋Š” int ๋ง์…ˆ, fadd๋Š” float ๋ง์…ˆ
โ€ข ๋ณตํ•ฉ๊ธฐ๋Šฅ์„ ๊ฐ–๋Š” ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณต
โ€“ ex) pop2๋Š” stack์—์„œ ์—ฐ์†ํ•ด์„œ ๋‘ ๋ฒˆ์„ popํ•˜๋Š” ๊ธฐ๋Šฅ
Compiler Lecture Note, Intermediate Language Page 22
โ€ข IL์˜ 4๊ฐ€์ง€ ๋ถ„๋ฅ˜
โ€“ Polish Notation ๏ƒจ Postfix notation, IR
โ€“ Three Address Code ๏ƒจ Triple, Quadruple, Indirect Triple
โ€“ Tree Structured Code ๏ƒจ AST, TCOL, Diana
โ€“ Abstract Machine Code ๏ƒจ P-code, EM-code, U-code, Bytecode
โ€ข IL์ด ๊ฐ–์ถ”์–ด์•ผ ํ•  ์š”๊ฑด
1. ์ค‘๊ฐ„ ๋ ˆ๋ฒจ์„ฑ(Intermediate level)
โ€ข ์†Œ์Šค ์–ธ์–ด์™€ ๋น„๊ตํ•ด์„œ๋Š” low-level์ด๊ณ  ๋ชฉ์  ๊ธฐ๊ณ„์™€ ๋น„๊ตํ•ด์„œ๋Š” high-
level์˜ ์„ฑ๊ฒฉ์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ์†์„ฑ์„ ์˜๋ฏธ
โ€ข IL์ด ๋„ˆ๋ฌด ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์ณ ์žˆ์œผ๋ฉด IL๊ณผ ๋‹ค๋ฅธ ํ•œ์ชฝ๊ณผ์˜ ์˜๋ฏธ์  ์ฐจ์ด๊ฐ€
์ปค์ ธ ๋ฒˆ์—ญ์ด ์–ด๋ ค์›Œ์ง€๋ฉฐ ๋˜ํ•œ ์ด์‹์„ฑ ๊ฒฐ์—ฌ
โ€“ Postfix polish notation๊ณผ syntax tree๋Š” high-level
โ€“ Triple, quadruple๋Š” ๋น„๊ต์  high-level
โ€“ Abstract Machine Code ๋Š” ๋น„๊ต์  low-level
โ€“ TCOL๋งŒ์ด ๋น„๊ต์  intermediate level์ด ์ข‹์€ ์–ธ์–ด
Compiler Lecture Note, Intermediate Language Page 23
2. ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ์˜ ์ ํ•ฉ์„ฑ(Efficient processing)
โ€ข ์†Œ์Šค ์–ธ์–ด์—์„œ ์ค‘๊ฐ„ ์–ธ์–ด๋กœ ๋ฒˆ์—ญ, ์ค‘๊ฐ„์–ธ์–ด์—์„œ ๋ชฉ์  ์–ธ์–ด๋กœ ๋ฒˆ์—ญ
โ€“ High-level์— ์น˜์šฐ์นœ ์ค‘๊ฐ„ ์ฝ”๋“œ๋Š” ์†Œ์Šค ์–ธ์–ด์—์„œ IL๋กœ ๋ฒˆ์—ญ์ด ์‰ฌ์šด ๋ฐ˜๋ฉด IL์—์„œ
๋ชฉ์  ์–ธ์–ด๋กœ ๋ฒˆ์—ญ์ด ์–ด๋ ค์›€
โ€“ Low-level ์— ๊ฐ€๊นŒ์šด ๊ฒƒ์€ ๋ฐ˜๋Œ€ ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚จ
โ€ข ์ธํ„ฐํ”„๋ฆฌํ…Œ์ด์…˜(Interpretation)
โ€“ Abstract machine code๊ฐ€ ๊ฐ€์žฅ ์šฐ์ˆ˜
โ€“ Postfix ํ‘œํ˜„๋„ operand stack์„ ์ด์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ interpretation์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ
โ€“ Tree ๊ตฌ์กฐ ์ฝ”๋“œ๋Š” tree ๊ตฌ์กฐ์ƒ interpretation์— ๊ฐ€์žฅ ๋งŽ์€ ๊ฒฐํ•จ์„ ๋ณด์ž„
โ€ข ์ตœ์ ํ™”(Optimization)
โ€“ ์‰ฝ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” quadruple์ด ํšจ๊ณผ์ ์ด๋ฉฐ tree ๊ตฌ์กฐ๋„ ๊ณ ๊ธ‰ ์–ธ์–ด์˜
์ œ์–ด ๊ตฌ์กฐ๋ฅผ ๋‚ดํฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ tree์˜ ์žฌ๊ตฌ์„ฑ์ด ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— optimization์— ์ 
ํ•ฉํ•œ ํ˜•ํƒœ
โ€“ Postfix ํ‘œํ˜„์ด๋‚˜ triple ํ‘œํ˜„์€ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์œ„์น˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ๋•Œ๋ฌธ์—
optimization์— ๋ถ€์ ํ•ฉ
3. ์™ธ๋ถ€ ํ‘œํ˜„์„ฑ (External representation)
โ€ข Tree ๊ตฌ์กฐ code๋งŒ์ด ์„ ํ˜• ๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ ๊ด€๊ณ„๋กœ ๋‹จ์ ์„ ๋‚˜ํƒ€๋ƒ„
4. ํ™•์žฅ์„ฑ(Extensibility)
โ€ข ๋น„๊ต์  ๋ชจ๋“  ์ค‘๊ฐ„ ์–ธ์–ด๋“ค์ด ์ข‹์€ ํŽธ
โ€ข Abstract Machine Code๋งŒ ์•ฝ๊ฐ„์˜ ๊ฒฐํ•จ
Compiler Lecture Note, Intermediate Language Page 24
5. ์ด์‹์„ฑ(Portability)
โ€ข ํฌ๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ธฐ๊ณ„ ์ข…์†์„ฑ๊ณผ ์–ธ์–ด ์ข…์†์„ฑ์˜ ๋ถ„๋ช…ํ•œ ๊ตฌ๋ถ„์„ฑ์—์„œ๋Š”
TCOL๊ณผ ๊ฐ€์ƒ ๊ธฐ๊ณ„ ์ฝ”๋“œ๊ฐ€ ๊ฐ€์žฅ ์šฐ์ˆ˜
โ€ข ์†Œ์Šค ์–ธ์–ด์— ๊ฐ€๊นŒ์šด ๊ณ ๊ธ‰ ํ‘œํ˜„์ธ postfix ํ‘œํ˜„๊ณผ AST๋Š” ๋ถ€์ ๋‹น
โ€ข Intermediate Language์˜ ๋น„๊ต
Compiler Lecture Note, Intermediate Language Page 25
IL
Criteria
Polish
Notation
Three Address
Code
Tree
Structured
Abstract
Machine
CodePost IR Quadra Triple AST TCOL
Intermediate level C B B B C A B
efficient
processing
source to IL
translation
A C B B A B C
IL to target
translation
C A B B C A A
interpretation A B B B C C A
optimization C B A C A A B
external representation B B A B C B A
extensibility A A A A A A B
clean separation C B B B C A A
A : ์ข‹๋‹ค
B : ๋ณดํ†ต์ด๋‹ค
C : ๋‚˜์˜๋‹ค

More Related Content

Similar to Ch09

Chaper24 languages high_and_low
Chaper24 languages high_and_lowChaper24 languages high_and_low
Chaper24 languages high_and_lowKyungryul KIM
ย 
[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C# ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C#  ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C#  ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C# ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„Sungkyun Kim
ย 
llvm ์†Œ๊ฐœ
llvm ์†Œ๊ฐœllvm ์†Œ๊ฐœ
llvm ์†Œ๊ฐœMinhyuk Kwon
ย 
๋ฆฌ๋ˆ…์Šค ๋ฐ์Šคํฌํ†ฑ์˜ ํ•œ๊ตญ์–ด ์ž…๋ ฅ ๊ฐœ์š”
๋ฆฌ๋ˆ…์Šค ๋ฐ์Šคํฌํ†ฑ์˜ ํ•œ๊ตญ์–ด ์ž…๋ ฅ ๊ฐœ์š”๋ฆฌ๋ˆ…์Šค ๋ฐ์Šคํฌํ†ฑ์˜ ํ•œ๊ตญ์–ด ์ž…๋ ฅ ๊ฐœ์š”
๋ฆฌ๋ˆ…์Šค ๋ฐ์Šคํฌํ†ฑ์˜ ํ•œ๊ตญ์–ด ์ž…๋ ฅ ๊ฐœ์š”Changwoo Ryu
ย 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning CompilerTae Young Lee
ย 
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•Daniel Kim
ย 
Korean input overview in the linux desktop
Korean input overview in the linux desktopKorean input overview in the linux desktop
Korean input overview in the linux desktopgnomekr
ย 
(๊ฒŒ์ž„๊ฐœ๋ฐœ์„์œ„ํ•œ) printf("Hello World!"); ๊ทธ ์ด์ƒ์˜ ์ฝ˜์†” ํ”„๋กœ๊ทธ๋ž˜๋ฐ
(๊ฒŒ์ž„๊ฐœ๋ฐœ์„์œ„ํ•œ) printf("Hello World!"); ๊ทธ ์ด์ƒ์˜ ์ฝ˜์†” ํ”„๋กœ๊ทธ๋ž˜๋ฐ(๊ฒŒ์ž„๊ฐœ๋ฐœ์„์œ„ํ•œ) printf("Hello World!"); ๊ทธ ์ด์ƒ์˜ ์ฝ˜์†” ํ”„๋กœ๊ทธ๋ž˜๋ฐ
(๊ฒŒ์ž„๊ฐœ๋ฐœ์„์œ„ํ•œ) printf("Hello World!"); ๊ทธ ์ด์ƒ์˜ ์ฝ˜์†” ํ”„๋กœ๊ทธ๋ž˜๋ฐNDOORS
ย 
05_์ปดํŒŒ์ผ๋Ÿฌ์ตœ์ ํ™”์ „๋žต(1)
05_์ปดํŒŒ์ผ๋Ÿฌ์ตœ์ ํ™”์ „๋žต(1)05_์ปดํŒŒ์ผ๋Ÿฌ์ตœ์ ํ™”์ „๋žต(1)
05_์ปดํŒŒ์ผ๋Ÿฌ์ตœ์ ํ™”์ „๋žต(1)noerror
ย 
Assembly ์Šคํ„ฐ๋”” 1
Assembly ์Šคํ„ฐ๋”” 1Assembly ์Šคํ„ฐ๋”” 1
Assembly ์Šคํ„ฐ๋”” 1Jinkyoung Kim
ย 
6. code level reversing
6. code level reversing6. code level reversing
6. code level reversingYoungjun Chang
ย 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPSeungmo Koo
ย 
๊ฐ•์ขŒ 04 ํŽŒ์›จ์–ด ๊ตฌ์กฐ ์„ค๊ณ„
๊ฐ•์ขŒ 04 ํŽŒ์›จ์–ด ๊ตฌ์กฐ ์„ค๊ณ„๊ฐ•์ขŒ 04 ํŽŒ์›จ์–ด ๊ตฌ์กฐ ์„ค๊ณ„
๊ฐ•์ขŒ 04 ํŽŒ์›จ์–ด ๊ตฌ์กฐ ์„ค๊ณ„chcbaram
ย 
์ด๊ธฐ์ข… ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ๋ฅผ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ์˜์ƒ์ฒ˜๋ฆฌ ์˜คํ”ˆ์†Œ์Šค
์ด๊ธฐ์ข… ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ๋ฅผ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ์˜์ƒ์ฒ˜๋ฆฌ ์˜คํ”ˆ์†Œ์Šค์ด๊ธฐ์ข… ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ๋ฅผ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ์˜์ƒ์ฒ˜๋ฆฌ ์˜คํ”ˆ์†Œ์Šค
์ด๊ธฐ์ข… ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ๋ฅผ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ์˜์ƒ์ฒ˜๋ฆฌ ์˜คํ”ˆ์†Œ์ŠคSeunghwa Song
ย 
The Future of C# and .NET Framework
The Future of C# and .NET FrameworkThe Future of C# and .NET Framework
The Future of C# and .NET Framework๋ช…์‹  ๊น€
ย 
kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340Samsung Electronics
ย 
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ฃผ์š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ฃผ์š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ฃผ์š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ฃผ์š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ดBizmerce Corp
ย 
์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐChris Ohk
ย 
Assembly ์Šคํ„ฐ๋”” 2
Assembly ์Šคํ„ฐ๋”” 2Assembly ์Šคํ„ฐ๋”” 2
Assembly ์Šคํ„ฐ๋”” 2Jinkyoung Kim
ย 
[170403 2์ฃผ์ฐจ]C์–ธ์–ด A๋ฐ˜
[170403 2์ฃผ์ฐจ]C์–ธ์–ด A๋ฐ˜[170403 2์ฃผ์ฐจ]C์–ธ์–ด A๋ฐ˜
[170403 2์ฃผ์ฐจ]C์–ธ์–ด A๋ฐ˜arundine
ย 

Similar to Ch09 (20)

Chaper24 languages high_and_low
Chaper24 languages high_and_lowChaper24 languages high_and_low
Chaper24 languages high_and_low
ย 
[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C# ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C#  ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C#  ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
[KGC2014] ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ์žก๊ธฐ ์œ„ํ•œ C++ - C# ํ˜ผํ•ฉ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
ย 
llvm ์†Œ๊ฐœ
llvm ์†Œ๊ฐœllvm ์†Œ๊ฐœ
llvm ์†Œ๊ฐœ
ย 
๋ฆฌ๋ˆ…์Šค ๋ฐ์Šคํฌํ†ฑ์˜ ํ•œ๊ตญ์–ด ์ž…๋ ฅ ๊ฐœ์š”
๋ฆฌ๋ˆ…์Šค ๋ฐ์Šคํฌํ†ฑ์˜ ํ•œ๊ตญ์–ด ์ž…๋ ฅ ๊ฐœ์š”๋ฆฌ๋ˆ…์Šค ๋ฐ์Šคํฌํ†ฑ์˜ ํ•œ๊ตญ์–ด ์ž…๋ ฅ ๊ฐœ์š”
๋ฆฌ๋ˆ…์Šค ๋ฐ์Šคํฌํ†ฑ์˜ ํ•œ๊ตญ์–ด ์ž…๋ ฅ ๊ฐœ์š”
ย 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning Compiler
ย 
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•
ย 
Korean input overview in the linux desktop
Korean input overview in the linux desktopKorean input overview in the linux desktop
Korean input overview in the linux desktop
ย 
(๊ฒŒ์ž„๊ฐœ๋ฐœ์„์œ„ํ•œ) printf("Hello World!"); ๊ทธ ์ด์ƒ์˜ ์ฝ˜์†” ํ”„๋กœ๊ทธ๋ž˜๋ฐ
(๊ฒŒ์ž„๊ฐœ๋ฐœ์„์œ„ํ•œ) printf("Hello World!"); ๊ทธ ์ด์ƒ์˜ ์ฝ˜์†” ํ”„๋กœ๊ทธ๋ž˜๋ฐ(๊ฒŒ์ž„๊ฐœ๋ฐœ์„์œ„ํ•œ) printf("Hello World!"); ๊ทธ ์ด์ƒ์˜ ์ฝ˜์†” ํ”„๋กœ๊ทธ๋ž˜๋ฐ
(๊ฒŒ์ž„๊ฐœ๋ฐœ์„์œ„ํ•œ) printf("Hello World!"); ๊ทธ ์ด์ƒ์˜ ์ฝ˜์†” ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย 
05_์ปดํŒŒ์ผ๋Ÿฌ์ตœ์ ํ™”์ „๋žต(1)
05_์ปดํŒŒ์ผ๋Ÿฌ์ตœ์ ํ™”์ „๋žต(1)05_์ปดํŒŒ์ผ๋Ÿฌ์ตœ์ ํ™”์ „๋žต(1)
05_์ปดํŒŒ์ผ๋Ÿฌ์ตœ์ ํ™”์ „๋žต(1)
ย 
Assembly ์Šคํ„ฐ๋”” 1
Assembly ์Šคํ„ฐ๋”” 1Assembly ์Šคํ„ฐ๋”” 1
Assembly ์Šคํ„ฐ๋”” 1
ย 
6. code level reversing
6. code level reversing6. code level reversing
6. code level reversing
ย 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
ย 
๊ฐ•์ขŒ 04 ํŽŒ์›จ์–ด ๊ตฌ์กฐ ์„ค๊ณ„
๊ฐ•์ขŒ 04 ํŽŒ์›จ์–ด ๊ตฌ์กฐ ์„ค๊ณ„๊ฐ•์ขŒ 04 ํŽŒ์›จ์–ด ๊ตฌ์กฐ ์„ค๊ณ„
๊ฐ•์ขŒ 04 ํŽŒ์›จ์–ด ๊ตฌ์กฐ ์„ค๊ณ„
ย 
์ด๊ธฐ์ข… ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ๋ฅผ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ์˜์ƒ์ฒ˜๋ฆฌ ์˜คํ”ˆ์†Œ์Šค
์ด๊ธฐ์ข… ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ๋ฅผ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ์˜์ƒ์ฒ˜๋ฆฌ ์˜คํ”ˆ์†Œ์Šค์ด๊ธฐ์ข… ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ๋ฅผ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ์˜์ƒ์ฒ˜๋ฆฌ ์˜คํ”ˆ์†Œ์Šค
์ด๊ธฐ์ข… ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ๋ฅผ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฐ ์˜์ƒ์ฒ˜๋ฆฌ ์˜คํ”ˆ์†Œ์Šค
ย 
The Future of C# and .NET Framework
The Future of C# and .NET FrameworkThe Future of C# and .NET Framework
The Future of C# and .NET Framework
ย 
kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340
ย 
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ฃผ์š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ฃผ์š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ฃผ์š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ฃผ์š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
ย 
์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
์ธํ”„์ฝ˜ 2022 - Rust ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ย 
Assembly ์Šคํ„ฐ๋”” 2
Assembly ์Šคํ„ฐ๋”” 2Assembly ์Šคํ„ฐ๋”” 2
Assembly ์Šคํ„ฐ๋”” 2
ย 
[170403 2์ฃผ์ฐจ]C์–ธ์–ด A๋ฐ˜
[170403 2์ฃผ์ฐจ]C์–ธ์–ด A๋ฐ˜[170403 2์ฃผ์ฐจ]C์–ธ์–ด A๋ฐ˜
[170403 2์ฃผ์ฐจ]C์–ธ์–ด A๋ฐ˜
ย 

More from Hankyo

01.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๊ณตํ†ต๊ธฐ๋ฐ˜)
01.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๊ณตํ†ต๊ธฐ๋ฐ˜)01.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๊ณตํ†ต๊ธฐ๋ฐ˜)
01.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๊ณตํ†ต๊ธฐ๋ฐ˜)Hankyo
ย 
01.๋ชจ๋ฐ”์ผ ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋ก 
01.๋ชจ๋ฐ”์ผ ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋ก 01.๋ชจ๋ฐ”์ผ ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋ก 
01.๋ชจ๋ฐ”์ผ ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋ก Hankyo
ย 
01.๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ๊ต์œก๊ต์žฌ
01.๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ๊ต์œก๊ต์žฌ01.๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ๊ต์œก๊ต์žฌ
01.๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ๊ต์œก๊ต์žฌHankyo
ย 
01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌHankyo
ย 
07.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ ์„ธ๋ถ€ ์ ์šฉ๊ธฐ์ค€)
07.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ ์„ธ๋ถ€ ์ ์šฉ๊ธฐ์ค€)07.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ ์„ธ๋ถ€ ์ ์šฉ๊ธฐ์ค€)
07.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ ์„ธ๋ถ€ ์ ์šฉ๊ธฐ์ค€)Hankyo
ย 
06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,ํ•ด๋‹ต)
06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,ํ•ด๋‹ต)06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,ํ•ด๋‹ต)
06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,ํ•ด๋‹ต)Hankyo
ย 
06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,๋ฌธ์ œ)
06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,๋ฌธ์ œ)06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,๋ฌธ์ œ)
06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,๋ฌธ์ œ)Hankyo
ย 
05.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(์—…๋ฌด์ฒ˜๋ฆฌ,์—ฐ๊ณ„ํ†ตํ•ฉ)
05.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(์—…๋ฌด์ฒ˜๋ฆฌ,์—ฐ๊ณ„ํ†ตํ•ฉ)05.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(์—…๋ฌด์ฒ˜๋ฆฌ,์—ฐ๊ณ„ํ†ตํ•ฉ)
05.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(์—…๋ฌด์ฒ˜๋ฆฌ,์—ฐ๊ณ„ํ†ตํ•ฉ)Hankyo
ย 
04.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)04.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)Hankyo
ย 
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)Hankyo
ย 
04.๋ชจ๋ฐ”์ผ device api_์‹ค์Šต๊ต์žฌ
04.๋ชจ๋ฐ”์ผ device api_์‹ค์Šต๊ต์žฌ04.๋ชจ๋ฐ”์ผ device api_์‹ค์Šต๊ต์žฌ
04.๋ชจ๋ฐ”์ผ device api_์‹ค์Šต๊ต์žฌHankyo
ย 
04.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ
04.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ04.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ
04.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌHankyo
ย 
03.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)
03.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)03.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)
03.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)Hankyo
ย 
03.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)
03.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)03.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)
03.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)Hankyo
ย 
03.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(๋ชจ๋ฐ”์ผ ๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ์‹ค์Šต)
03.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(๋ชจ๋ฐ”์ผ ๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ์‹ค์Šต)03.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(๋ชจ๋ฐ”์ผ ๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ์‹ค์Šต)
03.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(๋ชจ๋ฐ”์ผ ๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ์‹ค์Šต)Hankyo
ย 
03.[์ฐธ๊ณ ]ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ๋ฐฉ๋ฒ•
03.[์ฐธ๊ณ ]ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ๋ฐฉ๋ฒ•03.[์ฐธ๊ณ ]ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ๋ฐฉ๋ฒ•
03.[์ฐธ๊ณ ]ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ๋ฐฉ๋ฒ•Hankyo
ย 
03.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
03.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ03.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
03.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌHankyo
ย 
02.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)
02.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)02.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)
02.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)Hankyo
ย 
02.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)
02.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)02.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)
02.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)Hankyo
ย 
02.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(ux component)
02.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(ux component)02.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(ux component)
02.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(ux component)Hankyo
ย 

More from Hankyo (20)

01.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๊ณตํ†ต๊ธฐ๋ฐ˜)
01.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๊ณตํ†ต๊ธฐ๋ฐ˜)01.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๊ณตํ†ต๊ธฐ๋ฐ˜)
01.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๊ณตํ†ต๊ธฐ๋ฐ˜)
ย 
01.๋ชจ๋ฐ”์ผ ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋ก 
01.๋ชจ๋ฐ”์ผ ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋ก 01.๋ชจ๋ฐ”์ผ ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋ก 
01.๋ชจ๋ฐ”์ผ ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋ก 
ย 
01.๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ๊ต์œก๊ต์žฌ
01.๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ๊ต์œก๊ต์žฌ01.๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ๊ต์œก๊ต์žฌ
01.๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ๊ต์œก๊ต์žฌ
ย 
01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
01.๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
ย 
07.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ ์„ธ๋ถ€ ์ ์šฉ๊ธฐ์ค€)
07.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ ์„ธ๋ถ€ ์ ์šฉ๊ธฐ์ค€)07.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ ์„ธ๋ถ€ ์ ์šฉ๊ธฐ์ค€)
07.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ ์„ธ๋ถ€ ์ ์šฉ๊ธฐ์ค€)
ย 
06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,ํ•ด๋‹ต)
06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,ํ•ด๋‹ต)06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,ํ•ด๋‹ต)
06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,ํ•ด๋‹ต)
ย 
06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,๋ฌธ์ œ)
06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,๋ฌธ์ œ)06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,๋ฌธ์ œ)
06.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(easy company,๋ฌธ์ œ)
ย 
05.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(์—…๋ฌด์ฒ˜๋ฆฌ,์—ฐ๊ณ„ํ†ตํ•ฉ)
05.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(์—…๋ฌด์ฒ˜๋ฆฌ,์—ฐ๊ณ„ํ†ตํ•ฉ)05.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(์—…๋ฌด์ฒ˜๋ฆฌ,์—ฐ๊ณ„ํ†ตํ•ฉ)
05.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(์—…๋ฌด์ฒ˜๋ฆฌ,์—ฐ๊ณ„ํ†ตํ•ฉ)
ย 
04.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)04.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
ย 
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
04.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(ํ™”๋ฉด์ฒ˜๋ฆฌ)
ย 
04.๋ชจ๋ฐ”์ผ device api_์‹ค์Šต๊ต์žฌ
04.๋ชจ๋ฐ”์ผ device api_์‹ค์Šต๊ต์žฌ04.๋ชจ๋ฐ”์ผ device api_์‹ค์Šต๊ต์žฌ
04.๋ชจ๋ฐ”์ผ device api_์‹ค์Šต๊ต์žฌ
ย 
04.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ
04.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ04.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ
04.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ
ย 
03.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)
03.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)03.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)
03.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)
ย 
03.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)
03.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)03.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)
03.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐฐ์น˜์ฒ˜๋ฆฌ)
ย 
03.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(๋ชจ๋ฐ”์ผ ๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ์‹ค์Šต)
03.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(๋ชจ๋ฐ”์ผ ๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ์‹ค์Šต)03.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(๋ชจ๋ฐ”์ผ ๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ์‹ค์Šต)
03.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(๋ชจ๋ฐ”์ผ ๊ณตํ†ต์ปดํฌ๋„ŒํŠธ ์‹ค์Šต)
ย 
03.[์ฐธ๊ณ ]ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ๋ฐฉ๋ฒ•
03.[์ฐธ๊ณ ]ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ๋ฐฉ๋ฒ•03.[์ฐธ๊ณ ]ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ๋ฐฉ๋ฒ•
03.[์ฐธ๊ณ ]ํ‘œ์ค€ํ”„๋ ˆ์ž„์›Œํฌ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ๋ฐฉ๋ฒ•
ย 
03.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
03.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ03.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
03.[์ฐธ๊ณ ]๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ
ย 
02.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)
02.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)02.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)
02.์‹คํ–‰ํ™˜๊ฒฝ ์‹ค์Šต๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)
ย 
02.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)
02.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)02.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)
02.์‹คํ–‰ํ™˜๊ฒฝ ๊ต์œก๊ต์žฌ(๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ)
ย 
02.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(ux component)
02.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(ux component)02.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(ux component)
02.๋ชจ๋ฐ”์ผ ์‹ค์Šต๊ต์žฌ(ux component)
ย 

Ch09

  • 1. Compiler Lecture Note, Intermediate Language Page 1 ์ œ 9 ์žฅ ์ค‘ ๊ฐ„ ์–ธ์–ด ์ปดํŒŒ์ผ๋Ÿฌ ์ž…๋ฌธ
  • 2. Compiler Lecture Note, Intermediate Language Page 2 Contents โ€ข Introduction โ€ข Polish Notation โ€ข Three Address Code โ€ข Tree Structured Code โ€ข Abstract Machine Code โ€ข Concluding Remarks
  • 3. Compiler Lecture Note, Intermediate Language Page 3 โ€ข Compiler Model Source Program Lexical Analyzer Syntax Analyzer Semantic Analyzer Intermediate Code Generator tokens AST Front-End Code Optimizer Target Code Generator IC Back-End IL Object Program Front-End- language dependant part Back-End - machine dependant part Introduction
  • 4. Compiler Lecture Note, Intermediate Language Page 4 โ€ข IL ์‚ฌ์šฉ์˜ ์žฅ์  โ€“ Compiler๋ฅผ ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋…๋ฆฝ์ ์ธ Modul๋“ค๋กœ ๊ตฌ์„ฑ โ€“ Compiler ์ž์ฒด์˜ portability ์ฆ๊ฐ€ โ€“ Easy Translation โ€ข ๊ณ ๊ธ‰ ์†Œ์Šค ์–ธ์–ด์™€ ์ €๊ธ‰ ๋ชฉ์  ์ฝ”๋“œ๊ฐ„์˜ semantic gap๋ฅผ ์ด์–ด์ฃผ๋Š” ๊ต๋Ÿ‰ ์—ญํ•  โ€“ ์ค‘๊ฐ„์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ optimization๋ฅผ ์ˆ˜ํ–‰ โ€ข ๊ธฐ๊ณ„์™€ ๋…๋ฆฝ์ ์ธ ์ตœ์ ํ™” ๊ฐ€๋Šฅ โ€ข ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๋€ ์ƒํƒœ์—์„œ ํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ํšจ์œจ์ ์œผ๋กœ ์ตœ์ ํ™” ์ˆ˜ํ–‰ โ€“ Interpretive compiling ์‹œ์Šคํ…œ์—์„œ interpreter๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹คํ–‰ โ€ข IL์‚ฌ์šฉ์˜ ๊ฒฐ์  โ€“ ๋ชฉ์  ์ฝ”๋“œ๋กœ ์ง์ ‘ ๋ฒˆ์—ญํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด ๋” ๋งŽ์ด ์†Œ์š” โ€“ ๋น„ํšจ์œจ์ ์ธ ์ฝ”๋“œ ์ƒ์‚ฐ โ€ข ์ค‘๊ฐ„ ์ฝ”๋“œ๋กœ๋ถ€ํ„ฐ ๋ชฉ์  ์ฝ”๋“œ๋กœ์˜ ๋ฒˆ์—ญ ๊ณผ์ • ํ•„์š” โ€ข ์ค‘๊ฐ„์–ธ์–ด ๋‹จ๊ณ„์—์„œ ๊ฐ„๋‹จํ•œ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ๊ทน๋ณต
  • 5. Compiler Lecture Note, Intermediate Language Page 5 โ€ข Two level Code Generation โ€ข ILS โ€“ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ์ž๋™ํ™”์— ์˜ํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ โ€“ ์†Œ์Šค ์–ธ์–ด์— ์˜์กด์ ์ด๋ฉฐ high level์ด๋‹ค. โ€ข ILT โ€“ ํ›„๋‹จ๋ถ€์˜ ์ž๋™ํ™”์— ์˜ํ•ด ๋ชฉ์ ๊ธฐ๊ณ„๋กœ์˜ ๋ฒˆ์—ญ์ด ๋งค์šฐ ์‰ฌ์šด ํ˜•ํƒœ โ€“ ๋ชฉ์ ๊ธฐ๊ณ„์— ์˜์กด์ ์ด๋ฉฐ low level์ด๋‹ค. โ€ข ILS to ILT โ€“ ILS์—์„œ ILT๋กœ์˜ ๋ฒˆ์—ญ์ด ์ฃผ๋œ ์ž‘์—…์ž„. Source Front-End ILS ILS-ILT ILT Back-End Target
  • 6. โ€ข IL์˜ ์ข…๋ฅ˜ โ€“ Polish Notation ๏ƒจ Prefix notation, IR โ€“ Three Address Code ๏ƒจ Triple, Quadruple, Indirect Triple โ€“ Tree Structured Code ๏ƒจ AST, TCOL, Diana โ€“ Abstract Machine Code ๏ƒจ P-code, EM-code, U-code, Bytecode Compiler Lecture Note, Intermediate Language Page 6
  • 7. Compiler Lecture Note, Intermediate Language Page 7 โ˜ž Polish mathematician Lucasiewiez invented the parenthesis-free notation. โ€ข Postfix(Suffix) Polish Notation โ€ข earliest IL โ€ข popular for interpreted language - SNOBOL, BASIC โ€“ general form : e1 e2 ... ek OP (k โ‰ฅ 1) where, OP : k_ary operator ei : any postfix expression (1 โ‰ค i โ‰ค k) Polish Notation
  • 8. Compiler Lecture Note, Intermediate Language Page 8 โ€“ example : if a then if c-d then a+c else a*c else a+b ใ€“ใ€‰a L1 BZ c d - L2 BZ a c + L3 BR L2: a c * L3 BR L1: a b + L3: โ€“ note 1) high level: source to IL - fast & easy translation IL to target - difficulty 2) easy evaluation - operand stack 3) optimization ๋ถ€์ ๋‹น - ๋‹ค๋ฅธ IL๋กœ์˜ translation ํ•„์š” 4) parentheses free notation - arithmetic expression โ€“ interpretive language์— ์ ํ•ฉ Source Translator Postfix Evaluator Result
  • 9. Compiler Lecture Note, Intermediate Language Page 9 โ€ข most popular IL, optimizing compiler โ€ข General form: A := B op C where, A : result address B, C : operand addresses op : operator (1) Quadruple - 4-tuple notation <operator>,<operand1>,<operand2>,<result> (2) Triple - 3-tuple notation <operator>,<operand1>,<operand2> (3) Indirect triple - execution order table & triples Three Address Code
  • 10. Compiler Lecture Note, Intermediate Language Page 10 โ€“ example โ€ข A โ† B + C * D / E โ€ข F โ† C * D Quadruple Triple Indirect Triple Operations Triple * C D T1 (1) * C D 1.(1) (1) * C D / T1 E T2 (2) / (1) E 2.(2) (2) / (1) E + B T2 T3 (3) + B (2) 3.(3) (3) + B (2) ๏‚ฌ T3 A (4) ๏‚ฌ A (3) 4.(4) (4) ๏‚ฌ A (3) * C D T4 (5) * C D 5.(1) (5) ๏‚ฌ F (1) ๏‚ฌ T4 F (6) ๏‚ฌ F (5) 6.(5)
  • 11. Compiler Lecture Note, Intermediate Language Page 11 โ€ข Note โ€ข Quadruple vs. Triple โ€“ quadruple - optimization ์šฉ์ด โ€“ triple - removal of temporary addresses โ‡’ Indirect Triple โ€ข extensive code optimization ์šฉ์ด โ€“ IL rearrange ๊ฐ€๋Šฅ (triple ์ œ์™ธ) โ€ข easy translation - source to IL โ€ข difficult to generate good code โ€“ quadruple to two-address machine โ€“ triple to three-address machine
  • 12. Compiler Lecture Note, Intermediate Language Page 12 โ€ข Abstract Syntax Tree โ€“ parse tree์—์„œ redundantํ•œ information ์ œ๊ฑฐ. โ€ข โ”Œ leaf node --- variable name, constant โ”” internal node --- operator โ€“ ์˜ˆ : a * b + c / d a[i] = exp; Tree Structured Code add divmul b ca d assign expindex ia
  • 13. Compiler Lecture Note, Intermediate Language Page 13 โ€ข Tree Structured Common Language(TCOL) โ€“ Variants of AST - containing the result of semantic analysis. Example) int a; float b; ... b = a + 1; AST TCOL add 1a assign b float assign b addi 1๏€ฎ a
  • 14. Compiler Lecture Note, Intermediate Language Page 14 Abstract Machine Code โ€ข Abstract Machine์„ ์ด์šฉํ•œ portable compiler์˜ ๋ชจ๋ธ โ€ข Abstract Machine์˜ ์„ค๊ณ„ โ€“ source language์˜ ๊ธฐ๋ณธ ์—ฐ์‚ฐ๊ณผ ๋ชจ๋“œ์— ๊ทผ๊ฑฐ โ€ข ๊ธฐ๋ณธ ์—ฐ์‚ฐ์€ source program์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„ ์ง ์ ‘์ ์ธ ์—ฐ์‚ฐ์— ๋Œ€์‘ โ€ข ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒ ๋ชจ๋“œ๋Š” source language์˜ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ˜• โ€ข ๊ธฐ๋ณธ์ ์ธ ๋ชจ๋“œ์™€ ์—ฐ์‚ฐ๋“ค์ด Abstract Machine์˜ ๋ช…๋ น์–ด๋ฅผ ๊ฒฐ์ • โ€“ ์‹ค์ œ ์ปดํ“จํ„ฐ์— ํšจ์œจ์ ์œผ๋กœ ์„ค์น˜ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋„ ๊ณ ๋ ค front-end back-end target machine abstract machine interpreter source program interface target code abstract machine code
  • 15. Compiler Lecture Note, Intermediate Language Page 15 โ€ข Motivation โ€ข โ”Œ rapid development of machine architectures โ”” proliferation of programming languages โ€“ portable & adaptable compiler design --- P_CODE โ€ข porting --- rewriting only back-end โ€“ compiler building system --- EM_CODE M front-ends N back-ends + M compilers for N target machines
  • 16. Compiler Lecture Note, Intermediate Language Page 16 โ€ข Pascal-P Code โ€“ Pascal compiler๋ฅผ ์ œ์ž‘ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ intermediate language โ€ข Pascal-P compiler โ€“ P-์ฝ”๋“œ์—์„œ ์‹ค์ œ ๊ธฐ๊ณ„๋กœ์˜ ๋ฒˆ์—ญ๊ธฐ ๋˜๋Š” P-code interpreter๋ฅผ ์‚ฌ์šฉํ•จ ์œผ๋กœ์จ ์‰ฝ๊ฒŒ ์ด์‹์ด ๊ฐ€๋Šฅ โ€“ ์†Œ์Šค ์–ธ์–ด๋กœ๋ถ€ํ„ฐ P-code๋กœ์˜ translation๊ณผ interpretation์ด ๋น„๊ต์  ์‰ฝ ๊ฒŒ ์„ค๊ณ„ โ€“ P-code์— ๋Œ€ํ•œ ๊ฐ€์ƒ ๊ธฐ๊ณ„๊ฐ€ P-๊ธฐ๊ณ„์ด๋ฉฐ, P-๊ธฐ๊ณ„๋„ ๋ชจ๋“  ์—ฐ์‚ฐ์ด ์Šคํƒ์—์„œ ํ–‰ํ•ด์ง€๋Š” ๊ฐ€์ƒ์ ์ธ ์Šคํƒ ๊ธฐ๊ณ„(hypothetical stack machine) Pascal P CompilerPascal Program P-code
  • 17. Compiler Lecture Note, Intermediate Language Page 17 โ€ข EM-code โ€“ ACK ์ค‘๊ฐ„ ์–ธ์–ด โ€ข ACK(Amsterdam Compiler Kit) โ€“ Algol ํ˜•ํƒœ์˜ ์†Œ์Šค ์–ธ์–ด์™€ ๋ฐ”์ดํŠธ ๊ธฐ๊ณ„ ํ˜•ํƒœ์˜ ๋ชฉ์  ๊ธฐ๊ณ„์— ์ ํ•ฉํ•œ EM-๊ธฐ๊ณ„๋ผ๋Š” ๊ฐ€์ƒ ๊ธฐ๊ณ„๋ฅผ ์„ค์ •ํ•˜๊ณ  ์–ธ์–ด์— ๋Œ€ํ•œ ์ „๋‹จ๋ถ€์™€ ๋ชฉ์  ๊ธฐ ๊ณ„์— ๋Œ€ํ•œ ํ›„๋‹จ๋ถ€๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‰ฝ ๊ฒŒ ์ œ์ž‘ํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ๊ธฐ๊ตฌ โ€“ ๊ฐ€์ƒ์ ์ธ ์Šคํƒ์˜ ๊ฐœ๋…์„ ๋‘” ๊ธฐ๊ณ„ ๊ตฌ์กฐ โ€“ ์†Œ์Šค ์–ธ์–ด๋กœ๋ถ€ํ„ฐ EM-์ฝ”๋“œ๋กœ์˜ ๋ฒˆ์—ญ๊ณผ EM-์ฝ”๋“œ์˜ ์ธํ„ฐํ”„๋ฆฌํ…Œ ์ด์…˜์ด ๋น„๊ต์  ์‰ฝ๊ฒŒ ์„ค๊ณ„ โ€“ EM-์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ œ์ž‘ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” EM-์ฝ”๋“œ์—์„œ ๋ชฉ์  ๊ธฐ๊ณ„๋กœ์˜ ๋ฒˆ์—ญ๊ธฐ ๋˜๋Š” EM-์ฝ”๋“œ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋งŒ์„ ๊ตํ™˜ํ•จ์œผ๋กœ ์จ ์‰ฝ๊ฒŒ ์ด์‹ ๊ฐ€๋Šฅ
  • 18. โ€ข U-code โ€“ Portable Pascal compiler์—์„œ ์‚ฌ์šฉํ•œ ์ค‘๊ฐ„ ํ˜•ํƒœ โ€“ ๊ฐ€์ƒ์ ์ธ ์Šคํƒ ๊ธฐ๊ณ„์— ๊ทผ๊ฑฐ โ€ข ๋ชจ๋“  ๋ช…๋ น์–ด๋“ค์€ ๊ฐ€์ƒ ์Šคํƒ์„ ๊ธฐ์ค€์œผ๋กœ ์ •์˜ โ€ข ์Šคํƒ์—์„œ ๋ชจ๋“  ์—ฐ์‚ฐ ์ˆ˜ํ–‰ โ€“ ์Šคํƒ ๊ธฐ๊ณ„๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ์„ ์Šคํƒ์—์„œ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ๋ณ€์ˆ˜๋“ค์˜ ์ฃผ์†Œ ๋Š” ์Šคํƒ์— ๋Œ€ํ•œ ์ฃผ์†Œ ๋ถ€์—ฌ ๋ฐฉ๋ฒ• ์ด์šฉ โ€ข ๋ชจ๋“  ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ฃผ์†Œ๋Š” ๋‘ ๊ฐœ์˜ ํ•ญ๋ชฉ(B, O)์˜ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ โ€“ B : ๋ธ”๋ก์˜ ๋ฒˆํ˜ธ โ€“ O : ๋ธ”๋ก์˜ ์‹œ์ž‘์œผ๋กœ๋ถ€ํ„ฐ์˜ offset โ€“ ์˜ˆ โ€“ ๋ธ”๋ก ๋ฒˆํ˜ธ๋Š” ํ”„๋กœ๊ทธ๋žจ main์ด 1, procedure P๊ฐ€ 2, procedure Q๊ฐ€ 3 โ€“ procedure Q์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜ i์™€ j์˜ ์ฃผ์†Œ๋Š” ๊ฐ๊ฐ (3, 1)๊ณผ (3, 2)๋กœ ํ‘œํ˜„ Compiler Lecture Note, Intermediate Language Page 18 program main procedure P procedure Q var i : integer; j : boolean;
  • 19. โ€ข U-code ๋ช…๋ น์–ด๋“ค์˜ ํ˜•ํƒœ์™€ ๊ธฐ๋Šฅ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ 1. ๋‹จ์ผ ๋ช…๋ น์–ด โ‡’ notop, neg 2. ์ด์ง„ ๋ช…๋ น์–ด โ‡’ add, sub, mult, divop, nodop, swp andop, orop, gt, lt, ge, le, eq, ne 3. ์Šคํƒ ์šด์˜ ๋ช…๋ น์–ด โ‡’ lod, str, ldc, ldr 4. ์ œ์–ด ํ๋ฆ„ ๋ช…๋ น์–ด โ‡’ ujp, tjp, fjp 5. ๋ฒ”์œ„ ๊ฒ€์‚ฌ ๋ช…๋ น์–ด โ‡’ chkh, chkl 6. ๊ฐ„์ ‘ ์ฃผ์†Œ ๋ช…๋ น์–ด โ‡’ ixa, sta 7. procedure ๋ช…๋ น์–ด โ‡’ cal, ret, ldp, proc, endop 8. ๊ธฐํƒ€ ๋ช…๋ น์–ด โ‡’ bgn, sym Compiler Lecture Note, Intermediate Language Page 19
  • 20. โ€ข U-code๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์˜ ์ „์ฒด ๊ตฌ์กฐ โ€“ ๋จผ์ € global variable์˜ ์†์„ฑ์ด ๋‚˜์˜ค๋ฉฐ, ๊ทธ ๋‹ค์Œ์— procedure์˜ code๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋งˆ์ง€๋ง‰์— ์ฃผ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ code๊ฐ€ ๋‚˜์˜ด โ€“ ํ•˜๋‚˜์˜ procedure๋Š” local variable์˜ ์†์„ฑ๊ณผ code๋กœ ๊ตฌ์„ฑ โ€“ ๋งจ ์ฒ˜์Œ, bgn(begin)์œผ๋กœ ์ œ์–ด๊ฐ€ ๋„˜์–ด์™€ ์‹คํ–‰์ด ์‹œ์ž‘ Compiler Lecture Note, Intermediate Language Page 20 sym(s) global variable(s) <name> proc sym(s) for procedure codes for procedure ยทยทยท endop bgn codes for main program ยทยทยท endop
  • 21. โ€ข Bytecode โ€“ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ์ง€์›ํ•˜๋Š” IL๋กœ์„œ ์ด๊ธฐ์ข…๊ฐ„์˜ ์‹คํ–‰ ํ™˜๊ฒฝ ์— ์ ํ•ฉํ•˜๋„๋ก ์„ค๊ณ„๋œ ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ๊ฐ€์ƒ ๊ธฐ๊ณ„ ์ฝ”๋“œ โ€“ Java compiler โ€ข Java ํ”„๋กœ๊ทธ๋žจ์„ ์ž…๋ ฅ ๋ฐ›์•„ JVM(Java Virtual Machine)์˜ ๋ช…๋ น์–ด ์ง‘ํ•ฉ์ธ byetcode ์ƒ์„ฑ โ€ข Intermediate code ํ˜•ํƒœ์ธ bytecode๋Š” ์ด๊ธฐ์ข…๊ฐ„์˜ ์‹คํ–‰ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•˜๋„ ๋ก ์„ค๊ณ„๋˜์–ด portability๊ณผ ์œ ์—ฐ์„ฑ์ด ๋†’๋‹ค. โ€ข interpreter ๋ฐฉ์‹๊ณผ JIT(Just-In-Time) compiler ๋ฐฉ์‹์— ์˜ํ•ด์„œ ์‹คํ–‰ Compiler Lecture Note, Intermediate Language Page 21 Java CompilerJava Program Bytecode JVM ์‹คํ–‰ ๊ฒฐ๊ณผ
  • 22. โ€“ Bytecode๋Š” ์ผ๋ฐ˜์ ์ธ Abstract Machine Code์˜ ํŠน์ง•์„ ๋ชจ๋‘ ํฌํ•จ โ€“ Bytecode ๋งŒ์˜ ํŠน์ง• โ€ข ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์ „์†ก ํšจ์œจ์„ ์œ„ํ•ด code๋ฅผ ๊ฐ€๋Šฅํ•œ ์ž‘๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์„ค๊ณ„ โ€ข Java language์˜ ๊ธฐ๋Šฅ์„ ๋ฐ˜์˜ํ•˜๋Š” ๋ช…๋ น์–ด๊ฐ€ ์กด์žฌ โ€“ ๋ฐฐ์—ด, ํด๋ž˜์Šค, ์˜ˆ์™ธ, ์Šค๋ ˆ๋“œ ๋“ฑ์„ ์ง์ ‘ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด ํฌํ•จ โ€ข ์ž๋ฃŒํ˜•์— ๋”ฐ๋ผ์„œ ๋ช…๋ น์–ด๊ฐ€ ๊ฐ๊ธฐ ๋”ฐ๋กœ ์กด์žฌ โ€“ ex) iadd ๋Š” int ๋ง์…ˆ, fadd๋Š” float ๋ง์…ˆ โ€ข ๋ณตํ•ฉ๊ธฐ๋Šฅ์„ ๊ฐ–๋Š” ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณต โ€“ ex) pop2๋Š” stack์—์„œ ์—ฐ์†ํ•ด์„œ ๋‘ ๋ฒˆ์„ popํ•˜๋Š” ๊ธฐ๋Šฅ Compiler Lecture Note, Intermediate Language Page 22
  • 23. โ€ข IL์˜ 4๊ฐ€์ง€ ๋ถ„๋ฅ˜ โ€“ Polish Notation ๏ƒจ Postfix notation, IR โ€“ Three Address Code ๏ƒจ Triple, Quadruple, Indirect Triple โ€“ Tree Structured Code ๏ƒจ AST, TCOL, Diana โ€“ Abstract Machine Code ๏ƒจ P-code, EM-code, U-code, Bytecode โ€ข IL์ด ๊ฐ–์ถ”์–ด์•ผ ํ•  ์š”๊ฑด 1. ์ค‘๊ฐ„ ๋ ˆ๋ฒจ์„ฑ(Intermediate level) โ€ข ์†Œ์Šค ์–ธ์–ด์™€ ๋น„๊ตํ•ด์„œ๋Š” low-level์ด๊ณ  ๋ชฉ์  ๊ธฐ๊ณ„์™€ ๋น„๊ตํ•ด์„œ๋Š” high- level์˜ ์„ฑ๊ฒฉ์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ์†์„ฑ์„ ์˜๋ฏธ โ€ข IL์ด ๋„ˆ๋ฌด ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์ณ ์žˆ์œผ๋ฉด IL๊ณผ ๋‹ค๋ฅธ ํ•œ์ชฝ๊ณผ์˜ ์˜๋ฏธ์  ์ฐจ์ด๊ฐ€ ์ปค์ ธ ๋ฒˆ์—ญ์ด ์–ด๋ ค์›Œ์ง€๋ฉฐ ๋˜ํ•œ ์ด์‹์„ฑ ๊ฒฐ์—ฌ โ€“ Postfix polish notation๊ณผ syntax tree๋Š” high-level โ€“ Triple, quadruple๋Š” ๋น„๊ต์  high-level โ€“ Abstract Machine Code ๋Š” ๋น„๊ต์  low-level โ€“ TCOL๋งŒ์ด ๋น„๊ต์  intermediate level์ด ์ข‹์€ ์–ธ์–ด Compiler Lecture Note, Intermediate Language Page 23
  • 24. 2. ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ์˜ ์ ํ•ฉ์„ฑ(Efficient processing) โ€ข ์†Œ์Šค ์–ธ์–ด์—์„œ ์ค‘๊ฐ„ ์–ธ์–ด๋กœ ๋ฒˆ์—ญ, ์ค‘๊ฐ„์–ธ์–ด์—์„œ ๋ชฉ์  ์–ธ์–ด๋กœ ๋ฒˆ์—ญ โ€“ High-level์— ์น˜์šฐ์นœ ์ค‘๊ฐ„ ์ฝ”๋“œ๋Š” ์†Œ์Šค ์–ธ์–ด์—์„œ IL๋กœ ๋ฒˆ์—ญ์ด ์‰ฌ์šด ๋ฐ˜๋ฉด IL์—์„œ ๋ชฉ์  ์–ธ์–ด๋กœ ๋ฒˆ์—ญ์ด ์–ด๋ ค์›€ โ€“ Low-level ์— ๊ฐ€๊นŒ์šด ๊ฒƒ์€ ๋ฐ˜๋Œ€ ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚จ โ€ข ์ธํ„ฐํ”„๋ฆฌํ…Œ์ด์…˜(Interpretation) โ€“ Abstract machine code๊ฐ€ ๊ฐ€์žฅ ์šฐ์ˆ˜ โ€“ Postfix ํ‘œํ˜„๋„ operand stack์„ ์ด์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ interpretation์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ โ€“ Tree ๊ตฌ์กฐ ์ฝ”๋“œ๋Š” tree ๊ตฌ์กฐ์ƒ interpretation์— ๊ฐ€์žฅ ๋งŽ์€ ๊ฒฐํ•จ์„ ๋ณด์ž„ โ€ข ์ตœ์ ํ™”(Optimization) โ€“ ์‰ฝ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” quadruple์ด ํšจ๊ณผ์ ์ด๋ฉฐ tree ๊ตฌ์กฐ๋„ ๊ณ ๊ธ‰ ์–ธ์–ด์˜ ์ œ์–ด ๊ตฌ์กฐ๋ฅผ ๋‚ดํฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ tree์˜ ์žฌ๊ตฌ์„ฑ์ด ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— optimization์— ์  ํ•ฉํ•œ ํ˜•ํƒœ โ€“ Postfix ํ‘œํ˜„์ด๋‚˜ triple ํ‘œํ˜„์€ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์œ„์น˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ๋•Œ๋ฌธ์— optimization์— ๋ถ€์ ํ•ฉ 3. ์™ธ๋ถ€ ํ‘œํ˜„์„ฑ (External representation) โ€ข Tree ๊ตฌ์กฐ code๋งŒ์ด ์„ ํ˜• ๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ ๊ด€๊ณ„๋กœ ๋‹จ์ ์„ ๋‚˜ํƒ€๋ƒ„ 4. ํ™•์žฅ์„ฑ(Extensibility) โ€ข ๋น„๊ต์  ๋ชจ๋“  ์ค‘๊ฐ„ ์–ธ์–ด๋“ค์ด ์ข‹์€ ํŽธ โ€ข Abstract Machine Code๋งŒ ์•ฝ๊ฐ„์˜ ๊ฒฐํ•จ Compiler Lecture Note, Intermediate Language Page 24
  • 25. 5. ์ด์‹์„ฑ(Portability) โ€ข ํฌ๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ธฐ๊ณ„ ์ข…์†์„ฑ๊ณผ ์–ธ์–ด ์ข…์†์„ฑ์˜ ๋ถ„๋ช…ํ•œ ๊ตฌ๋ถ„์„ฑ์—์„œ๋Š” TCOL๊ณผ ๊ฐ€์ƒ ๊ธฐ๊ณ„ ์ฝ”๋“œ๊ฐ€ ๊ฐ€์žฅ ์šฐ์ˆ˜ โ€ข ์†Œ์Šค ์–ธ์–ด์— ๊ฐ€๊นŒ์šด ๊ณ ๊ธ‰ ํ‘œํ˜„์ธ postfix ํ‘œํ˜„๊ณผ AST๋Š” ๋ถ€์ ๋‹น โ€ข Intermediate Language์˜ ๋น„๊ต Compiler Lecture Note, Intermediate Language Page 25 IL Criteria Polish Notation Three Address Code Tree Structured Abstract Machine CodePost IR Quadra Triple AST TCOL Intermediate level C B B B C A B efficient processing source to IL translation A C B B A B C IL to target translation C A B B C A A interpretation A B B B C C A optimization C B A C A A B external representation B B A B C B A extensibility A A A A A A B clean separation C B B B C A A A : ์ข‹๋‹ค B : ๋ณดํ†ต์ด๋‹ค C : ๋‚˜์˜๋‹ค