jjryu 2013. 7. 25. 12:56

단계적으로 기계어에 가까운 표현

모두 점프문(jump statement)

제어 구조

연산자에 부호

모두 포인터

구조체

배열

포인터


트리 구조

중간 표현 노드


three-address code

Quadruple



문장(Stmt)의 리스트


Assign -> Stmt

CJump -> Stmt

.cond() // Expr

Jump -> Stmt

.label()

Return -> Stmt

.expr()

LabelStmt -> Stmt

.label()

Expr(식)

.type()

.asmValue() // ImmediateValue

Uni -> Expr

e.g. .. notl %eax


.expr()

Bin -> Expr

e.g. .. push %eax .. pop %ecx .. addl %ecx, %eax


.op()

.left() // Expr

.right() // Expr

Mem -> Expr // 디레퍼런스

Var -> Expr // 변수 참조

.memref()

Call -> Expr

.isStaticCall()

.function()

.expr()

.args()

.numArgs()

Int -> Expr

movl $n, %eax


.value()

Str -> Expr