CONS1 (1131587), страница 2
Текст из файла (страница 2)
+-----------------------------+
Левый | R | ADD A1,A2 | ADD A2,A1 |
операнд |-----+-----------+-----------|
A1 | V | ADD A1,A2 | MOVE A1,R |
| | | ADD A2,R |
+-----------------------------+
Рис. 8.12
|
/ \
R1 /\ \
-- /\
R2 /\ \
-- /\
Rn /\ \
-- \
/\LR
L/\/\R
----
Рис. 8.13
| | R R
/ \ / \ | |
/ \ / \ ll/ \lr ll/ \lr
0 /\ /\ 1 / \ / \
/ \ / \ R+1 R R R+1
---- ----
а) б) а) ll<lr б) ll>=lr
Рис. 8.14 Рис. 8.15
R R R R
| | | |
/ \ / \ / \ / \
/ \R R / \ R/ \R+1 R+1/ \R
X /\ /\ X /\ /\ /\ /\
(0) -- -- (1) -- -- -- --
а) б) а) б)
Рис. 8.16 Рис. 8.17
Expr
|
IntExpr
/ | \ Left=true
/ | \Label=2
/ | \Reg=1
Term AddOp IntExpr
/ | \ Left=true| / | \ Left=false
/ | \Label=1 | / | \Label=2
/ | \Reg=2 | / | \
/ | \ + / | \
Factor MultOp Term Factor MultOp Term
|Left=true | |Left=false |Left=true | |Left=false
|Label=0 | |Label=1 |Label=0 | |Label=1
|Reg=2 * |Reg=3 |Reg=1 * |Reg=1
Ident Ident Ident Factor
A B C | Left=false
| Label=1
----------------- Reg=1
/|\
( | )
IntExpr
/ | \ Left=false
/ | \Label=1
/ | \Reg=1
Term AddOp IntExpr
|Left=true | | Left=false
|Label=0 | | Label=1
|Reg=2 + | Reg=1
Factor Term
|Left=true | Left=false
|Label=0 | Label=1
|Reg=2 | Reg=1
Ident Factor
D | Left=false
| Label=1
| Reg=1
Ident
E
Рис. 8.18.
| ^
| | Label
/ \
/ \
/ \
Left=0 /Label-->Left\
/\ /\ Reg<0>:=if (Left<0>=Label<0>)
/ \ / \ &(Left<0>#0)
/ \ / \ then Label<0>+1
/ \ /\ /\ else Label<0>
/ \ / \ / \
---------- ---- ----
Рис. 8.19.
TrueLab TrueLab
FalseLab\ FalseLab\
/ | \\ /| \\
/ / \ \\ // \ \\
/ / & \ \\ // V \ \\
/ / \ \\ // \ \\
FalseLab / \ \TrueLab TrueLab/ \ \TrueLab
/ \FalseLab / \ FalseLab
TrueLab<-------NodeLabel FalseLab<---NodeLabel
Рис. 8.20.
F V ( F & T & T ) V T
| FalseLab=False
1 TrueLab=True
/
TrueLab=True / V \
FalseLab=2 / \ FalseLab=False
F 2 TrueLab=True
/ \
TrueLab=True / V \
FalseLab=3 / \
/ \
4 3
/ \ |
TrueLab=5 / & \ T
FalseLab=3 / \ TrueLab=True
/ \ FalseLab=3
F 5
/ \
TrueLab=6 / & \ 1: GOTO 2
FalseLab=3 / \ TrueLab=True 2:
/ \ FalseLab=3 4: GOTO 3
T 6 5: GOTO 6
| 6: GOTO True
T 3: GOTO True
Рис. 8.21 Рис. 8.22
| FalseLab0
| TrueLab0
/ \
/ & \
FalseLab1=FalseLab0 / \ FalseLab2=FalseLab0
TrueLab1=NodeLab2 / \ TrueLab2=TruLab0
/\ /\
/ \ / \
---- ----
147
| FalseLab0
| TrueLab0
/ \
/ V \
FalseLab1=NodeLab2 / \ FalseLab2=FalseLab0
TrueLab1=TruLab0 / \ TrueLab2=TruLab0
/\ /\
/ \ / \
---- ----
Рис. 8.23
false | true | false | true |
or or and and
/\ /\ /\ /\
/ \ / \ / \ / \
/ \ / \ / \ / \
true false true true false false false true
true | false |
| |
not not
| |
| |
false true
Рис. 8.24
|<-----| op |<-------|
/ \ / \
/ \ / \
+---->/\ /\<-----+ +-----/\ /\---+
| / \ / \ | | / \ / \ |
| ---- ---- | | ---- ---- |
| +-+---------------+
+--------------------+
Рис.8.27
|<------------|<-------------|<---------| | Op
/ \ / \ / \ OpTable
/ \ / \ / \
/\ /\ /\ /\ /\ /\
/ \ / \ / \ / \ / \ / \
---- ---- ---- ---- ---- ----
Рис. 8.28
:=
|
-------------
/ \
+ +
/ \ / \
/ \ / \
const(a) const(x) @ const(5)
|
|
+
/ \
/ \
+ @
/ \ |
/ \ |
const(b) const(y) +
/ \
/ \
const(i) const(z)
Рис. 8.29
+------------------------------------------------------+
|Но-| Образец |Машинная команда |Стоимость|
|мер| |Правило грамматики| |
|---+---------------------+----------------------------|
| 1 | const(c) | MOV #c,Ri | 2 |
| | | Reg->Const | |
|---+---------------------+-----------------------+----|
| 2 | := | MOV Rj,c(Ri) | 4 |
| | / \ | | |
| | / \ | | |
| | + reg(j) | | |
| | / \ | Stat->':=' '+' Reg | |
| |reg(i) const(c) | Const Reg | |
|---+---------------------+-----------------------+----|
| 3 | @ | MOV c(Rj),Ri | 4 |
| | | | | |
| | + | | |
| | / \ | | |
| | / \ |Contents -> '@' '+' Reg| |
| | reg(j) const(c) | Const | |
|---+---------------------+-----------------------+----|
| 4 | + | ADD #c,Ri | 3 |
| | / \ | | |
| | / \ | | |
| | reg(i) const(c) |Reg -> '+' Reg Const | |
|---+---------------------+-----------------------+----|
| 5 | + | ADD Rj,Ri | 2 |
| | / \ | | |
| | / \ | | |
| | reg(i) reg(j) | Reg -> '+' Reg Reg | |
|---+---------------------+-----------------------+----|
| 6 | + | ADD c(Rj),Ri | 4 |
| | / \ | | |
| | / \ | | |
| |reg(i) @ | | |
| | | | Reg -> '+' Reg '@' | |
| | + | '+' Reg Const | |
| | / \ | | |
| | reg(j) const(c) | | |
|---+---------------------+-----------------------+----|
| 7 | @ | MOV (R),R | 2 |
| | | | | |
| | Reg | Reg -> Contents | |
+------------------------------------------------------+
Рис. 8.30
----------[stat]----------------------------------
|2 := |
| / \ |
| + \ |
| / \ \ |
|reg(Ra) const(x) \ |
|const(a) \ |
| ------------------[reg(Rb)]------------------ |
| | 4 + | |
| | / \ | |
| | / const(5) | |
| | / | |
| | ---------------[reg(Rb)]------------------ | |
| | | 7 @ | | |
| | | | | | |
| | | -------------[reg(Rb)]---------------- | | |
| | | |6 + | | | |
| | | | / \ | | | |
| | | | / \ | | | |
| | | | ------[reg(Rb)]---- \ | | | |
| | | | |4 + | @ | | | |
| | | | | / \ | | | | | |
| | | | | / \ | | | | | |
| | | | | reg(Rb) const(y)| + | | | |
| | | | | const(b) | / \ | | | |
| | | | ------------------- / \ | | | |
| | | | / \ | | | |
| | | | reg(Ri) const(z) | | | |
| | | | const(i) | | | |
| | | -------------------------------------- | | |
| | ------------------------------------------ | |
| ---------------------------------------------- |
--------------------------------------------------
Рис. 8.31
r[i]={A->aiV1...Vm}
| /\
| / \
| 1 /\ /\m
| / \ / \
|---------|----------------|-----|
ai l[i]
Рис. 8.32
+-----------------------------+
|Операция|Длина| Правила |
| | | (стоимость) |
|--------+-----+--------------|
| := | 14 | 2(22) |
| + | 2 | 4(5) 5(6) |
| a | 0 | 1(2) |
| x | 0 | 1(2) |
| + | 9 | 4(16) 5(17)|
| @ | 8 | 7(13) |
| + | 7 | 5(15) 6(11)|
| + | 2 | 4(5) 5(6) |
| b | 0 | 1(2) |
| y | 0 | 1(2) |
| @ | 3 | 3(6) 7(7) |
| + | 2 | 4(5) 5(6) |
| i | 0 | 1(2) |
| z | 0 | 1(2) |
| 5 | 0 | 1(2) |
+-----------------------------+
Рис. 8.33
M=<':=' '+' R C R> :=
P=<t> |
------------- M=<<'+' R C>,
/ \ <'+' R R>,
+ + <'+' R <'@' '+' R C>>
/ \ / \P=<t,t,f>
/ \ / \
const(a) const(x) @ const(5)
M=<R,R,R> M=<C,R,<'@' | M=<C,R,<'@''+' R C>>
'+' R C>> | P=<t,t,f>
P=<t,t,t> P=<t,t,f> |
|
|M=<<'@' '+' R C,
M=<'+' R C>, | <'@' R>>
<'+' R R>, |P=<t,f>
<'+' R <'@' '+' R C>>|
P=<f,t,t> +
/ \
/ \
M=<<'+' R C> / \ M=<<'@' '+' R C,
<'+' R R> + @ <'@' R>>
<'+' R <'@' / \ | P=<t,t>
'+' R C>> / \ |
P=<t,t,f> / \ |
const(b) const(y) | M=<<'+' R C>,
M=<R,R,R> M=<C,R, | <'+' R R>,
P=<t,t,t> <'@''+'R C>>+ <'+' R <'@' '+' R C>>
P=<t,t,f> / \P=<t,t,f>
/ \
const(i) const(z)
M=<R,R,R> M=<C,R,<'@' '+' R C>>
P=<t,t,t> P=<t,t,f>
Рис. 8.34
+---+
| A |<---------------+
+---+ |
| |
+------------------------------+ |
| | | | |
v v v v |
+---+ +---+ +---+ +---+ +---+ | +---+
->| B |-->| X |-->| X |-->...-->| X |-->| X |--->| C |-
+---+ +---+ +---+ +---+ +---+ +---+
| ^ ^ ^ ^
| | | | |
+-------------------------------------+
Рис. 9.1
















