Intermediate Representation
int main() { int a; int b; int c; a = 5; if(a == 1) b = 6; else b = 8; c = b; return 0; }
Пример промежуточного представления после фазы MIR Lower
==== BasicBlock 1 Pred() Succ(2) next 2
$L1: (refs=0)
{-4}, {-7} = START _main
==== BasicBlock 2 Pred(1) Succ(4,3) prev 1 next 3
_main: (refs=1)
ENTERFUNC
_a = ASSIGN 5
t272 = CMP(EQ) _a, 1
CBRANCH(EQ) t272, $L7, $L6
==== BasicBlock 3 Pred(2) Succ(5) prev 2 next 4
$L7: (refs=1)
_b = ASSIGN 6
GOTO $L8
==== BasicBlock 4 Pred(2) Succ(5) prev 3 next 5
$L6: (refs=1)
_b = ASSIGN 8
GOTO $L8
==== BasicBlock 5 Pred(4,3) Succ(7) prev 4 next 6
$L8: (refs=2)
_c = ASSIGN _b
RET 0, $L3
==== BasicBlock 6 Pred() Succ() prev 5 next 7
$L5: (refs=0)
UNWIND
==== BasicBlock 7 Pred(5) Succ(8) prev 6 next 8
$L3: (refs=1)
EXITFUNC
==== BasicBlock 8 Pred(7) Succ() prev 7
$L2: (refs=0)
END {-4}
Пример промежуточного представления после фазы Ssa Info Construction
==== BasicBlock 1 Pred() Succ(2) next 2
$L1: (refs=0)
{-4}, {-7}, {-6}<1> = START _main
==== BasicBlock 2 Pred(1) Succ(4,3) prev 1 next 3
_main: (refs=1)
ENTERFUNC
_a<2> = ASSIGN 5
t272 = CMP(EQ) _a<2>, 1
CBRANCH(EQ) t272, $L7, $L6
==== BasicBlock 3 Pred(2) Succ(5) prev 2 next 4
$L7: (refs=1)
_b<3> = ASSIGN 6
GOTO $L8
==== BasicBlock 4 Pred(2) Succ(5) prev 3 next 5
$L6: (refs=1)
_b<4> = ASSIGN 8
GOTO $L8
==== BasicBlock 5 Pred(4,3) Succ(8) prev 4 next 6
$L8: (refs=2)
_b<6> = PHI _b<4>, _b<3>
_c<5> = ASSIGN _b<6>
RET 0, $L3
==== BasicBlock 6 Pred() Succ(7) prev 5 next 7
$L5: (refs=0)
GOTO {-4}, $L10
==== BasicBlock 7 Pred(6) Succ() prev 6 next 8
$L10: (refs=1)
UNWIND
==== BasicBlock 8 Pred(5) Succ(9) prev 7 next 9
$L3: (refs=1)
GOTO {-4}, $L11
==== BasicBlock 9 Pred(8) Succ(10) prev 8 next 10
$L11: (refs=1)
EXITFUNC
==== BasicBlock 10 Pred(9) Succ() prev 9
$L2: (refs=0)
END
Пример промежуточного представления после фазы Flow Optimization
==== BasicBlock 1 Pred() Succ(2) next 2
$L1: (refs=0)
{-4}, {-7} = START _main
==== BasicBlock 2 Pred(1) Succ(3) prev 1 next 3
_main: (refs=1)
ENTERFUNC
[ESP], {ESP} = push EBP
EBP = mov ESP
ESP, EFLAGS = sub ESP, 12(0x0000000c)
==== BasicBlock 3 Pred(2) Succ(4,5) prev 2 next 4
$L12: (refs=0)
ENTERBODY
_a[EBP] = mov 5
tv272-(EFLAGS) = cmp(NE) _a[EBP], 1
jcc(NE) tv272-(EFLAGS), $L6
==== BasicBlock 4 Pred(3) Succ(6) prev 3 next 5
_b[EBP] = mov 6
jmp $L8
==== BasicBlock 5 Pred(3) Succ(6) prev 4 next 6
$L6: (refs=1)
_b[EBP] = mov 8
==== BasicBlock 6 Pred(5,4) Succ(7) prev 5 next 7
$L8: (refs=1)
tv273-(EAX) = mov _b[EBP]
_c[EBP] = mov tv273-(EAX)
tv274-(EAX) = mov 0
==== BasicBlock 7 Pred(6) Succ(9) prev 6 next 8
$L3: (refs=0)
EXITBODY
ESP = mov EBP
EBP, {ESP} = pop [ESP]
{ESP} = ret {ESP}, $L13
==== BasicBlock 8 Pred() Succ() prev 7 next 9
$L5: (refs=0)
UNWIND
==== BasicBlock 9 Pred(7) Succ(10) prev 8 next 10
$L13: (refs=1)
EXITFUNC tv274-(EAX)
==== BasicBlock 10 Pred(9) Succ() prev 9
$L2: (refs=0)
END {-4}
page revision: 1, last edited: 30 Nov 2006 19:46