X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=doc%2Fyacasl2.html;fp=doc%2Fyacasl2.html;h=47d47b548ebc64182f7ee8e727816c57dfa4b68c;hp=5354d83b3a65f6b1511b3f5325d222aa9b1dbfaa;hb=e934f979236c43e098be7b500e7bc11103911630;hpb=c4f3377b7b6a88cbdab9813584f8891e3397e242 diff --git a/doc/yacasl2.html b/doc/yacasl2.html index 5354d83..47d47b5 100644 --- a/doc/yacasl2.html +++ b/doc/yacasl2.html @@ -109,38 +109,38 @@ pre.example em {

Table of Contents

-

- +

1 YACASL2の概要

@@ -233,46 +232,37 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

要件

-

YACASL2は、Linux上で動作します。現在動作を確認しているのは、次のディストリビューションです。 +

YACASL2は、LinuxやMac OS Xなど、UNIX系のOS上で動作します。現在動作を確認しているのは、次の環境です。

-

インストール時に、tar、gcc、makeが必要です。 +

インストール時に、tar、gcc、makeが必要です。Linuxの場合は、標準でインストールされていることが多いと思います。Mac OS Xの場合、Xcodeをインストールしてください。 -

- +

2 YACASL2のインストール

YACASL2をインストールするには、Linux上で次の作業をします。 -

    - -
  1. YACASL2ファイルのダウンロード - -
  2. YACASL2ファイルの検証 - -
  3. YACASL2ファイルの展開 - -
  4. casl2、comet2、dumpwordのビルド - -
  5. casl2の実行テスト - -
  6. 詳細なテスト - -
  7. 環境変数PATHの設定 -
+

2.1 YACASL2ファイルのダウンロード

-

GitHub/j8takagi/YACASL2のダウンロードページから最新版のtgzファイルをダウンロードします(2010年3月6日現在、v0.1のj8takagi-YACASL2-6323ce4.tar.gz)。 +

次の場所から最新版のtar.gzファイルをダウンロードします。 +

+GitHub/j8takagi/YACASL2のダウンロードページ +

続けて、対応するmd5sumファイルをダウンロードします(2010年3月6日現在、j8takagi-YACASL2-6323ce4.tar.gz.md5sum)。 +

+

2.2 YACASL2ファイルの検証

ダウンロードが完了したら、md5sumとdiffで正しくファイルがダウンロードができているかを検証します。 @@ -280,13 +270,17 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

  $ md5sum yacasl2.tar.gz | diff -s yacasl2.tar.gz.md5sum -
   Files yacasl2.tar.gz.md5sum and - are identical
 
-

2.3 YACASL2ファイルの展開

+

+ +

2.3 YACASL2ファイルの展開

YACASL2ファイルをダウンロードしたら、次のコマンドで展開します。

  $ tar xvzf yacasl2.tar.gz
 
-

2.4 casl2、comet2、dumpwordのビルド

+

+ +

2.4 casl2、comet2、dumpwordのビルド

展開したら、次のコマンドでcasl2、comet2、dumpwordをビルドします。 @@ -315,7 +309,9 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試 gcc -g -Wall -I ../include -o ../dumpword dumpword.o word.o cerr.o make[1]: Leaving directory ‘/home/kazubito/yacasl2/src’ -

2.5 casl2の実行テスト

+

+ +

2.5 casl2の実行テスト

ビルドしたら、次のコマンドが正常に実行できるかを確認します。 正常に実行された場合は、「Hello, World!」と表示されます。 @@ -323,7 +319,9 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

  $ ./casl2 as/hello.casl
   Hello, World!
 
-

2.6 詳細なテスト

+

+ +

2.6 詳細なテスト

次のコマンドを実行すると、正常にビルドできているかどうかを詳細にテストできます。 @@ -338,7 +336,9 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試 /dumpword/Test.log All tests are succeded. -

2.7 環境変数PATHの設定

+

+ +

2.7 環境変数PATHの設定

環境変数PATHにYACASL2のディレクトリを追加すると、どのディレクトリでもcasl2、comet2、dumpwordを実行できます。 @@ -355,13 +355,14 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

  $ echo ’PATH=$PATH:~/yacasl2 && export PATH’ >>~/.bashrc
 
-

- +

-

3 YACASL2 の使い方

+

3 YACASL2の使い方

YACASL2 は、テキストファイルに記述されたCASLプログラムを処理します。以下の例で用いられるCASLプログラムのファイルは、テキストエディタなどで作成してください。また、インストールしたディレクトリの中にあるasディレクトリからコピーして作成することもできます。 +

+

3.1 実行結果の出力だけを表示

インストール時にコマンド実行の確認に使ったhello.caslは、次のような内容です。CASL IIのマクロ命令OUTは、文字列を出力します。 @@ -398,32 +399,9 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

実行内容を確認するには、後述のようにCPU 内にあるレジスタやメモリの内容を表示するか、結果を出力するための処理を追加する必要があります。 -

sum_10.caslは、1から10までの整数の和を求めます。 +

-

  $ cat sum_10.casl
-  ;;; sum_10.casl
-  ;;; 出力 GR0: 1から10までの整数をすべて加算した値
-  MAIN    START
-          PUSH    0,GR1
-          LAD     GR0,0           ; GR0を初期化
-          LD      GR1,FST         ; GR1に初項を転送
-  LOOP    ADDL    GR0,GR1         ; ループ先頭
-          ADDL    GR1,STEP        ; GR1 <- GR1 + 公差
-          CPL     GR1,LST         ; GR1が末項より大きい場合は終了
-          JPL     FIN             ; ↓
-          JUMP    LOOP            ; ループ終端
-  FIN     POP     GR1
-          RET
-  FST     DC      1               ; 初項
-  LST     DC      10              ; 末項
-  STEP    DC      1               ; 公差
-          END
-
-

このプログラムも、オプションなしで実行した場合には結果が出力されません。 -

  $ casl2 sum_10.casl
-  $
-
-

3.2 アセンブル結果の確認

+

3.2 アセンブル結果の確認

casl2の処理途中で行われるアセンブルの結果を表示するには、オプション-aを指定します。また、ラベルとアドレスの対応表を表示するには、オプション-lを指定します。 @@ -512,6 +490,8 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

なお、オプション-Aを指定すると、アセンブル結果が表示される時点で処理が終了します。仮想マシンCOMET II での実行は行われません。 +

+

3.3 実行時のレジスタとメモリを表示

YACASL2では実行中のCPUのレジスタとメモリの内容をそれぞれ、-tと-dを指定することで表示できます。 @@ -573,7 +553,9 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試 #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 #0004: 0000: 1010 0005 2210 0006 8100 0003 0001 0000 -

3.3.1 特定のレジスタを表示

+

+ +

3.3.1 特定のレジスタを表示

addl.caslのレジスタやメモリの中で、実行中に値が変化しているのはGR1だけです。こうした場合は、grepを使って表示される内容を絞り込むことで動作を検証しやすくなります。 @@ -596,17 +578,46 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試 ADDL GR1,B
+

+

3.3.2 プログラム終了時の値を表示

grepとtailを組み合わせれば、プログラム終了時の値を表示できます。 +

addl.caslでプログラム終了時の値を確認するには、次のようにします。 +

  $ casl2 -t addl.casl | grep 'GR1:' | tail -1
   #0004: GR1:      4 = #0004 = 0000000000000100
 
-
  $ casl2 -t sum_10.casl | grep 'GR0:' | tail -1
+ 

sum_10.caslは、1から10までの整数の和を求めます。 + +

  $ cat sum_10.casl
+  ;;; sum_10.casl
+  ;;; 出力 GR0: 1から10までの整数をすべて加算した値
+  MAIN    START
+          PUSH    0,GR1
+          LAD     GR0,0           ; GR0を初期化
+          LD      GR1,FST         ; GR1に初項を転送
+  LOOP    ADDL    GR0,GR1         ; ループ先頭
+          ADDL    GR1,STEP        ; GR1 <- GR1 + 公差
+          CPL     GR1,LST         ; GR1が末項より大きい場合は終了
+          JPL     FIN             ; ↓
+          JUMP    LOOP            ; ループ終端
+  FIN     POP     GR1
+          RET
+  FST     DC      1               ; 初項
+  LST     DC      10              ; 末項
+  STEP    DC      1               ; 公差
+          END
+
+

sum_10.caslでファイル終了時の値を確認するには、次のようにします。 + +

  $ casl2 -t sum_10.casl | grep 'GR0:' | tail -1
   #0010: GR0:     55 = #0037 = 0000000000110111 = '7'
 
-

3.3.3 プログラムのステップ数を表示

+

+ +

3.3.3 プログラムのステップ数を表示

grepとwcを組み合わせれば、プログラムのステップ数を表示できます。 @@ -621,7 +632,9 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

  $ casl2 -t sum_10.casl | grep 'GR0:' | wc -l
   54
 
-

3.4 アセンブルと実行を別に行う

+

+ +

3.4 アセンブルと実行を別に行う

casl2に-Oファイル名を指定すると、オブジェクトファイルを作成できます。 @@ -642,7 +655,9 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

  $ comet2 hello.o
   Hello, World!
 
-

3.5 1語の解析

+

+ +

3.5 1語の解析

CASL IIでは、1語(16ビット)を単位としてデータが処理されます。 dumpwordは、指定した1語を10進数、16進数、2進数で表示します。 @@ -660,7 +675,9 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

  $ dumpword '#0048'
    #0048:     72 = #0048 = 0000000001001000 = 'H'
 
-

3.6 CASL2ライブラリの使用

+

+ +

3.6 CASL2ライブラリの使用

YACASL2のas/casl2libディレクトリには、CASL IIで記述されたライブラリファイルが格納されています。 @@ -678,7 +695,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

3.6.1 数値を出力する

-

3と1の和を求めるaddl.caslで演算結果を出力するには、まずaddl.caslを編集します。CASL IIのCALL命令でOUTLを副プログラムとして呼び出すようにします。 +

3と1の和を求めるaddl.caslで演算結果を出力するには、まずaddl.caslを編集します。CASL IIのCALL命令でOUTLを副プログラムとして呼び出します。

  $ cat addl_outl.casl
   MAIN    START
@@ -695,8 +712,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
 
  $ casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl
   4
 
-

- +

4 YACASL2コマンドマニュアル

@@ -712,7 +728,7 @@ YACASL2のコマンドとオプションについて解説します。
  $ casl2 hello.casl
 
-

副プログラムを呼び出す場合は、複数のCASLファイルを指定することもできます。 +

複数のCASLファイルを指定することで、副プログラムを呼び出せます。

  $ casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl
 
@@ -800,8 +816,7 @@ YACASL2のコマンドとオプションについて解説します。
-h
--help
dumpwordの使用方法を表示して終了します。 -

- +

5 CASL2LIBマニュアル