OPTNEW (Материалы к контрольным работам)
Описание файла
Файл "OPTNEW" внутри архива находится в следующих папках: Материалы к контрольным работам, Материалы (3), CONSCOMP. Документ из архива "Материалы к контрольным работам", который расположен в категории "". Всё это находится в предмете "конструирование компиляторов" из 6 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "OPTNEW"
Текст из документа "OPTNEW"
8.9. ƒ¥¥à æ¨ï ®¯â¨¬ «ì®£® ª®¤ ¬¥â®¤ ¬¨ á¨â ªá¨ç¥áª®£® «¨§
8.9.1. ‘®¯®áâ ¢«¥¨¥ ®¡à §æ®¢
’¥å¨ª £¥¥à 樨 ª®¤ , à áᬮâà¥ ï ¢ëè¥, ®á®¢ë¢ « áì ®¤®§ 箬 ᮮ⢥âá⢨¨ áâàãªâãàë ¯à®¬¥¦ãâ®ç®£® ¯à¥¤áâ ¢«¥¨ï ¨ ®¯¨áë¢ î饩 íâ® ¯à¥¤áâ ¢«¥¨¥ £à ¬¬ ⨪¨. „«ï £¥¥à 樨 ¡®«¥¥ ª ç¥á⢥®£® ª®¤ ¬®¦¥â ¡ëâì ¯à¨¬¥¥ ¯®¤å®¤, ¨§«®¦¥ë© ¢ áâ®ï饩 £« ¢¥.
�â®â ¯®¤å®¤ ®á®¢ ¯®ï⨨ "ᮯ®áâ ¢«¥¨ï ®¡à §æ®¢": ª®¬ ¤ ¬ ¬ è¨ë ᮯ®áâ ¢«ïîâáï ¥ª®â®àë¥ "®¡à §æë", ¢å®¦¤¥¨ï ª®â®àëå ¨éãâáï ¢ ¯à®¬¥¦ãâ®ç®¬ ¯à¥¤áâ ¢«¥¨¨ ¯à®£à ¬¬ë, ¨ ¤¥« ¥âáï ¯®¯ë⪠"¯®ªàëâì" ¯à®¬¥¦ãâ®çãî ¯à®£à ¬¬ã â ª¨¬¨ ®¡à §æ ¬¨. …᫨ í⮠㤠¥âáï, â® ¯® ®¡à §æ ¬ ¢®ááâ ¢«¨¢ ¥âáï ¯à®£à ¬¬ 㦥 ¢ ª®¤ å.
:=
|
-------------
/ \
+ +
/ \ / \
/ \ / \
const(a) const(x) @ const(5)
|
|
+
/ \
/ \
+ @
/ \ |
/ \ |
const(b) const(y) +
/ \
/ \
const(i) const(z)
�¨á. 8.29
� à¨á. 8.29 ¯®ª § ® ¯à®¬¥¦ãâ®ç®¥ ¤¥à¥¢® ¤«ï ®¯¥à â®à a:=b[i]+5, £¤¥ a,b,i - «®ª «ìë¥ ¯¥à¥¬¥ë¥, åà ¨¬ë¥ ᮠᬥ饨ﬨ x,y,z ¢ ®¡« áâïå ¤ ëå á ®¤®¨¬¥ë¬¨ ¤à¥á ¬¨.
�«¥¬¥â ¬ áᨢ b § ¨¬ ¥â ¯ ¬ïâì ¢ ®¤ã ¬ è¨ãî ¥¤¨¨æã. 0-¬¥áâ ï ®¯¥à æ¨ï const ¢®§¢à é ¥â § 票¥ âਡãâ ᮮ⢥âáâ¢ãî饩 ¢¥àè¨ë ¯à®¬¥¦ãâ®ç®£® ¤¥à¥¢ , 㪠§ ®£® à¨á㪥 ¢ ᪮¡ª å ¯®á«¥ ®¯¥à â®à . Ž¤®¬¥áâ ï ®¯¥à æ¨ï '@' ®§ ç ¥â ª®á¢¥ãî ¤à¥á æ¨î ¨ ¢®§¢à é ¥â ᮤ¥à¦¨¬®¥ ॣ¨áâà ¨«¨ ï祩ª¨ ¯ ¬ïâ¨, ¨¬¥î饩 ¤à¥á, § ¤ ¢ ¥¬ë© à£ã¬¥â®¬ ®¯¥à â®à .
ÚÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³�®-³ Ž¡à §¥æ ³Œ è¨ ï ª®¬ ¤ ³‘⮨¬®áâì³
³¬¥à³ ³�à ¢¨«® £à ¬¬ ⨪¨³ ³
ÃÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÂÄÄÄÄ´
³ 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
� à¨á.8.30 ¯®ª § ¯à¨¬¥à ᮯ®áâ ¢«¥¨ï ®¡à §æ®¢ ¬ è¨ë¬ ª®¬ ¤ ¬. �ਢ¥¤¥ë ¤¢ ¢ ਠ⠧ ¤ ¨ï ®¡à §æ : ¢ ¢¨¤¥ ¤¥à¥¢ ¨ ¢ ¢¨¤¥ ¯à ¢¨« ª®â¥ªáâ®-᢮¡®¤®© £à ¬¬ ⨪¨. „«ï ª ¦¤®£® ®¡à §æ 㪠§ ¬ è¨ ï ª®¬ ¤ , ॠ«¨§ãîé ï íâ®â ®¡à §¥æ, ¨ á⮨¬®áâì í⮩ ª®¬ ¤ë. ‘⮨¬®áâì ¬®¦¥â ®¯à¥¤¥«ïâìáï à §«¨ç묨 ᯮᮡ ¬¨, ¨ §¤¥áì ¬ë ¥ à áᬠâਢ ¥¬ í⮣® ¢®¯à®á . � à¨á. 8.31 ¯à¨¢¥¤¥ ¯à¨¬¥à ¯®ªàëâ¨ï ¯à®¬¥¦ãâ®ç®£® ¤¥à¥¢ à¨á. 8.29 ®¡à §æ ¬¨ à¨á. 8.30. ‚ à ¬ª¨ § ª«îç¥ë äà £¬¥âë ¤¥à¥¢ , ᮯ®áâ ¢«¥ë¥ ®¡à §æã ¯à ¢¨« , ®¬¥à ª®â®à®£® 㪠§ë¢ ¥âáï ¢ «¥¢®¬ ¢¥à奬 㣫ã à ¬ª¨. ‚ ª¢ ¤à âëå ᪮¡ª å 㪠§ ë १ã«ìâ¨àãî騥 ¢¥àè¨ë. �ਢ¥¤¥®¥ ¯®ªàë⨥ ¤ ¥â â ªãî ¯®á«¥¤®¢ ⥫ì®áâì ª®¬ ¤:
MOVE b,Rb
ADD #y,Rb
MOVE i,Ri
ADD z(Ri),Rb
MOV (Rb),Rb
ADD #5,Rb
MOVE a,Ra
MOV Rb,x(Ra)
Š ª ¯à ¢¨«®, ®¤¨ ¨ ⥠¦¥ ª®áâàãªæ¨¨ ¨á室®© (¨«¨ ¯à®¬¥¦ãâ®ç®©) ¯à®£à ¬¬ë ¬®¦® ॠ«¨§®¢ âì à §«¨ç묨 ¯®á«¥¤®¢ ⥫ì®áâﬨ ¬ è¨ëå ª®¬ ¤. �⮠ᮮ⢥âáâ¢ã¥â ⮬ã, çâ® ¨¬¥îâáï à §«¨çë¥ ¯®ªàëâ¨ï ¯à®¬¥¦ãâ®ç®£® ¯à¥¤áâ ¢«¥¨ï. ‡ ¤ ç ¢ë¡®à ª®¬ ¤ á®á⮨⠢ ⮬, çâ®¡ë ¢ë¡à âì ¨«ãç訩 ᯮᮡ ॠ«¨§ 樨 ⮣® ¨«¨ ¨®£® ¤¥©áâ¢¨ï ¨«¨ ¯®á«¥¤®¢ ⥫ì®á⨠¤¥©á⢨©, â. ¥. ¢ë¡à âì ¢ ¥ª®â®à®¬ á¬ëá«¥ ®¯â¨¬ «ì®¥ ¯®ªàë⨥.
„«ï ¢ë¡®à ®¯â¨¬ «ì®£® ¯®ªàëâ¨ï ¡ë«® ¯à¥¤«®¦¥® ¥áª®«ìª® ¨â¥à¥áëå «£®à¨â¬®¢, ¢ ç áâ®á⨠¨á¯®«ì§ãîé¨å ¤¨ ¬¨ç¥áª®¥ ¯à®£à ¬¬¨à®¢ ¨¥ [10,11]. Œë §¤¥áì à áᬮâਬ «£®à¨â¬ [12], ª®¬¡¨¨àãî騩 ¢®§¬®¦®á⨠á¨â ªá¨ç¥áª®£® «¨§ ¨ ¤¨ ¬¨ç¥áª®£® ¯à®£à ¬¬¨à®¢ ¨ï, ¢ ®á®¢ã ª®â®à®£® ¯®«®¦¥ á¨â ªá¨ç¥áª¨© «¨§ ¥®¤®§ çëå £à ¬¬ ⨪ (¬®¤¨ä¨æ¨à®¢ ë© «£®à¨â¬ Š®ª , Ÿ£¥à ¨ Š á ¬¨ [13,14]) ¡®«¥¥ íää¥ªâ¨¢ë© ¢ ॠ«ìëå ¯à¨«®¦¥¨ïå. �â®â ¦¥ ¬¥â®¤ ¬®¦¥â ¡ëâì ¯à¨¬¥¥ ¨ ⮣¤ , ª®£¤ ¢ ª ç¥á⢥ ¯à®¬¥¦ãâ®ç®£® ¯à¥¤áâ ¢«¥¨ï ¨á¯®«ì§ã¥âáï ¤¥à¥¢®.
8.9.2. ‘¨â ªá¨ç¥áª¨© «¨§ ¤«ï T-£à ¬¬ ⨪
Ž¡ëç® ª®¤ £¥¥à¨àã¥âáï ¨§ ¥ª®â®à®£® ¯à®¬¥¦ãâ®ç®£® ï§ëª á ¤®¢®«ì® ¦¥á⪮© áâàãªâãன. ‚ ç áâ®áâ¨, ¤«ï ª ¦¤®© ®¯¥à 樨 ¨§¢¥áâ ¥¥ à §¬¥à®áâì (ç¨á«® ®¯¥à ¤®¢). � §®¢¥¬ £à ¬¬ ⨪¨, 㤮¢«¥â¢®àïî騥 í⨬ ®£à ¨ç¥¨ï¬, T-£à ¬¬ ⨪ ¬¨.
Ž¡à §æë, ᮮ⢥âáâ¢ãî騥 ¬ è¨ë¬ ª®¬ ¤ ¬, § ¤ îâáï ¯à ¢¨« ¬¨ £à ¬¬ ⨪¨ (¢®®¡é¥ £®¢®àï, ¥®¤®§ 箩). ƒ¥¥à â®à ª®¤ «¨§¨àã¥â ¢å®¤®¥ ¯à¥ä¨ªá®¥ ¢ëà ¦¥¨¥ ¨ áâந⠮¤®¢à¥¬¥® ¢á¥ ¢®§¬®¦ë¥ ¤¥à¥¢ìï à §¡®à . �®á«¥ ®ª®ç ¨ï à §¡®à ¢ë¡¨à ¥âáï ¤¥à¥¢® á ¨¬¥ì襩 ®æ¥ª®©. ‡ ⥬ ¯® í⮬㠥¤¨á⢥®¬ã ®¯â¨¬ «ì®¬ã ¤¥à¥¢ã £¥¥à¨àã¥âáï ª®¤.
„«ï T-£à ¬¬ ⨪ ¢á¥ 楯®çª¨, ¢ë¢®¤¨¬ë¥ ¨§ «î¡®£® ¥â¥à¬¨ « A, ïîâáï ¯à¥ä¨ªá묨 ¢ëà ¦¥¨ï¬¨ á 䨪á¨à®¢ ®© à®áâìî ®¯¥à 権. „«¨ë ¢á¥å ¢ëà ¦¥¨© ¨§ ¢å®¤®© 楯®çª¨ a1...an ¬®¦® ¯à¥¤¢ à¨â¥«ì® ¢ëç¨á«¨âì. �®í⮬㠬®¦® ¯à®¢¥à¨âì, ᮯ®áâ ¢¨¬® «¨ ¯à ¢¨«® á ¯®¤æ¥¯®çª®© ai...ak ¢å®¤®© 楯®çª¨ a1...an, ¯à®å®¤ï á«¥¢ - ¯à ¢® ¯® ai...ak. ‚ ¯à®æ¥áᥠ¯à®å®¤ ¯® 楯®çª¥ ¯à¥¤¢ à¨â¥«ì® ¢ëç¨á«¥ë¥ ¤«¨ë ¯à¥ä¨ªáëå ¢ëà ¦¥¨© ¨á¯®«ì§ãîâáï ¤«ï ⮣®, çâ®¡ë ¯¥à¥©â¨ ®â ®¤®£® â¥à¬¨ « ª á«¥¤ãî饬ã â¥à¬¨ «ã, ¯à®¯ãáª ï ¯®¤æ¥¯®çª¨, ᮮ⢥âáâ¢ãî騥 ¥â¥à¬¨ « ¬ ¯à ¢®© ç á⨠¯à ¢¨« .
–¥¯ë¥ ¯à ¢¨« ¥ § ¢¨áï⠮⠮¯¥à 権, á«¥¤®¢ ⥫ì®, ¨å ¥®¡å®¤¨¬® ¯à®¢¥àïâì ®â¤¥«ì®. �ਬ¥¥¨¥ ®¤®£® 楯®£® ¯à ¢¨« ¬®¦¥â § ¢¨á¥âì ®â ¯à¨¬¥¥¨ï ¤à㣮£® 楯®£® ¯à ¢¨« . ‘«¥¤®¢ ⥫ì®, ¯à¨¬¥¥¨¥ 楯ëå ¯à ¢¨« ¥®¡å®¤¨¬® ¯à®¢¥àïâì 横«¨ç¥áª¨ ¤® â¥å ¯®à, ¯®ª ¥«ì§ï ¯à¨¬¥¨âì ¨ ®¤® ¨§ 楯ëå ¯à ¢¨«. Œë ¯à¥¤¯®« £ ¥¬, çâ® ¢ £à ¬¬ ⨪¥ ¥â 横«®¢ ¢ ¯à¨¬¥¥¨¨ 楯ëå ¯à ¢¨«. ’¨¯ Titem ¢ «£®à¨â¬¥ 8.1 ¨¦¥ á«ã¦¨â ¤«ï ®¯¨á ¨ï á¨âã 権 (â.¥. ¯à ¢¨« ¢ë¢®¤ ¨ ¯®§¨æ¨¨ ¢ãâਠ¯à ¢¨« ). ’¨¯ Tterminal - í⮠⨯ â¥à¬¨ «ì®£® ᨬ¢®« £à ¬¬ ⨪¨, ⨯ Tproduction - ⨯ ¤«ï ¯à ¢¨« ¢ë¢®¤ .
r[i]={A->aiV1...Vm}
| /\
| / \
| 1 /\ /\m
| / \ / \
|ÄÄÄÄÄÄÄÄÄ|ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ|ÄÄÄÄÄ|
ai l[i]
�¨á. 8.32
€«£®à¨â¬ 8.1:
var
a:array[1..n] of Tterminal;
r:array[1..n] of set of Tproduction;
l:array[1..n] of INTEGER;
(* l[i] - ¤«¨ a[i]-¢ëà ¦¥¨ï*)
h:Titem;
(* ¨á¯®«ì§ã¥âáï ¯à¨ ¯®¨áª¥ ¯à ¢¨«, ᮯ®áâ ¢¨¬ëå á
⥪ã饩 ¯®¤æ¥¯®çª®©*)
begin (* �।¢ à¨â¥«ìë¥ ¢ëç¨á«¥¨ï *)
„«ï ª ¦¤®© ¯®§¨æ¨¨ i ¢ëç¨á«¨âì ¤«¨ã a[i]-¢ëà ¦¥¨ï l[i];
(* � ᯮ§®¢ ¨¥ ¢å®¤®© 楯®çª¨ *)
for i:=n downto 1 do
for ¤«ï ª ¦¤®£® ¯à ¢¨« A -> a[i] y ¨§ P do
if l[i]>0 then
j:=i+1;
if l[i]>1 then (*�¥à¢ë© â¥à¬¨ « a[i] 㦥 ¯à®¢¥à¥*)
h:=[A->a[i].y];
repeat (*‘®¯®áâ ¢¨¬ë «¨ a[i]y ¨ a[i]..a[i+l[i]-1]*)
�ãáâì h=[A->u.Xv]
if X ¢ T then
if X=a[j] then j:=j+1 else exit end
else (* X ¢ N *)
if X->w ¢ r[j] then j:=j+l[j] else exit end
end;
h:=[A->uX.v]; (* �¥à¥©â¨ ª á«¥¤ãî饬ã ᨬ¢®«ã*)
until j=i+l[i];
end (*l[i]>1*);
end (*l[i]>0*);
if j=i+l[i] then r[i]:=r[i]+{(A->a[i]y)} end
end (*for*);
(* �஢¥à¨âì æ¥¯ë¥ ¯à ¢¨« *)
while áãé¥áâ¢ã¥â ¯à ¢¨«® C->A ¨§ P â ª®¥, çâ®
¨¬¥¥âáï ¥ª®â®àë© í«¥¬¥â (A->w) ¢ r[i]
¨ ¥â í«¥¬¥â (C->A) ¢ r[i]
do r[i]:=r[i]+{(C->A)}
end
end; (* for i *)
�஢¥à¨âì, ¯à¨ ¤«¥¦¨â «¨ (S->w) ¬®¦¥áâ¢ã r[1]
end
� ¡®â «£®à¨â¬ ¨««îáâà¨àã¥âáï à¨á. 8.32. Œ®¦¥á⢠r[i] ¨¬¥îâ à §¬¥à O(|P|). Žç¥¢¨¤®, çâ® «£®à¨â¬ ¨¬¥¥â ¢à¥¬¥ãî ¨ ¥¬ª®áâãî á«®¦®áâì O(n).
� áᬮâਬ ¢®¢ì ¯à¨¬¥à à¨á. 8.29. ‚ ¯à¥ä¨ªá®© § ¯¨á¨ ¯à¨¢¥¤¥ë© äà £¬¥â ¯à®£à ¬¬ë § ¯¨áë¢ ¥âáï á«¥¤ãî騬 ®¡à §®¬:
:= + a x + @ + + b y @ + i z 5
� à¨á. 8.33 ¯à¨¢¥¤¥ १ã«ìâ â à ¡®âë «£®à¨â¬ . �à ¢¨« ¢ëç¨á«¥¨ï á⮨¬®á⨠¯à¨¢¥¤¥ë ¢ à §¤¥«¥ 8.9.3.