22. Pコードを中間コードとするPascal 処理系のimplementation
東京大学工学部計数工学科 金図 書毒
Yu崎 K'lIKda
従来の. Trunk tJ・らつぐった1パスのPlI.llcalコンパイヲKは Trunkが改訂されたとき の得移植がむずかし〈 また綬遁イとがむずかしいという欠点があった.
ζの問題を解決するためKは 適当左中間コードをえらんで コンパイヲを多パÃκすれば よいが そのよう念コンパイヲをPa8cal�Pを位制してつぐった。 ζの処理系(の慢餓依存の 線分〉はd1aplayをもちいる方式をとったが とれは dlsplayの内容をとわし先手続き が その実行被了 時陀その修復をする方式であり 非局所変般の老いときVては わずかの最適 化をするととKよって! もともと非同所変微をもた念い書締のほあhと$0左じ効率を途成でき る.
1 はじめK
あらた設Paecalコンパイヲをつぐるeてあたって目婦としたととは つぎのような問圃点を 解決するととであった.
従来の 機械語を出力するPa8calコンパイヲ{たとえば(Ammann77). (疋問76))の大 部分は. 1パメであるため 針穴的(peep-hOle)で倉v-.遁化をbと怠うととは困健であり
また 針穴的鍾適イヒもコンパイヲのよみやすさを$'とし! 虫のl原因となりやナかった。
�プ,. いわゆるTrunlc からつ〈ったコンパイヲは Trun位 に虫があったばあいt あるい は棟割艇の言語仕械が置EされたほあいìC. それK対応する(ナ念わち再移値r 3節穆照〕する)
のがはじめての移総とお、在じ〈らい岡管である.
-)j. PII.困CII.I-P(Nor17円1は イ ンタプリタ ・ コードを断力する白で修値段は高いが と れはPII.B C 11.1がつかえ念い機械のうえKはじめて移慣をb と念うときDも自であり インタア リタで実行するため興行速旬置が会そいので 実用Kは攻ら念かった。 (また PII.BCII.I-P は PII.BClI.lの不充分念サプセ ノトであるζとも 実IIJ ìC傘らないひとつ白樫由である)。
との 効準 緩通化 事、よび再移績の岡曜という間泌を解決するかんえん攻方縫はっきのと をPである。 コンパイヲは2パスKずる。 パJ衣1は機織事、よびlmplsmantll.tlon rcn立Kし!
すべての処理系Kプヒhして岡ーのも白をl聞いる。 パス2は各機械にひとつrつ作P とれは側 線怖を幽カする(図1 A) 0 中間コード体系は パÃ 1κ多少の変質があっても修司e乞うけ念 いようK殺到する。 議直化が必要をときは との2つのパスのあいだに 強立のパスとして
opti町izerを走らせる(凶1 B)。 それもさらκ 働械翻立企鍛a化 機憾依停の費量遍化と いう2つ目パスにわけるととができる(図, 0)。 パス1の出力は後械狼攻在中間コードであ るが 峻鍵依存のo pti闘lzerの凶!Jは その中崎コードを極量破依lfìC猷桜したものである.
〈並行プロセス またはコルテ4ン左分割コンパイルができる宵語目処t理系.'使えれd 多パ スKする必要は念いが 今のとζるそ白 ょ う念ものはつかえない) 。
あたらしh処理系をPII.8caユ-EPとよぶ。 PII.Bcal-EPは ζ白方法Kもとづいて} 中間コ
『ドとしては.PaecIlI-Pの中間コードであるP コードを多少変更したものをもちいてつぐった が それは Pコンパイヲがすでκiのパス1の条件をか攻Dみたして凶て わずかの変兇だ けで目的Kかなうであろうとかんがえたからであþ. 上の円標κとってそれがもっともよいか らというわけでは企い.
Il:!LI"I"-""'" �ゲ
I-";ft,,.,.. ・醐 ' 、
143
‘、
2節では 再移植性についてよbぐわしぐのべ. 3 11では。 Pコ ドと! 合もK興行効率を よ〈するためKそれ'" <わえた変買についてのべる. そして PaflcI!I.I-P をもとKしたため 舵 畳通化。問題がどのようKなったかKついて .111でのべる. また パ7- 2 t1Welcom
coemo 700/900のためKつ〈ったが ζの1mp19mcntatlonで傑刷した418 plll.y
".乞1c link 老どの実行時環境Kついてs節でのべ 8節では他のとまかい同盟Kついて のべる。
〈蝿掃局世会:
コードめ拡吏J
議補悼
の押I/l
コードi。。ス<)
雄両輯立 者寄生す
t ,h
。 m拍的
m 原升
機械:!'l<à世
中間コード 機械味存aラ
キ同コ ド 縄楓拍à 〈川?り
な'fゆ
中古川..r機械棺抗令聞コード
川両 | \ | 機 関め
鴫棉棺な 印恒。
な軒骨 時計開iHF 叩,'tc'州自国F
国\. ... 匝�イヒ. 再骨 樋性左わ んが 'j...i-: コン J守イラ 檎;;'f.
(1、.ヌ2) コードi 生成+
国';
""グヲム
コード
生!1l+
コ-."
生が弘子
Z 再移循2生
初期移値の目的で開発されたFallcalコンパイヲには paacal-p(Nor176)や},f!-Paacal
〔河村7凶)がある。 Paflcal-Pのコンパイヲは, 仮想スタ タ ク計算舗のためのコ』ド(Pコー ド)を幽ノりL とれをインタプリタで実行する 。 僧i'C Faecalコンパイヲがうどけばよ悼 と いうときKは PコーYという比般的単純念績械訟のイ〆タアリタをか〈だけでうとかすとと めできるPlI.8cal-pを使う白が織もえやすいが とればインタプリタをつかうので奥行適度.' bそVlo loI1-Paecalは コンパイヲの出力する" Iコードをマクロ艮醐して機健絡を生成す るという方法をとるととKよって tmplementerの仕..をあまタふやすとと左〈 ζの間組 を解決している. "、なじ目的でつ〈られた他の曾絡のコンパイヲとしてはBC1'L
(Richardfl“。). Alga16f\CなどがあるC'ユe'll'orth7 1:1).,
上の宮つのPaecalコンパイヲに共通念白は 文法上か念りの制約があるため! 初期修倒K もちいられるだ付で いずれは移鋪性の�'"コンパイラKとってかわられる趣命Kあるという
ととである。 初期移個性をよ〈するととと 俊能を允突きぜるととはあいいれ念い要求であι そとで
からず
Paecal-EPでは? 初期移拘置Kは多少てまがかかったとしても 再移細菌tてはてまがか 智略FaeclI.lの機能をほぼ完全にもったものをつ〈るζとを11婦とした。 袴移備と".
144
篤"岡山門いグ
" " ,flジ.,.. lt1O. 1
もとのコンパィ,1<虫があったタ 宵跨仕事獲が隻更されたりしたときK もとのコンパイヲK 手を〈わえ それをつかってふたたび移植をbζ在うととである。
(初期)移値性を1 (するため1<1i . 1)コンパイヲの機械依存の部分を極力へらt... ,)横 線組立の部分と様械依存の部分とを分測量するζとが必要である. とれKた'^t.. 再移個性だけ を問題とするときは 2)を中むにかんがえればよい。 I )は健能の充実と繍Eする要求だが
2 )はそうで念い。 したがって 再移縮性と働能の充実は両立さぜるとと ができる。
Trun励ま 1パス ・ コンパイヲ白中Kちらばった骨組だけのコ ド生成子tL lmplem・n乞"
が聞をつけるようκつ〈られて$'り 初刷移値牲に闘LてはPaocal-EPと阿佐度とかんがえ られるが 再移植のためKは まった〈あらたKコード生成子をかき念bすほか はない. それ よbはpare8rをかき念bす}Jが楽なので 虫由駆除や1't1.仕僚の改訂r::よる変質がるったと き 各llQplemen乞"が彼自tL paraer 1'1:つぎをあてていた。 そのために コンパイヲの内容 を充分理解し虫とÞI<無むをひとがいるととろではよいが そうでない計算センターでは い
つまでも虫がとれ念い と いうζとKなったし 世界 中で虫 と þ Kつ加やされた人月 はばかK念 ら念いものであっただろう. したがって 初期移値性か 傷能の先突か という=者沢一で後 身を盛択したほ<I> '^I<と るべきiliは Trunkのよう念いきかたでは老< • Pa6Caユ EP のよ う設いきかえだと.んがえられる。
Paacal-EPでは Paecal-Pをも と Kし. P 0ードを鉱摂するととによって.再移間性と働 能の光興を両立させ PコーYを機械語K陵聞するという方法Kよって Idl-PaecaJ.同蛾 実行効率。問題を解決した。 t飾では パスTを完全K樹被敏立KするようKかいたが とれ はPaacalVばあいむずかLM. !終数 集合志どがしめる記憶語数や その境界条件(倍語境 界注ど)は償械Kよってζと念るので 完令κ横械ø立KするためI<IÍ 紀億わりあてをのち のパスであ・となうようκし老ければ念らないが そうナると パス 1 か らパ ス 2 へわたすべき情 報が念撮Kふえ のちのパスの仕事.'!!I緩K怠るo Paaclllのようを比値的単純毛言語のほめ い 機械依停の部分があ重り復健Kなったのでは それをつぐるのK製するてまが るらたに 1パスのコンパイラをつ〈ったのとたいしてかわらな〈在ってしまう。 したがって 'e纏わり あてはパス1でbζ念うべきである。 Faacal-P でd パ;<. 11'1: v> <つかのパラメタ企もう けて(定徹定義の形であたえられている) それを機憾K砂うじて設定すると と κよって パ ス1で0記憶わタあてを可能にしている。 たとえば relll湿の変倣がしめる記憶単位依を
realelze 記惚蝋位微であらわした魔界条件を".ユ"' と い う定数であらわしてhる(配蝕 単位.' r獅J念ら r9tl.llll - さ で借飴塊 界をあらわす). p忍acal-EPでもζ白方援を継承 している。 したがって パスiは完全K機械叙立では念いが パヲメタの設定はきわめてたや すい仕'"であるから 慢被敏立性は高い.
a コー ド体系
次節でPaacal-EPのfI標のひとつであった厳遁化についてのべるが その..えVてそのコー ト体系Kついてのべよう。 まず pコ唱トκついてのベ 次K それKどのよう在変史を〈η えた.・Kついてのべる.
3. l. Pコード
I 0の階乗を求めるプログラム(凶t)と それをコンパイルしたPコ ド(剖s)をしのナ。
3. 2. Pコードの設計!t�とコードならびの目録定
Pコードは ζの1111plementatlonにとって不都合を点をいくつかもっていた。 それをつ
.".ヲ��';"''Y
"",>11"今ムt岨1
\
145
,
、、
t i .:' r-F;百円III rnCTOrラr,司L.OU-;-f'UTl
之 A、Fり州、:'"!úH rnC7"OP!nLC: :
I1HCG(Pl
: IliïCG口p�3
一'
3
3
回2
V[Gl,j
〉 宮 X ::t I� γ吋仁川 ,� ,ヤJ勺1[)!nL :..., l
、 巨L';[ F内心7のP U1l "" • 斑rf'lCTOP11司u:� I J 己弓I':llD;
,:: &[(;111
2. 岬2τE巾司CTúRIIl.... (LOJ);
.?":l
f.:1
m10何
時望書E求的苦フ'07ラム
�. Q)ようにLて解決した。 改訂されたコードをE P コ ードとよぶ。 BCPL(R1chard圃69)で は。 中間コ ドとしてOCOOE をもちいているが E P コードは とれKよ(rt:ている。
, " • スタ ノク計算機とレジメタ計算織のひらさ
PコードはスタJク計JI織のための働械路であり r BM:吋0/870i'C町奈されるνグスタ計算 横白ための中間コードとLてもちいるVてはい〈っか不都合があった. それらはいずれも スタ
タク計算概ではスグ タタに偵を白せるたびKスタ 2ク ・ ポインタをふやし(またはへらし) 偵をとりきるたびKス? ,ク ポインタをへらす(ふやす}白にたいし νジスタ計算機でそれ を模倣すると非効率K念るため スタアク ポインタの婚減を震予ζ怠うタイミングをずらして まとめて増減する必要があるととから命じた。
厳初は手融会(関数)よびだしの直後のスタyタ ・ ポインタの位IItてかんする問地であゐ.
もと のPコードでは手続きょ(fだLと岨数よびだしを区別していない。 そのかわj). . ëりは 問教からのもどりと手続きから白もどタを区別している。 間数よびだしのはあい陀は値をかえ すためスタ タ クをひとつのぼさ念ければなら念いが それをもどb命令でbζなうように設計 されているのである。 しかし νジスタ計算働Kとっては とれをよびだす側で処理費ずるよう Kしないとお合がわるい。 そとで よびだし白命令rt:. lびだされるべきものが予輯きか閣微 かをしめすタグをつけぐわえた。
との4事情を臨明しよう 。 いま 1'11き(または関数) pのなかから関数fをよんだとLょう。
fをよぶtIi席。のスタ ックの状態は図'. Aのようκなっている(スタ ノクは上からFへのびると する)。突康のスタ Yク �インタはー今の位凶をさしているが コンパイラはーー》の位慣がメ タ フ タの頂lだというととを知って.'り ζとを仮悠的念スタ タク ・ ポインタがさしていると
かんがえるととができる。 fをよんで(阿4 B) もどって〈ると スタ タ クの状臨は凶4 Cの ようK念ら念吋れほ在ら老い。仮想のスタシク ・ ピインタはよびだしのまえよりひとつきを(fの 値をふ〈んでいる)をさLている。もL ζれが値をかえさ設い手続きょびだしだとすると Ibi 忽ぷタ F ク ポインタの位慣ははじめとかわら念"'.
インタプリタで実行するときKr.よ 凶4 A白状態から凋数本体を実行したのち 関数からの もどb命令を実行ナるので そとでスタタ ク ポインタを調盤すればよhが 憐健悟を生成す るときKは図4 Aの状態から前後図4 Cの状態へうつら念付れば傘ら傘いので よびだし命令 Kスタタクをふやすかどうかの情報がふぐまれてh念付れ日念ら念い。 それを知らせる援も格
易念h法は} もどり命令と訟なじ形のタグをつけ〈わえるととである。
次は。 コ『ド生戒はP コードの解釈実行とはちがって綾初から最後まで遅次的" .'と念われ るため 式スタ フクが宅で企い状態での無条件分岐があると生成が問般にな証たとえば分岐の 直後は式メタ ックを宅Kして とUさきに遣したら とぶまえのスタ フ ク ・ '"インタの値をあ、
もいだすというようなととをし設ければ傘らをいから,) .とれはコードじたいの問題というより
146
開閣内円いグ
\.0 '" '" l' .,... 1蜘』
du語専宮elF3&E。
一
EBe毛si--sas
内ー←3aトコ@》STζ'E!ム
4E elh
主当Zut轟併まe'LAza--
,、
勺一守 的 m
2 ー
同
、, ‘叫
s
-
」
立行4.2
" "
ロiJ21同2-e
J 内l
4・・ F
"J '治 、
よ〉
"
tヲ
」
のJ 'J 戸J
。
怜 J
仏トUAh
」FAmu o一宅」
n
dnmJ
色一叶ω
eF 自己ミJdU Fm- M川HJ4川一両J
」F州一三。-一内UO壬」
トρ』nu MUR」
LFDLト「。・」円EgJ。£J
av--M
つリ『
r 」
川
Z
-リ?」
Hトuq山
内一三、JPJ
4i-一、
。,‘,
時れ担-凶作詞G4健
げパAMJ Ham一」
」Fω主目白内一」
n
J 弘一勺2MU日目
目久トAq
HUQ」
-一
i - 4Dd-M 作「hL
2 't
‘白円一J
b=出
J
1、
•
」F51wet-E-PS警・よ-R
•
1
E g司・MLTS‘64こF1 -I』司勺-u。,‘asp'与やsa・ョe・g
ドEレB11YA -Ae,UωduF245htaE1
i-ztU4d g szg一証、 a44gz uaCMド温同句,aAse
ぞコ
へ
トJdTA宅Z9勾喝aa毛S
14
喜市wEZHJ4HZut,B句
』F毛d山"ee弘、令余命epuF守61M
門
、a J •
rgmztl
。
f明 F、
-."
ー:r �" 向。
J
m
m
。n- J
告 の
'=' � �Ö
日"J r-J
��
"押
『
J
付
。ーョp 0'
一・
,
��
缶。 百円
2ミ
ー
」 J
. '町φN、
c p-ω F一一コつ い竹玄 円 p
M64JH1-mJ 色』?Mg
」令?っF一一MJ
MUQJ 己「5-uzMJ
』叫一ごト=出ト±凶
告
」 創的J"寸」
M」F凶広 勺勺 吋 ' J waaFF 自己ま の--コω 】舗前
噌一日凶J HF】門一」
ト山-一-noJ A-」
H 色、コ tト
p〔二日HUQJ
色=「h443U凶
喝ωaJHan一」
ト±凶
ト=凶
す守-
, 147
、
開川内向l :,. ,.
:.-:,.�,.,... 1蝋自
p��賓傘型E
A. P"、�fRよd喝の耕地
帽d p�
B.
fn空行守
入P市子叫盈を場所
回4. 問#よびだしめ帯7桂��ぞ5""フのーす£略
特域
þ�c.
f場、日Uた串をこの#司邑
コード念らびの問題である。 とのようをコード念らび金生成する必重要は Pa悶'" という宵需がて とってはもちろん コンパイヲKとってもほとんどないため ほとんど間聞はあ、とらなかった が ただ1か所 case文の選釈式の静備のあと。 その値をヌタ フクκのせたまま無条件分肢を
さ?となっていたので とのコ←ド走らびをあらためる必要があった。
3. 2. 2. 開
P コードの例と孝子念じプログラムをE PコードKコンパイルした結巣をしめず(図6 )。
4. 最適化について
プログヲミング教育での使用を円的とするコンパイラは あまり最i8化K時閣をかけず そ の分コンパイル時閣を短縮した方が得策である。 従って Paacal-EPのぼあい コード生成子
(通常0パス2 )は必要厳小闘の段通化だけをナるようK� 他はナベて 必裂!なときκ。み つかわれるoptim1zor l'Cまかせるのがよれ。 必姿最小眠の最直化とは. optl.mizarをつかっ たときKは講足白い〈目的コードをH1カするζとができる稜度の主義i8化であタ そのうちの成 要警なものKついて4 2でのべるo 0 P t 1皿izerはまだ実際Kはつぐっていないが 4. 1 ではそ の可能性と限界についてのべる。
ι1. 0 pもimlzer
optimizsrは} コンパイヲ(パス1 )の出力したEP コードを入力して 俄被依与に鉱担 されたEPコードを出力する。 EPコードを白肉念アセンプリ省I/iとかんがえると。 段通化の余 地はわずかVてなってし安うが そのつかいかだK制隆美をつければi あゐ程度デ タむ念がれ を
解析L 最適化をbζなうととができる。 たとえばt
8. :=X(I);
x、j):=eb:=X(l)
のようなプロクヲムで Jキ1ならば絞後のx (斗〕をaであ、きかえるζとができるが Jキ4 であるかどうかがわから老いときVては $'きかえるととはでき念い。 ζζでもしコンパ" ラの
尚カするEPコートの上 で � ( 1 )が単純変数c $'念じかたちでアクセスされて凶るとすれば optlmlzerはx
(
1 )とxC j )がをなじ変数にたいするアクセスだとは認識できず 上のx(
1)
を単純変数でき訟きかえた形のときも 上のような綬遁化をするζとはできないが 館列はつね に(基底番地) + (変位)のかたちでアクセスするととにすれば}たしかにζと念る変数陀たいす
るアクセスだと認磯でき 鰻適化をお、と念うととができる。
しかしながら Pコードのうえでは 原抽アロクラムがふ〈んでいた型κ関する情報の多少£、
〈はうしなわれているので ある極の最適化は非常K困鰻陀在る。 たとえば
148
第"即日引バ
� � .j<刊 .,蜘1
孟五♀ce4ure p (.u.ょ a : T 1; var b: T 2)
1<'"いて. T IキT2走ら � b,まallaaea (率?なじ変数Kとと念る名前がついたも白)では ありえ念いが 型がわから左〈念ると, そのζとがわから傘〈なる. ポインタ変数Kついても 変数パラメタと名、念じζと7.\;j;.とる。 との聞紙は. E PコードのかわりVC optlmizerが必要
とするだけの型Kかんする情報をふ〈んだコード金っかうととκよって解決可能である。
< • コ ード守成時の掻趨化
コード俊成部はそれほど愚直化をする必要は念いが ゑ適化を9ζ在ったEPコ ドが入力と してあたえられたとき 充分よ出コードがだせるようKつ〈ってbかなければ企ら念h。たとえば
LODI 1 dl 一一 孟はζ白コートをふ〈む手輔さのνベル
LODI 1 42
EOU
F'JP Ln
にたいしては
LW. r 4 1 .ap �-L W=load "or4,
C W. r 42, a P -- c W = compa re 'll'or4
BNE Ln --BNF.ュbranch lf not oqual
を生成したい( cは適当念νジスタ SPはスグゾク・ポインタ\ほかの2項演算につhてもほピ岡被である。
& 実行時環貨の物理法
Paecal�EPのMelcomへのimplementat10nは 興行 時 環境(スタ,ク)の管理のしかえ Kい〈っか白特徴がある 。 したがって それらKついてのべよう。
5. 1. d1aplay, atatlc 11nk
従来のPaacalコンパイラ怯. 1) dillplayと Bもa色ic 11n匙を併用L.. dl eplay 隠それを ζわす手続きをよぶ側で修復する方滋 ,または三) dlsplayをつかわず atatic 11nkだ吋
もちいる方法(P臥'"ユーPはとのJ;11;をもち出るととを前線としている)のうちいずれかを刈い ていた. 1)の特徴は νベルの痛い予続き(す攻わら 多軍の入れチの内側のT曜き)からνベ ルの低い手続きをよんだあとの処理Kνベル差に比例ずるてまがかかるが よぶまえのてをは 一定であるとξ νベルの痛い了IHでレベルの11\"平時きK属する変数をアクセスするのκ 挺するてま bよびF続き白そ とへgotoする ときのてま(非周所的gotoのてを)がレベル三匹κ
依#しないととである句 ヨ)の特徴は レベルの高W手綬きからレベルの低い手械きをよぶまえ の処"rcレベルm<比例するてまがかかるが よんだあとりてまは一定であるとと 変砲のア
クセス台よびJ�周明的gotoのど1がνベル;tK比倒ずるζとである。
とれらKたいし. !Il坊の方法が侮仕する。 それはdi6playをとわしたTI<きがその実行を 候7するときVてとわした郊分を修慢する方法でるる固 との刀法tてよれば 手瞬きよびだし公よ
び変数のアクセスのてまはほぼー定の時間でできるが そのかわり 手続きのそとへのgoto 世プUグヲム由実行の履歴の鍵さ$'よび手嘆きのレベルの康人値K依作ナる(従って吋のJ;法 よりi1!1<1をい) 時 聞がか治る。 Paeca.]-EPでは との方訟をためしてみた。 ζの方訟で手続き
ょびだし. 1'槽きの外へのgc t01手続き(闘激)パラメタがどのよう:rc lmplemer.tされ るかを しめそうtただし いまのととろ 手続き(側徹)パヲメタは拠際Kは1mpユementしてい念"1 旺か のみ法については バFレマン79 '変どをa 附されたい.
家Zltj1'�円‘'ゲ
シ川"'?J, l欄I 、
149
5. 1, I 手続きょびだし
予続きがよばれたときは。 まず} その手続きのνベρのdløplayの内容を�タ タタに格納 し (したがうて とれが通常のstatlc lin盈Kとってかわる占その手続きの局所変数などの 領域をさすスタYク・ポインタの値をdisplayへ入れる。 下線き からもどる直前Kは i 逆κ スタYクK絡献してあった古いdisplayの舗をdlsplaYKもどす。 ζれKより るる手続きの変 数やラベルが見える鎚囲1< il'J御があるときκは 対応するdlsplayをとをして ぞの手掛きの 領減をacce困eするζとができる 。 たとえば 手続きq から手続きPを
よぶ栂会2リ〆ク合よびd 1 splay rt>峻fは図7のようKなる.
5. 1. 2. 非同所的gotoのほめい
l'離さの そcへgotoでぬけだすときは とびさきの下続き(または 主絡}を実行していたと きの環療に在るまでdlsplayの状僚をもどさなければならないが スタタクのblLse address
(d1SP18Tできされる脅地)は新しぐとられた領域ほど為、 あ きい(スタックののび方が逆だとち いさい〕ととを利用すると っき・のようKすればできる。
とびさきの予続き白レベルlのdlspJaytcは 期待される似がはいっている。したがって!
とれはその ままKして沿いて ほかのdlaplayの値は νベルユのdlaplLyの値よりちいさ〈
{スタyタののびtJたが逆のときは,...き()なるまでたくってIA(。 す老わち その
dleplay がさす積額 に俸制されているdiaplayの値をdleplay tcのぜるという像作 を〈りかえす。 ζの操作は それまで実行していた予輯きより痛いνベルの dlaplay (がもし
あればそれHてついてもbと念わ念ければ念らな同。(しかし 1いかめレヘルKついてはすと念 う必艇は念吋 したがって! ずでKのべたようκ 手続きのνペルの般大値K依停する時舗が かかる.
たとえば 図8 Aのプログヲムで 手続き d 1 spユ'Yの状睦は閏8 Bのように怠る。
6. 1. a. 手輯き ・間数パラメタ
q2からr へとびだすときのスダ ア ク砂よび
かんがえうる方法はい〈っかある。 もっともかんえんなのは 手植き'Jiパラメタは その手
d.\Sfli!l)' 円凶白ル
P"しベル
A
P'"知咋
えタ"7
戸噸剖
?芭才、百ごし'C引してH 賓考T'うあよめ.,.
"'t \,冷"
相l�{明世)D)�
:sb�e皐ifr開口h
アももの(r�<ti)の
帽域
8.
q'"・主4寺中
局?
守,慌をp昔、易手揖きqをよJミヒきのえタック咽角道肘Jtsplay的権+r"・'"
q伺'""
JレカIlp
oラレぐんよリ(Y-也、〉志、、どを(qt-"pの局P斤手前ぎのヒ守) ,εuI',splayのM盈ド�,
� '1:. � �.,..;:. � Jずで:ズタν?の持向省、再うなL、150
."園内"" 1:..'"
""JI�?,晶,- ,
続きの人UlJ地と実行時嫌疑i す在わちdleplay (全体)から在るものとし その手続患を実 行するときには! よUだす側でそのときのdiaplayをすべてメタ タク上K退避L パラメタ としてわたされたdlaplayil)コピーをdieplaYKコピ L 帰ってきてから退避した
diflplayの偵をもとKもどす}j!まである。 実パラメタとLてdlsplayの全体をもってい〈必 要はか怠らずしもない(そのうちひとつだ吋をもっていき あとはgoto のはあいと同犠Kし てもとめるととができる)が その手続きを実行するさいI'(dlaplayを返超するととは省略で
き念いであろう。 訴嗣は 興味をも免れた読者にまかせたい。
放 適 化
ζれまでのととろでd. r第諸の}Jtま K<I>'9利点はなhようにみえる3 しかし との}j 法Kよれば 手続きPがその同所的変訟をほかのF続きKよって諺関されず かつほかの乎輔 さから非局,}i的goto でそのなかκとんでとられるととも在hときKは 5. 1. 1の傑作を訟と 念う必要がない(えだL. 実行中の手続きの領域の場地法 メタ Y タ ポインタとして刷Kも
っているとすゐ).そのほあいには手続きの実行の効噺はもともと非局所笈数をもた念'" (た占
paecaユ(BrinCh
Hanaon 7,,)やDCPL(RichardB611)のよう攻)盲 従来の}j 訟をもらいたばあいでも緑川塩化の余地はあるが。 ζの方泌K(らlinkの削除
Paecalでは 各手嗣きの領減のさ訴さPきさはコンパイル時Kきまる@で 手酎きの実行前κ スタ ヨ ク ポインタをふやL (へらし) 実符後K'"なじだけへらす(ふやす)命令を興行さ せれば dynamlc linkは不便である, -t左わち dy日mic 11nk として保存すべき情報 を あらかじめプログラムの念かKうめとむζとができる。 とうするζとKよって 手縦きの 実行tてかかるコストを 時旬 繊所とも K . 多少節約するととができる。
ド生成子Vてかんしてい〈っかち加さなエピソ
151
向 ":Z�.j18・1‘の宜:"(1
-・一向 倒
た('・ベ宅き
‘g也、ιε....
#崎両省;,
�'to'" ;"'plQIOt4"tð.tio帆" . 帽唱
�.タック
副司之のXH<1>
、
ヲベルの処理
EPコンパイヲと その.,ユoomのためのコー
""'"今
隊車副正..句I:
田園:d.雌2霊 守之,
国科 “血t; 色,J.:
同b q2i- ad,
戸温姐A副主p1;
匹E国品E亀
岡i抱φ 宅t; .. . 岡山
pι ー岡山
'. ti �団�.
畠..1.;
uι
p2;
P届出込品且 r;
油国i
えほConcurrar目 指とひとし〈なる。
ベてむずかしい。
dynamlc 1;
...蝿:fu'" (",.
〆川一;"Jo 1剛1
1 ・F
皐4
A‘
5. 1. 4
5. �
a
ードがあるが. そのうちのひとつは EPコード上@ヲベルの処鍾Kかんするととである.
EPコンパイラは分岐命令の行先訟よび先行参照のため陀ラベルを生成するが コード生成徳 はその処理をほとんどすべて連係踊鏡子(l1nkage ed1 tor)の先行番照機能Kまかせている。
す傘わち ラベルがそれへのil照よりもさき κあらわれるばあいもふ 〈めて ラベルの定穫に たいしては「先行J il閣の定義 ;Il i!(Hcだいしては
民
句審附を出力する。 先行.照は 目的プログラムのお、わþ�で保持される。
従来のコYパイヲ〔金制70)は 手瞬きぷ体(宜宮Kつづ< beginから対応する・nd まで〉
単位でコ ド・ バフ フ 7ヘコードをかきため。 できる阻þ<D先行li闘を解決したうえで外歯車へ かきだしていた。 そDためκ字離き本体G!)$-$;>きさKは制噴があったが それはるたらしい処 理系では危ぐ念った.
しかし 連係編集子は先行.照をO(n' )の算浅で処種しているらし〈 ちいさ傘プログラム のほあいにはだ分高速で連係嗣集が急、と念われるが, たとえば廊崎プログヲムで約4300行あ るEPコンパイヲ(パス, )の連係嗣集Kは全CPU時間でお:) 7. 8分かかる(.I.!elcom Coemo 700
で\尚己コンパイル(E Pコード生日党支で)1(約t. 8分 そのEPコードから目的プ日グヲムを 生成するのK約n ,分かかるとと 先行;Il照がほとんどない同鰻度の目的プログヲムの連係輔 S絡がn ;} - n 1分でできるととをかんがえると。 符当I($>そいととがわかるだろう.
11後K
Paecal-EPを再移備と緩遁化のしやすい処理系Kするという円僚は一広遥せられ免とかも う. しかし をだ移備はしてh念いL.. op乞1祖1zerもできてい在いので 決定的在野倫を〈
だすととはできをい。 しかL 従来のコンパイラ(金凶79)と比鮫すると 目的プログラム拡 optl皿"・rをと*さ念〈てもすでにコードの念がさで倉'J20\fi 実行時叫でも 10 - 20 11減 少した. ただし 目的プログラムをつぐる�での時閣は! みじかいプログラムの悶あいでも
30・ltIぐらい EP コンパイヲ 陀いたっては 6節でのべえ理由Kよタ5傍以上かかる。
" ,骨 文 献
(Ammann,U.771 On the code generation in a paacal compiler,Software practice and experience,7,391-423
(バルマ, デピッP 地内) :1<.#��酎"細長入門?包品.1, 1I:5-1I:7(�:舛図局之〉。
from Computer,lO:5,14・28[1977]
【Brinch Kansen,P. 75] The programm斗ng language Concurrent Pðsca!,IEEE Trana. on
SOftware Englneering,SEl:2,199-207
[Els同rth,E.F 叩J Cn岬iletion via an inter冊diate langua�e,Computer Journal,
22・3,226-2])
【疋幽・属鹿76) "",、"の.,トを附い免Pascalの穆祖。 日経.ν,ト..タ足。 1976.12.3. 10。ー, "
【金図 ."】 東京大学像u富市.II�"'#-It:;&.けるPasc・'K�納て. ..育期"a・-':0'#一暢管 陶13. ]-25
C荷村知行河) Pasc・, ,側司p・,,,のportabol ι"の向上を・0ざして! 策偉大7'攻守詳併究科.合前文
- 9
1 n
v e
i
h
MU醐 MM句O
aE P
n
02
向主 h
t
抽
h d l T p
g m
e n z h
i
e a l e x
押印U∞向
叫
〉 主 C P
ko
Ea t
閉山副
p o
t
e n
A
h e z L i u p
河f配t
t 6 t s e
ZM
nvn g d .。
ka c zd
陶e副
proc. Af'IPS 回目
H
ー152 -
..,関内内<>グ
•