X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fcasl2_spec%2Fcasl2_spec.texi;h=2bde49e4d47caf1b735b49d9bc357c3d6bf9790e;hb=be496380efb4018b38076cfadb4b790fa388a1e3;hp=84b4c22ec82d67928c8f588441debee1d63a11eb;hpb=db72b99e0ddad50852fa89e94b0df287f3c1b5bd;p=YACASL2.git diff --git a/doc/casl2_spec/casl2_spec.texi b/doc/casl2_spec/casl2_spec.texi index 84b4c22..2bde49e 100644 --- a/doc/casl2_spec/casl2_spec.texi +++ b/doc/casl2_spec/casl2_spec.texi @@ -30,7 +30,7 @@ Copyright @copyright{} Information-technology Promotion Agency, Japan. All right @item 1語は16ビットで,そのビット構成は,次のとおりである。 -@image{img/1_1-01,15cm} +@image{img/1_1-01,15cm,,,.svg} @item 主記憶の容量は65536語で,そのアドレスは0~65535番地である。 @@ -92,39 +92,39 @@ Copyright @copyright{} Information-technology Promotion Agency, Japan. All right ここで,一つの命令コードに対し2種類のオペランドがある場合, 上段はレジスタ間の命令,下段はレジスタと主記憶間の命令を表す。 -@image{img/1_2-00,15cm} +@image{img/1_2-00,15cm,,,.svg} @subsection ロード,ストア,ロードアドレス命令 -@image{img/1_2-01,15cm} +@image{img/1_2-01,15cm,,,.svg} @subsection 算術,論理演算命令 -@image{img/1_2-02,15cm} +@image{img/1_2-02,15cm,,,.svg} @subsection 比較演算命令 -@image{img/1_2-03,15cm} +@image{img/1_2-03,15cm,,,.svg} @subsection シフト演算命令 -@image{img/1_2-04,15cm} +@image{img/1_2-04,15cm,,,.svg} @subsection 分岐命令 -@image{img/1_2-05,15cm} +@image{img/1_2-05,15cm,,,.svg} @subsection スタック操作命令 -@image{img/1_2-06,15cm} +@image{img/1_2-06,15cm,,,.svg} @subsection コール,リターン命令 -@image{img/1_2-07,15cm} +@image{img/1_2-07,15cm,,,.svg} @subsection その他 -@image{img/1_2-08,15cm} +@image{img/1_2-08,15cm,,,.svg} @unnumberedsubsec 注 @@ -170,7 +170,7 @@ JIS X 0201 ラテン文字・片仮名用8ビット符号で規定する文字 @item 次に符号表の一部を示す。 @* -@image{img/1_3-01,5cm} +@image{img/1_3-01,5cm,,,.svg} 1文字は8ビットからなり,上位4ビットを列で,下位4ビットを行で示す。 例えば,@code{間隔},@code{4},@code{H},@code{@backslashchar{}}のビット構成は,16進表示で,それぞれ20,34,48,5Cである。ビット構成が21~7E(及び表では省略しているA1~DF)に対応する文字を図形文字という。 図形文字は,表示(印刷)装置で,文字として表示(印字)できる。 @@ -195,7 +195,7 @@ CASL IIは,COMET IIのためのアセンブラ言語である。 @item 命令行および注釈行は,次に示す記述の形式で,行の1文字目から記述する。 @* -@image{img/2_1-01,15cm} +@image{img/2_1-01,15cm,,,.svg} @end enumerate @unnumberedsubsec 注 @@ -227,7 +227,7 @@ CASL IIは,COMET IIのためのアセンブラ言語である。 命令は,4種類のアセンブラ命令(@code{START},@code{END},@code{DS},@code{DC}), 4種類のマクロ命令(@code{IN},@code{OUT})および機械語命令(COMET IIの命令)からなる。 その仕様を次に示す。 -@image{img/2_2-01,15cm} +@image{img/2_2-01,15cm,,,.svg} @section アセンブラ命令 @@ -235,7 +235,7 @@ CASL IIは,COMET IIのためのアセンブラ言語である。 @enumerate -@item @* @image{img/2_3-01,5cm} @* +@item @* @image{img/2_3-01,5cm,,,.svg} @* @code{START}命令は,プログラムの先頭を定義する。 @@ -243,22 +243,22 @@ CASL IIは,COMET IIのためのアセンブラ言語である。 また,この命令につけられたラベルは,他のプログラムから入口名として参照できる。 -@item @* @image{img/2_3-02,5cm} @* +@item @* @image{img/2_3-02,5cm,,,.svg} @* @code{END}命令は,プログラムの終わりを定義する。 -@item @* @image{img/2_3-03,5cm} @* +@item @* @image{img/2_3-03,5cm,,,.svg} @* @code{DS}命令は,指定した語数の領域を確保する。 語数は,10進定数(@geq{} 0)で指定する。語数を0とした場合,領域は確保しないが,ラベルは有効である。 -@item @* @image{img/2_3-04,5cm} @* +@item @* @image{img/2_3-04,5cm,,,.svg} @* @code{DC}命令は,定数で指定したデータを(連続する)語に格納する。 定数には,10進定数,16進定数,文字定数,アドレス定数の4種類がある。 @* -@image{img/2_3-05,15cm} +@image{img/2_3-05,15cm,,,.svg} @end enumerate @section マクロ命令 @@ -267,17 +267,17 @@ CASL IIは,COMET IIのためのアセンブラ言語である。 @enumerate -@item @* @image{img/2_4-01,5cm} @* +@item @* @image{img/2_4-01,5cm,,,.svg} @* @code{IN}命令は,あらかじめ割り当てた入力装置から,1レコードの文字データを読み込む。 -入力領域は,256語長の作業域のラベルであり,この領域の先頭から,1文字を1語に対応させて順次入力される。レコードの区切り符号(キーボ-ド入力の復帰符号など)は,格納しない。格納の形式は,DC命令の文字定数と同じである。入力データが256文字に満たない場合, 入力領域の残りの部分は実行前のデータを保持する。入力データが256文字を超える場合, 以降の文字は無視される。 +入力領域は,256語長の作業域のラベルであり,この領域の先頭から,1文字を1語に対応させて順次入力される。レコードの区切り符号(キーボ-ド入力の復帰符号など)は,格納しない。格納の形式は,@code{DC}命令の文字定数と同じである。入力データが256文字に満たない場合, 入力領域の残りの部分は実行前のデータを保持する。入力データが256文字を超える場合, 以降の文字は無視される。 入力文字長領域は,1語長の領域のラベルであり,入力された文字の長さ(@geq{} 0)が2進数で格納される。ファイルの終わり(end of file)を検出した場合は,-1が格納される。 @code{IN}命令を実行すると,@code{GR}の内容は保存されるが,@code{FR}の内容は不定となる。 -@item @* @image{img/2_4-02,5cm} @* +@item @* @image{img/2_4-02,5cm,,,.svg} @* @code{OUT}命令は,あらかじめ割り当てた出力装置に,文字データを,1レコードとして書き出す。 @@ -287,13 +287,13 @@ CASL IIは,COMET IIのためのアセンブラ言語である。 @code{OUT}命令を実行すると,@code{GR}の内容は保存されるが,@code{FR}の内容は不定となる。 -@item @* @image{img/2_4-03,5cm} @* +@item @* @image{img/2_4-03,5cm,,,.svg} @* @code{RPUSH}命令は,@code{GR}の内容を,@code{GR1},@code{GR2},…,@code{GR7}の順でスタックに格納する。 -@item @* @image{img/2_4-04,5cm} @* +@item @* @image{img/2_4-04,5cm,,,.svg} @* -@code{RPOP}命令は,スタックの内容を順次取り出し,@code{GR7},@code{GR6},…,@code{GR1}の順で@code{GR}に格納する。` +@code{RPOP}命令は,スタックの内容を順次取り出し,@code{GR7},@code{GR6},…,@code{GR1}の順で@code{GR}に格納する。 @end enumerate @section 機械語命令 @@ -359,7 +359,7 @@ OSは,入出力装置や媒体による入出力手続の違いを吸収し, 命令語の構成は定義しないが,次のような構成を想定する。ここで,@code{OP}の数値は16進表示で示す。 -@image{img/r_1-01,15cm} +@image{img/r_1-01,15cm,,,.svg} @section マクロ命令 @@ -390,19 +390,19 @@ LABEL PUSH 0,GR1 @item 算術左シフトでは,ビット番号14の値が設定される。 @* -@image{img/r_1-02,15cm} +@image{img/r_1-02,15cm,,,.svg} @item 算術右シフトでは,ビット番号0の値が設定される。 @* -@image{img/r_1-03,15cm} +@image{img/r_1-03,15cm,,,.svg} @item 論理左シフトでは,ビット番号15の値が設定される。 @* -@image{img/r_1-04,15cm} +@image{img/r_1-04,15cm,,,.svg} @item 論理右シフトでは,ビット番号0の値が設定される。 @* -@image{img/r_1-05,15cm} +@image{img/r_1-05,15cm,,,.svg} @end enumerate @section プログラムの例 @@ -413,15 +413,15 @@ COUNT1 START ; ; 処理 ; GR1 中の'1'のビットの個数を求める ; 出力 ; GR0:GR1 中の'1'のビットの個数 PUSH 0,GR1 ; - PUSH 0,GR2 ; Count = 0 - SUBA GR2,GR2 ; 全部のビットが'0'? - AND GR1,GR1 ; 全部のビットが'0'なら終了 - JZE RETURN ; Count = Count + 1 -MORE LAD GR2,1,GR2 ; 最下位の'1'のビット 1 個を - LAD GR0,-1,GR1 ; '0'に変える - AND GR1,GR0 ; '1'のビットが残っていれば繰返し - JNZ MORE ; GR0 = Count -RETURN LD GR0,GR2 ; + PUSH 0,GR2 ; + SUBA GR2,GR2 ; Count = 0 + AND GR1,GR1 ; 全部のビットが'0'? + JZE RETURN ; 全部のビットが'0'なら終了 +MORE LAD GR2,1,GR2 ; Count = Count + 1 + LAD GR0,-1,GR1 ; 最下位の'1'のビット 1 個を + AND GR1,GR0 ; '0'に変える + JNZ MORE ; '1'のビットが残っていれば繰返し +RETURN LD GR0,GR2 ; GR0 = Count POP GR2 ; POP GR1 ; RET ; 呼出しプログラムへ戻る