ミニコン用コンパイラー NIT-FORTRAN について

Title
Author(s)
Citation
Issue Date
URL
ミニコン用コンパイラー NIT-FORTRAN について Design
of NIT-FORTRAN Compiler for Mini-Computer
丹羽, 敏行; 本田, 行雄
名古屋工業大學學報, 23: 349-357
1972-03-31
http://repo.lib.nitech.ac.jp/handle/123456789/1538
Rights
Type
Textversion
Departmental Bulletin Paper
publisher
・名古屋工業大学学術機関リポジトリは、名古屋工業大学内で生産された学術情報を
電子的に収集・保存・発信するシステムです。
・論文の著作権は、著者または出版社が保持しています。著作権法で定める権利制限
規定を超える利用については、著作権者に許諾を得てください。
・Textversion に「Author」と記載された論文は、著者原稿となります。
実際の出版社版とは、レイアウト、字句校正レベルの異同がある場合もあります。
・Nagoya Institute of Technology Repository Sytem is built to collect, archive and
offer electronically the academic information produced by Nagoya Institute of
Technology.
・The copyright and related rights of the article are held by authors or publishers.
The copyright owners' consents must be required to use it over the curtailment of
copyrights.
・Textversion "Author " means the article is author's version.
Author version may have some difference in layouts and wordings form publisher
version.
名古屋工顎大学学報
349
第23巻(1971)
ミ ニコン用コンパイラー
NtT_F6RTRANについて
羽
丹
子
電
工
行 雄
田
敏 行・本
学
教
室
(1971年9月13日受理)
Design
Tosbiyuki
NIWA
and
DePartment
various
Then
are
the
merits,
3000
and
is
equations
is
have
to
been
13,
be
given
sample
45
after
use
by
sec.
cpu
wbicb
〃Co皿pile
and
use・
has
NIT-FORTRAN
tile
over
grammar
program
tlle
for
used
instructional
or
This
be
to
mini-computer
scientific
practiced・
the
executionl
out
carried
for
1971)
and
speed
The
easy
able
designed
bigb
especially,
handling.
JIS
solutions
FORTRAN■
new
many
compilers
for
insufficient
are
HoNDA
uf Electronics
FORTRAN
several
They
purposes.
Mini-Computer
Yukio
September
(Received
Tbere
for
Compiler
NIT-FORTRAN
of
solves
20
level
simultaI一eOuS
Twenty
Go''metl-od・
times.
<CPロ>
1.ま
え
が
き
語
長
サイクルタイム
最近,ミニコン(超′J\型電子計算機)が多方面で種々
16ピッ†+パリティビット
1.5〃s
活用されており,特に研究室単位での科学技術計算用と
記憶容量
4 Kw-32Kw
して,また高等学校などにおける情報処理教育用とし
演算方式
並列2進法
て,今後著しい普及が見込まれている。
命令数
39(基本)
+5
アドレス方式
1招方式,ページ式
間接アドレス
指定可
FORTRANなどのコンパイラも用意されるようにな
修
飾
Bレジスタ修飾
った。しかし,研究用,教育用として,まだ不充分な点
割
込
4レベル
このような背景から,ソフトウエアの面では,ミニ
コンといえどもアセンブラほもちろん
BASIC,
が多い。
そこで,筆者らもミニコン用として,
ベルの
FORTRAN
JIS3000
コンパイラを作成し,
NIT-
FORTRANと名付け,デバッグもほぼ完了したので,
その概要を報告するo
2.ハードウェアの構成と仕様
コンパイラ開発の対象としたミニコンは,
ように,基本構成(記憶容量4Kw+入出力タイプライ
グ)に近いものとした。その仕様は次の通りである。
Fig.1の
レ
(オプション)
350
Bulletin
入出力制御
Nagoya
of
lnstitute
of
Technology
γol.
(4)文
BUS方式
<入出力装置>
23
(1971)
法
本FORTRANのレベルは,補助入出力文を除いて
タイプライタ
JIS
1000字/分
フォトテープl)
500字/秒
-ダ
3000に準ずる。ただし,能率を落さない限りでき
るだけ拡張するようにした。また,あくまで上向きの互
換性を考え,
3.コンパイラの仕様
JIS
本FORTRANの設計にあたり,研究用だけでなく,
JIS規格以外の記述をさけた。
3000を拡張した部分は次のとうりである。
a)入出力変換にA変換を許し,文字データも扱え
るようにした。
教育用としても充分使用できるよう配慮した結果,次の
b)文番号及びSTOP文とPAロSE文に続く定数
ような種々の特長を持たせることができた。
(1)最小機器構成
に65535までのものを許す。
Fig.
c)継続行数を制限しない。
1にも示したように,基本構成+4Kwの低価
格のシステムから使用することができる。
d)
(2)翻訳と実行の芋川頁
Compile
and
DIMENSION文は,添字付変数を使用する前
であれば,どこに置いてもよい。
Goを原則とするが,ソース・プログ
e)
FあるいはE変換でEあるいはF塑のデータを
入力することができる。
ラムが長くて,オブジェクト・プログラムが記憶装置に
(5)プログラムとデータの記述形式
そのままでは入り切らない場合ほ,メッセジ印刷と同時
に自動的にオブジェクト・プログラムをパンチ出力す
プログラムは固定欄形式とし,データについては,デ
る。オブジェクT-・プログラムは2進のままで出力さ
ータとFORMATの作成を容易にするために,自由櫛形
れ,いつでも再入力し,実行することができる。
式と固定橋形式の折衷式とした,すなわち,
(3)オブジェクト・プログラムの形
翻訳,実行の方法には一般にFig.
FORMAT
中の偶の巾wおよび数値の型が入力データと対応ずけら
2のように2通り
れるが,改行コードあるいはスペースがw桁内にあれ
ば,その改行コードあるいはスペースをデータの切れ目
の方法がある。
とみなす。
a)トランスレータ形式-・・・これほ,コンパイラが
(6)エラーメッセジ
ソース・プログラムを翻訳した結果得られるオブジ
教育用という観点から,エラーメッセジほコンパイル
ェクト・プログラムが機械語になっていて,それを
実行して目的の処理を行う方法である。一般に,こ
時59,実行時15とできるだけ数を多くし親切なものとし
た。また,エラーメッセジ出力後も翻訳に支障のない限
の方法ではコンパイラの構成が複雑になるが,実行
り,そのステートメントの残りのエラーもチェックし,
時間が短縮される。
軽度のエラーに対しては,適当な形にオブジ工クト化す
b)インタープ1)一夕形式・・・・・・これは,ソース・プ
る。
ログラムをコード化された形のオブジェクト・プロ
エラーメッセジは3つのレベルに分類され,軽度のも
グラムに翻訳し,プログラムによってこれらのコー
ドを解釈しながら実行する方法である。この方法で
のに対してほ無視して実行することが可能,中度のもの
は,コンパイラの構成が簡単になるが,実行時間が
に対しては実行は不可能,重度の場合はコンパイル中止
長くなる。
となる。また,実行時においては,それぞれのレベルに
応じて,演算続行,演算一時停止,演算中止というよう
一般に,ミニコンのように/J\容量の記憶装置しか持た
ない場合は,実行速度を犠牲にしてコンパイラを簡単に
するのが普通で,市販のミニコン用FORTRAN
になる。
は全
てインタプリ一夕形式をとっている。本FORTRAN
(7)操
作
翻訳から実行までの操作はできるだけ簡単にし,原則
では,あえて前者のT.ランスレーダ形式を採用し,実行
として,
速度の向上をはかったo
うにした。また,翻訳時にスイッチ・レジスタを用い
SCCの値をセッ十するのは一度だけですむよ
て,入力機器の選択と1ステートメソ十ずつの処理が自
インタープリータ形式
由に指定できるようにし,デバッグの便をはかった。
4.翻訳ルーチン
トランスレータ形式
すでに述べたように,算術代入文及び無条件GO
Fig・
2
Compiling
and
executing
method
文などは直接機械語の形のオブジェクトになるが,その
TO
名古屋工業大学学報
351
第23巻(1971)
73
Fig.
72
word
5
Statment
wor
area
read
4-2.ステートメント分類ルーチン
読み込まれたステートメントが,テーブルにある
D
⊂)
D
O
'オ
ク
フ■_
ー
TO,
FORTRAN語文字列(GO
ズ
ー
⊂コ
ン
DO,
FORMAT
ど)で始まっているかどうかをチェックし,一致すれ
ば,その文字列に対応する各ステ一丁メンTl処理)t'-チ
ンに分岐し,一致しない場合は算術代入文とみなして処
P
A
S
U
T
C
エ
R
引
ド
∈
T
の
コ
(Fig.
書
■
ー
U
文
し
R
3
字
列
地
ド
暮育代人文
王推するステートルト
処確ルーチン
の処理JL -テン
N
Fig.
Fig.
6)
P
L
敦
ン
理する。
0
A
実
∈
Formats
of
object
6
Statement
sort
program
他のステートメン†のオブジェクト形式をFig.3に示す。
routine
4-3.シラブル・リード・ルーチン
翻訳ルーチンを構成する主なプログラムは
シラブル・
(1)ステートメン†読み込みルーチン
1) -ド・ルーチンは変数処理ルーチンと定
数処理)I,-テンとで構成され,読み込まれた文字列が変
(2)ステートメント分類/レーテン
(3)シラブ/t'・
数か定数かに応じてそれぞれの処理ルーチン-分岐す
1)-ド・)t'-チン
る。
(4)ステートメント処理ルーチン
変数処理ルーチンでは,変数が新しく定義されたもの
(5)オブジェク†格納ルーチン
かどうかを判定し,新しい変数ならば,変数名か関数名
である。
あるいはサブルーチン名かを判定し,それぞれに番地を
4-1.ステートメント読み込みルーチン
割り当てる。
ソース・プログラムを1行読み込んで,所定のバッフ
17に格納する.読み込んだステートメン†が注釈行であ
れば,その上に次の1行を読み込み,継続行の処理をす
る。
定数処理ルーチンでは,読み込まれた文字列(lo逸
数)を2進の整定数あるいは実定数に変換し,割り当て
られた番地に格納する。
(Fig.4)
(Fig.
7)
バッファはFig.5のような構成で,ソースの1字が
1語に対応し,
す。また,
1行は72字までとし73字以降は読み飛ば
72字以内に改行コードがあれば72字までスペ
ースをつめる。
Fig.
7
Syllable
read
routine
4-4.ステートメント処理ルーチン
このルーチンは,代入文,制御文,入出力文,宣言
文,およびFORMAT文を機械語命令に変換し,オブ
ジェクー格納ルーチンを用いて,主記憶装置に格納する
Fig.
4
Statement
read
routine
か,あるいはパンチ出力する。
(Fig. 8-20)
な
352
Bulletin
of
Nagoya
lnstitute
of Technology
γol.
23
(1971)
4-5.オブジェクト格納ルーチン
翻訳されたオブジェクト・プログラムを1語ずつ主記
憶装置に格納する。途中で1passのオブジェクT.領域
に入り切らなくなれば,それまでに格納したオブジェク
ト・プログラムを,再入力用
LOADERで読み込み可
能な形のバイナリ・モードにしてパンチ出力する。以
後,
1ステートメント翻訳するごとにオブジェクト・プ
ログラムをパンチ出力する。
パンチ出力するとき,次の点が問題になる。
(1)オブジェクト・プログラム格納開始番地がずれ
る。
(2)オブジェクト・プログラムの長さが,
2pass
Fig.
に切り替った時点では不定である。
Compile
9
and
(3)テーブル類もー緒にパンチ出力しなければなら
routine
computed
of
GO
GO
TO
statement
TO
statement
ないo
システム入力用のブート・ストラップでほバイナ1)
・
テープの先頭に,格納開始番地,語数,実行開始番地の
3語がパンチされていなければならないので,上の形の
パンチ出力されたオブジェクト・プログラムに対しては
別の形のプログラム(LOADER)を用意しなければな
らない。
Fig.
8
Compile
statement
routine
of
Fig.
10
Compile
routine
of
arithmetic
Fig.
ll
Compile
routine
of
DO
statement
arithmetic
Fig.
12
Compile
statement
routine
of
CONTINUE
IF
名古屋工業大学学報
PAUS
E文
353
第23巻(1971)
STOP文
メインルーチンヘ
復帰するプログラ
ムを格納
Fig.
15
Compile
routine
of
R
ETURN
statemerlt
Fig・
13
Compile
of
routine
PAUSE/STOP
statement
Fig・
16
Compile
routine
of
READ/WRITE
statement
Fig.
14
Compile
routine
of
CALL
statement
Fig.
18
Compile
of
routine
DIMENSION
statemerlt
Fig.
17
CoT11pile
routine
of
FORMAT
statement
354
Fig.
19
Compile
Bulletin
of
routine
of
lnstitute
Nagoya
Technology
of
γol.
23
(1971)
SUBROUTINE
statement
Fig.
21
Object
store
routine
5.実行ルーチン
次のステートメントヘ
翻訳されたオブジェクト・プログラムを処理実行する
ルーチンは次のようなプログラムで構成されている。
(1)演算実行ルーチン
(2)計算塾GO
TO文実行ルーチン
文実行ルーチン
(3)算術IF
(4) DO文実行ルーチン
(5) DO
close実行ルーチン
(6) PAUSE/STOP文実行ルーチン
(7) CALL文実行ルーチン
(8) RETURN文実行ルーチン
(9) READ/WRITE文実行ルーチン
Fig.
20
Compile
routine
END
of
(10) FORMAT文実行ルーチン
statement
(ll)オブジェクト再入力用LOADER
Ta.ちle
1
Arithmetic
内
2倍長のデ-メをロ-ドする
LD
TD
2倍長のデータを格納する
and
subroutines
容
"記
IFIX
FLOAT
AD
倍精度加算
TABS
SD
倍精度減算
ABS
MD
倍精度乗算
SIN
DD
倍精度除算
FA
浮動′ト数点加算
ATAN
FS
浮動′J、数点減算
TANE
FM
FD
POW
1
POW2
POW
3
COS
号
lntrinsic
functions
容
内
実数形-整数形
整数形-実数形
l∬【(整数形)
】xl (実数形)
SlnX
COSX
tanLIx
tallb∬
浮動小数点乗算
EXP
浮動小数点除算
ALOG
べき乗(整数の整数乗)
SQRT
べき乗(実数の整数乗)
ISIGN
符号のつけかえ(整数形)
べき乗(実数の実数乗)
SIGN
符号のつけかえ(実数形)
e・)-
logtノX
ヽ//:
xL
名古屋工業大学学報
355
第23巻(1971)
5-1.演算実行ルーチン
補助ルーチンを除いた各種の演算サブルーチンを,組
み込み関数と共にTable
lに示す。
5-2.制御ステートメント実行ルーチン
GO
制御ステートメントは無条件
ずれもFig.
Bootstrap
TOを除いて,い
の入口
3のような2語以上で構成されているが,
いずれも実行時の処理は簡単である。
5--3.入出力ステートメント実行ルーチン
READ文,
WRITE文の実行は,
容を参照しながら,
Fig.
FORMATの内
22のような形で行われる。
FORMAT文に制御の流れがきた時は,エンド・コ
ードまで読み飛ばし,次の命令の実行に移る。
5-4.オブジェクト再入力用
LOAI)ER
Fig.
パンチ出力されたオブジェクTl
イラーの一部を壊して再入力する。
(Fig. 23)
Loader
6.文
法
本FORTRANで使用できるステートメントは次の
WRJTE
.READ
23
・プログラムをコンパ
とうりである。
(1)算術代入文
(2)無条件GO
TO支
(3)計算型GO
TO支
(4)算術'IF文
(5) DO文
(6) CONTINUE文
(7) STOP文
(8) PAUSE文
(9) CALL文
(10) RETURN文
(ll) READ支
(12) WRITE文
(13) FORMAT文
(14) DIMENSION文
任5) SUBROUTINE文
(16)文関数定義文
(17) END文
主な制限事項は次のとうりである。
(1)整定数の絶対値は
2147483647
(281-1)を越
えてはならない。
(2)実定数の絶対値は約10士38
を越えてはならな
い。
(3)実定数は小数部,整数部とも9桁までとする。
Fig.
22
READ/WRITE
executer
(4)変数名は4文字までとする。
(5)文番号は65535以内の符号のつかない整定数
356
Bulletin
Nagoya
of
institute
of Technology
(変数の数)
+
(定数の数)
L-E
≦256
600
(7)文番号は96個までとする。
CONTINUE
AA-A(L,
(8) DOの深さは10重(入出力リスTl中のDOほ
Ⅰ)
5,
IF(AA)3,
含まない)までとする。
5 WRITE
(9)配列は2次元までとする。
H,
(ll) FORMAT中の変換記号ほⅩ,
A,
9999
3DO700K-I,
Ⅰ, F,
NI
ALK-A(L,
Eのみとする。
す
び
本FORTRAN
700
K)
A(L,
K)-A(I,
A(I,
K)-ALK
200
に,種々の大虫,小虫が見つけられ,その都度コンパイ
A(I,
N1
∫)-A(Ⅰ, ∫)/AA
ラの改造を行って,現在はデバッグもほぼ完了したと思
DO300K-1,
われる。
IF(I-K)1,300,
1
いままでの使用結果から次の諸点が明らかとなり,雫
(1)コンパイル速度
PTR
の性能に負うところ
が多く, HIPACIO3のほぼ3倍であるt〕
A(K,
300
CONTINUE
100
CON■TINUE
C
BY
TANEOUS
program
C
LINEAR
T.
EQUATIONS
SEP.
FORMAT
(Ⅰ4)
1020
FORMAT
(F20. 5)
1030
FORMAT(24HNUMBERS
WRITE
A
6,
1040
FORMAT
1050
FORMAT(/5X,
1060
FORMAT
'71
EQUATIONS
(E15.7,
;
2HX(,
(22ENO
/)
4E16.7)
UNIQUE
12,
3H
)-,
E14.7)
SOLロTION
!.T.I)
(20, 21)
END
1010) N
(3)システム入力に要する時間
PTRの性能とコンパイラーのコンパクトさが
Nl-N+1
READ(5,
1020)
((A(Ⅰ,
∫), ∫-1,
(6, 1030) N
500
WRITE(6,
る23秒で,
FORTRANシ′ステム・テープを読
(4)コンパイル量
1040) (A(Ⅰ,
∫), ∫-1,
Nl)
1pass
で実行することのできるソース・プロ
グラムの大きさは最大200ステートメンTlであっ
N
AA-0.
たが,これはIFと
DO600K-I,
AAB-ABS
N)
HIPACIO3の1/10以下にあた
み込むことができる。
Ⅰ-1,N
DOIOOI-1,
大きく効いて,
Nl)
Ⅰ-1,
WRITE
500
OF
(6, 1000)
READ(5,
DO
ELIMI
BY
Ⅰ3/r14HCOEFFICIENTS
C
DIMENSION
N
(A (K,
IF(AAB-AA)600,
GO
TOが多かったから
で,普通は100ステートメントぐらいまで可能で
ある。
I))
600,
2
N)
SIMUL
itキ
METHOD
GAロSS-JORDAN
OF
EQUATIONS
NIWA
Ⅰ-1,
Nl),
SOLUTION
1010
N-,
SIMUL
J)
1050) (Ⅰ,A(Ⅰ,
(57H***
NATION
い)は45秒である。
C
J)-AKI*A(I,
¥*/)
程式)の場合,清算時間(入出力時間を含まな
Sample
FORMAT
TANEOUS
と同程度
24のサンプル・プログラム(20元連立方
24
N1
J)-A(K,
WRITE(6,
1000
整形数演算の場合HIPACIO3の2倍程度
Fig.
1
I)
400J-Ⅰ,
400
(2)実行速度(莱,除算オプションなし)
実数形演算の場合HIPACIO3
N
AKI-A(K,
DO
用的には,まず満足のできるものであろう。
コンパイル速度は
K)
4DO200J-1,
が一応完成してから8ケ月ほどの間
Fig.
3
(6, 1060)
STOP
(1q)配列として使用する変数名ほ最大15個とする。
7.む
(]-97り
23
2 AA-AAB
でなけれはならない。
(6)
Vol.
今後の問題点としては,オブジ工クト領域を小さくし
名古屋工業大学学報
ないで,できるだけ文法の制限をゆるめ,拡張が容易な
終りに,本FORTRANの開発に当り,種々ご便宜を
ところほ含める。すなわち,
(1) COMMON文,
357
第23巻(1971)
はかっていただいた沖電気工業株式会社関係各位,なら
EQUIVALENCE
文を入れ
びにプログラミングを手伝っていただいた丸永哲男氏と
雁木秀一氏,また日頃適切なご助言をいただく名古屋大
る。
学理学部近藤一郎助教投の方々に深く感謝いたします。
(2) FUNCTION文を入れる。
(3)変数名を5ノ-6字までにする。
参
(4)型宣言文を入れる。
(5)改行制御を可能にする。
などである。またハードウエアの拡張に伴う,
TRANシ′ステムの拡張を容易にすることも重要な課題
考
文
献
1)宇野,和久田,山崎,栗田;沖電気時報,
FOR・
(1971)
2)岸田孝一;システム・プログラム入門,日本出版
協会
である。
3)
JISハンドブック(情報処理),日本規格協会
88,
p.I