From: j8takagi Date: Fri, 5 Mar 2010 23:37:04 +0000 (+0900) Subject: ドキュメントで、CASL2LIBの記述を追加 X-Git-Tag: v0.1p15~55 X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=commitdiff_plain;h=42426ae7769b50b3828c14cff716973b677bbb3e ドキュメントで、CASL2LIBの記述を追加 --- diff --git a/doc/.gitignore b/doc/.gitignore index 6f0dbad..ce8835d 100644 --- a/doc/.gitignore +++ b/doc/.gitignore @@ -1,5 +1,4 @@ html -texobj -yacasl2.pdf -yacasl2.dvi +yacasl2.?? +yacasl2.??? yacasl2.info diff --git a/doc/Makefile b/doc/Makefile index 87999f6..e5b87fd 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -24,8 +24,6 @@ $(DOCNAME).pdf: $(DOCNAME).dvi @$(DVI2PDF) $^ $(DOCNAME).dvi: $(SRC) @if test ! -s $(TEXOBJDIR); then mkdir $(TEXOBJDIR); fi; \ - cd $(TEXOBJDIR); \ - TEX=ptex texi2dvi --texinfo=@afourpaper -o ../$@ ../$^; \ - cd - + TEX=ptex texi2dvi -q --texinfo=@afourpaper $^ clean: - @rm -rf html $(TEXOBJDIR) $(DOCNAME).info $(DOCNAME).dvi $(DOCNAME).pdf + @rm -rf html $(TEXOBJDIR) $(DOCNAME).info $(DOCNAME).?? $(DOCNAME).??? diff --git a/doc/yacasl2.html b/doc/yacasl2.html index 5924b6a..7e6f407 100644 --- a/doc/yacasl2.html +++ b/doc/yacasl2.html @@ -1,7 +1,7 @@ YACASL2 - Linux上のCASL II処理系 - + @@ -106,7 +106,7 @@ pre.example strong {

YACASL2 - Linux上のCASL II処理系

-
+

Table of Contents

  • 2 YACASL2のインストール
  • +
  • 5 CASL2LIBマニュアル +
  • @@ -163,7 +205,7 @@ pre.example strong {

    1 YACASL2の概要

    -

    YACASL2は、Linux上で動作するオープンソースのCASL II処理系です。CASL IIは情報処理試験で用いられるアセンブラ言語で、次の資料により仕様が公開されています。 +

    YACASL2は、Linux上で動作するオープンソースのCASL II処理系です。CASL IIは情報処理試験で用いられるアセンブラ言語で、次の資料により仕様が公開されています。

    試験で使用する情報処理用語・プログラム言語など(2008年10月版)[PDFファイル] @@ -191,7 +233,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

    要件

    -

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

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

    • Ubuntu Linux 9.04 / 8.04 @@ -206,15 +248,15 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

      2 YACASL2のインストール

      -

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

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

        -
      1. yacasl2.tar.gzのダウンロード +
      2. YACASL2ファイルのダウンロード -
      3. yacasl2.tar.gzの検証 +
      4. YACASL2ファイルの検証 -
      5. yacasl2.tar.gzの展開 +
      6. YACASL2ファイルの展開
      7. casl2、comet2、dumpwordのビルド @@ -225,32 +267,28 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
      8. 環境変数PATHの設定
      -

      2.1 yacasl2.tar.gzのダウンロード

      +

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

      -

      (詳細未定) +

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

        $ cd
      -  $ wget somewhere/yacasl2.tar.gz
      -  $ wget somewhere/yacasl2.tar.gz.md5sum
      -
      -

      2.2 yacasl2.tar.gzの検証

      +

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

      (PGPを使った検証も導入予定) +

      2.2 YACASL2ファイルの検証

      -

      ダウンロードが完了したら、md5sumとdiffで正しくファイルがダウンロードができているかを検証します。 +

      ダウンロードが完了したら、md5sumとdiffで正しくファイルがダウンロードができているかを検証します。

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

      2.3 yacasl2.tar.gzの展開

      +

      2.3 YACASL2ファイルの展開

      -

      yacasl2.tar.gzをダウンロードしたら、次のコマンドで展開します。 +

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

        $ tar xvzf yacasl2.tar.gz
       

      2.4 casl2、comet2、dumpwordのビルド

      -

      展開したら、次のコマンドでcasl2、comet2、dumpwordをビルドします。 +

      展開したら、次のコマンドでcasl2、comet2、dumpwordをビルドします。

        $ cd yacasl2
         $ make
      @@ -279,7 +317,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
       

      2.5 casl2の実行テスト

      -

      ビルドしたら、次のコマンドが正常に実行できるかを確認します。 +

      ビルドしたら、次のコマンドが正常に実行できるかを確認します。 正常に実行された場合は、「Hello, World!」と表示されます。

        $ ./casl2 as/hello.casl
      @@ -287,7 +325,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
       

      2.6 詳細なテスト

      -

      次のコマンドを実行すると、正常にビルドできているかどうかを詳細にテストできます。 +

      次のコマンドを実行すると、正常にビルドできているかどうかを詳細にテストできます。

        $ make check
         194 / 194 tests passed. Details in /home/kazubito/yacasl2/test/integra
      @@ -302,7 +340,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
       

      2.7 環境変数PATHの設定

      -

      環境変数PATHにYACASL2のディレクトリを追加すると、どのディレクトリでもcasl2、comet2、dumpwordを実行できます。 +

      環境変数PATHにYACASL2のディレクトリを追加すると、どのディレクトリでもcasl2、comet2、dumpwordを実行できます。

      環境変数の設定方法は使っているシェルによって異なります。シェルは、次のコマンドで確認できます。 @@ -322,11 +360,11 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

      3 YACASL2 の使い方

      -

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

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

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

      -

      インストール時にコマンド実行の確認に使ったhello.caslは、次のような内容です。CASL IIのマクロ命令OUTは、文字列を出力します。 +

      インストール時にコマンド実行の確認に使ったhello.caslは、次のような内容です。CASL IIのマクロ命令OUTは、文字列を出力します。

        $ cat hello.casl
         MAIN     START
      @@ -387,7 +425,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
       

      3.2 アセンブル結果の確認

      -

      casl2の処理途中で行われるアセンブルの結果を表示するには、オプション-aを指定します。また、ラベルとアドレスの対応表を表示するには、オプション-lを指定します。 +

      casl2の処理途中で行われるアセンブルの結果を表示するには、オプション-aを指定します。また、ラベルとアドレスの対応表を表示するには、オプション-lを指定します。

      次のコマンドではhello.caslの、ラベルとアドレスの対応表と、アセンブル結果と、実行結果が表示されます。OUTはアセンブラ命令で複数の機械語命令で構成されているため、命令行1行に対して、複数行のコードが生成されます。 @@ -476,7 +514,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

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

      -

      YACASL2では実行中のCPUのレジスタとメモリの内容をそれぞれ、-tと-dを指定することで表示できます。 +

      YACASL2では実行中のCPUのレジスタとメモリの内容をそれぞれ、-tと-dを指定することで表示できます。

      また、-Mで、仮想マシンCOMET II のメモリ容量を語(16 ビット)単位で指定できます。小さいプログラムを実行するときは、メモリ容量を小さくすれば結果が見やすくなります。 @@ -537,7 +575,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

      3.3.1 特定のレジスタを表示

      -

      addl.caslのレジスタやメモリの中で、実行中に値が変化しているのはGR1だけです。こうした場合は、grepを使って表示される内容を絞り込むことで動作を検証しやすくなります。 +

      addl.caslのレジスタやメモリの中で、実行中に値が変化しているのはGR1だけです。こうした場合は、grepを使って表示される内容を絞り込むことで動作を検証しやすくなります。

        $ casl2 -t addl.casl | grep 'GR1:'
         #0000: GR1:      0 = #0000 = 0000000000000000
      @@ -560,7 +598,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
       
       

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

      -

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

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

        $ casl2 -t addl.casl | grep 'GR1:' | tail -1
         #0004: GR1:      4 = #0004 = 0000000000000100
      @@ -570,7 +608,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
       

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

      -

      grepとwcを組み合わせれば、プログラムのステップ数を表示できます。 +

      grepとwcを組み合わせれば、プログラムのステップ数を表示できます。

        $ casl2 -t hello.casl | grep 'GR1:' | wc -l
         11
      @@ -585,7 +623,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
       

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

      -

      casl2に-Oファイル名を指定すると、オブジェクトファイルを作成できます。 +

      casl2に-Oファイル名を指定すると、オブジェクトファイルを作成できます。

        $ casl2 -Ohello.o hello.casl
       
      @@ -606,7 +644,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

      3.5 1語の解析

      -

      CASL IIでは、1語(16ビット)を単位としてデータが処理されます。 +

      CASL IIでは、1語(16ビット)を単位としてデータが処理されます。 dumpwordは、指定した1語を10進数、16進数、2進数で表示します。

        $ dumpword 72
      @@ -614,7 +652,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
       

      マイナスの数は、次のように指定します。 -

        $ dumpword -- -72
      +
        $ dumpword -- -72
            -72:    -72 = #FFB8 = 1111111110111000
       

      16進数は、次のように指定します。 @@ -624,23 +662,23 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

      3.6 CASL2ライブラリの使用

      -

      YACASL2のas/casl2libディレクトリには、CASL IIで記述されたライブラリファイルが格納されています。 +

      YACASL2のas/casl2libディレクトリには、CASL IIで記述されたライブラリファイルが格納されています。

      このフォルダには、たとえば次のようなプログラムが含まれています。

      -
      OUTL
      outl.casl。GR1に格納された値を、0〜65535の数値として出力します。 +
      OUTL
      outl.casl。GR1に格納された値を、0〜65535の数値として出力します。 -
      OUTA
      outa.casl。GR1に格納された値を、-32767〜32767の数値として出力します。 +
      OUTA
      outa.casl。GR1に格納された値を、-32767〜32767の数値として出力します。 -
      MULL
      mull.casl。GR1とGR2に格納された値を0〜65535の整数と見なし、積をGR3に格納します。 +
      MULL
      mull.casl。GR1とGR2に格納された値を0〜65535の整数と見なし、積をGR3に格納します。 -
      DIVL
      divl.casl。GR1とGR2に格納された値を0〜65535の整数と見なし、商をGR3、剰余をGR0に格納します。 +
      DIVL
      divl.casl。GR1とGR2に格納された値を0〜65535の整数と見なし、商をGR3、剰余をGR0に格納します。

      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
      @@ -662,14 +700,14 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
       
       

      4 YACASL2コマンドマニュアル

      -

      +

      YACASL2のコマンドとオプションについて解説します。

      4.1 casl2

      -

      +

      casl2は、引数として指定されたCASLファイルをアセンブルし、仮想マシンCOMET II上で実行します。CASLファイルは、アセンブラ言語CASL IIで記述されたテキストファイルです。引数が指定されない場合は、エラーメッセージを表示して終了します。

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

      オプション

      -

      casl2は、次のオプションを指定できます。 +

      casl2は、次のオプションを指定できます。

      -
      -s
      --source
      CASLファイルの内容を表示します。 +
      -s
      --source
      CASLファイルの内容を表示します。 -
      -l
      --label
      ラベルの一覧を表示し、ほかの作業を続行します。 +
      -l
      --label
      ラベルの一覧を表示し、ほかの作業を続行します。 -
      -L
      --labelonly
      ラベルの一覧を表示して終了します。 +
      -L
      --labelonly
      ラベルの一覧を表示して終了します。 -
      -a
      --assembledetail
      アセンブル詳細結果を表示し、ほかの作業を続行します。 +
      -a
      --assembledetail
      アセンブル詳細結果を表示し、ほかの作業を続行します。 -
      -A
      --show-all
      アセンブル詳細結果を表示して終了します。 +
      -A
      --show-all
      アセンブル詳細結果を表示して終了します。 -
      -o<OBJECTFILE>
      --assembleout
      アセンブル結果をオブジェクトファイル<OBJECTFILE>に出力し、ほかの作業を続行します。出力されたオブジェクトファイルは、comet2で実行できます。オブジェクトファイルを指定しない場合、出力先はa.oです。オブジェクトファイルは1つだけ指定できます。 +
      -o<OBJECTFILE>
      --assembleout
      アセンブル結果をオブジェクトファイル<OBJECTFILE>に出力し、ほかの作業を続行します。出力されたオブジェクトファイルは、comet2で実行できます。オブジェクトファイルを指定しない場合、出力先はa.oです。オブジェクトファイルは1つだけ指定できます。 -
      -O<OBJECTFILE>
      --assembleoutonly
      アセンブル結果をオブジェクトファイル<OBJECTFILE>に出力し、終了します。出力されたオブジェクトファイルは、comet2で実行できます。オブジェクトファイルを指定しない場合、出力先はa.oです。オブジェクトファイルは1つだけ指定できます。 +
      -O<OBJECTFILE>
      --assembleoutonly
      アセンブル結果をオブジェクトファイル<OBJECTFILE>に出力し、終了します。出力されたオブジェクトファイルは、comet2で実行できます。オブジェクトファイルを指定しない場合、出力先はa.oです。オブジェクトファイルは1つだけ指定できます。 -
      -t
      --trace
      --tracearithmetic
      実行時のレジスタをトレースします。レジスタには、GR0〜GR7という8個の汎用レジスタと、SP(スタックポインタ)、PR(プログラムレジスタ)、FR(フラグレジスタ)があります。レジストリの内容は、-32,768〜32,767の範囲の整数、#0000〜#FFFFの範囲の16進数、2進数で表示されます。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。-32768〜32767の範囲の整数を表示するので、算術演算の結果を確認する場合に使えます。 +
      -t
      --trace
      --tracearithmetic
      実行時のレジスタをトレースします。レジスタには、GR0〜GR7という8個の汎用レジスタと、SP(スタックポインタ)、PR(プログラムレジスタ)、FR(フラグレジスタ)があります。レジストリの内容は、-32,768〜32,767の範囲の整数、#0000〜#FFFFの範囲の16進数、2進数で表示されます。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。-32768〜32767の範囲の整数を表示するので、算術演算の結果を確認する場合に使えます。 -
      -T
      --tracelogical
      -tと同じく、実行時のレジスタをトレースします。-tと異なり0〜65,535の範囲の整数を表示するので、論理演算の結果を確認する場合に使えます。 +
      -T
      --tracelogical
      -tと同じく、実行時のレジスタをトレースします。-tと異なり0〜65,535の範囲の整数を表示するので、論理演算の結果を確認する場合に使えます。 -
      -d
      --dump
      メモリの内容をすべて表示します。 +
      -d
      --dump
      メモリの内容をすべて表示します。 -
      -M <MEMORYSIZE>
      --memorysize <MEMORYSIZE>
      アセンブルおよび実行時のメモリサイズ<MEMORYSIZE>を0〜65,535の範囲で指定します。指定しない場合、メモリサイズは512です。 +
      -M <MEMORYSIZE>
      --memorysize <MEMORYSIZE>
      アセンブルおよび実行時のメモリサイズ<MEMORYSIZE>を0〜65,535の範囲で指定します。指定しない場合、メモリサイズは512です。 -
      -C <CLOCKS>
      --clocks <CLOCKS>
      実行時のクロック周波数<CLOCKS>を0より大きい整数で指定します。指定しない場合、クロック周波数は5000000です。 +
      -C <CLOCKS>
      --clocks <CLOCKS>
      実行時のクロック周波数<CLOCKS>を0より大きい整数で指定します。指定しない場合、クロック周波数は5000000です。 -
      -h
      --help
      casl2の使用方法を表示して終了します。 +
      -h
      --help
      casl2の使用方法を表示して終了します。

      4.2 comet2

      -

      +

      comet2は、引数として指定されたオブジェクトファイルを仮想マシンCOMET II上で実行します。オブジェクトファイルは、caslに-oまたは-Oを指定して出力します。

        $ comet2 hello.o
      @@ -723,27 +761,27 @@ YACASL2のコマンドとオプションについて解説します。
       
       

      オプション

      -

      comet2は、次のオプションを指定できます。 +

      comet2は、次のオプションを指定できます。

      -
      -t
      --trace
      --tracearithmetic
      実行時のレジスタをトレースします。レジスタには、GR0〜GR7という8個の汎用レジスタと、SP(スタックポインタ)、PR(プログラムレジスタ)、FR(フラグレジスタ)があります。レジストリの内容は、-32,768〜32,767の範囲の整数、#0000〜#FFFFの範囲の16進数、2進数で表示されます。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。-32768〜32767の範囲の整数が表示されるので、算術演算の結果を確認する場合に使えます。 +
      -t
      --trace
      --tracearithmetic
      実行時のレジスタをトレースします。レジスタには、GR0〜GR7という8個の汎用レジスタと、SP(スタックポインタ)、PR(プログラムレジスタ)、FR(フラグレジスタ)があります。レジストリの内容は、-32,768〜32,767の範囲の整数、#0000〜#FFFFの範囲の16進数、2進数で表示されます。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。-32768〜32767の範囲の整数が表示されるので、算術演算の結果を確認する場合に使えます。 -
      -T
      --tracelogical
      -tと同じく、実行時のレジスタをトレースします。-tと異なり0〜65,535の範囲の整数を表示するので、論理演算の結果を確認する場合に使えます。 +
      -T
      --tracelogical
      -tと同じく、実行時のレジスタをトレースします。-tと異なり0〜65,535の範囲の整数を表示するので、論理演算の結果を確認する場合に使えます。 -
      -d
      --dump
      メモリの内容をすべて表示します。 +
      -d
      --dump
      メモリの内容をすべて表示します。 -
      -M <MEMORYSIZE>
      --memorysize <MEMORYSIZE>
      実行時のメモリサイズ<MEMORYSIZE>を0〜65,535の範囲で指定します。指定しない場合、メモリサイズは512です。 +
      -M <MEMORYSIZE>
      --memorysize <MEMORYSIZE>
      実行時のメモリサイズ<MEMORYSIZE>を0〜65,535の範囲で指定します。指定しない場合、メモリサイズは512です。 -
      -C <CLOCKS>
      --clocks <CLOCKS>
      実行時のクロック周波数<CLOCKS>を0より大きい整数で指定します。指定しない場合、クロック周波数は5,000,000です。 +
      -C <CLOCKS>
      --clocks <CLOCKS>
      実行時のクロック周波数<CLOCKS>を0より大きい整数で指定します。指定しない場合、クロック周波数は5,000,000です。 -
      -h
      --help
      comet2の使用方法を表示して終了します。 +
      -h
      --help
      comet2の使用方法を表示して終了します。

      4.3 dumpword

      -

      +

      dumpwordは、引数として指定された数値を、整数、#0000〜#FFFFの範囲の16進数、2進数で表示します。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。引数は、10進数または先頭に「#」の付いた16進数で指定します。表示される整数は、オプションにより-32,768〜32,767または0〜65,535の範囲です。オプションなしの場合は、-32,768〜32,767です。

        $ dumpword 10
      @@ -752,15 +790,310 @@ YACASL2のコマンドとオプションについて解説します。
       
       

      オプション

      -

      dumpwordは、次のオプションを指定できます。 +

      dumpwordは、次のオプションを指定できます。 + +

      +
      -a
      --arithmetic
      出力される整数の範囲を-32,768〜32,767にします。オプションなしの場合と同じです。 + +
      -l
      --logical
      出力される整数の範囲を0〜65,535にします。 + +
      -h
      --help
      dumpwordの使用方法を表示して終了します。 +
      + +

      + + +

      5 CASL2LIBマニュアル

      + +

      + +

      5.1 ABS - abs.casl

      + +

      入力された整数を絶対値に変換して出力 + +

      入力

      + +
      +
      GR1
      -32768〜32767の整数 +
      + +

      出力

      + +
      +
      GR1
      入力された整数の絶対値 + +
      OF
      入力されたGR1が-32768の場合、1 + +
      SF
      入力されたGR1が負数(-32767〜-1)の場合、1 +
      + +

      依存する副プログラム

      + +

      なし + +

      使用例

      + +
        ;;; ABSを呼び出す
      +  MAIN    START
      +          LAD     GR2,0
      +  MLOOP   CPA     GR2,MLEN
      +          JZE     MFIN
      +          LD      GR1,MVAL,GR2
      +          CALL    OUTA
      +          CALL    ABS
      +          JOV     PUTOV
      +          JMI     PUTM
      +          OUT     PLUS,=1
      +          JUMP    PUTD
      +  PUTM    OUT     MINUS,=1
      +          JUMP    PUTD
      +  PUTOV   OUT     OV,=2
      +  PUTD    CALL    OUTA
      +          OUT     SEP,MLEN
      +          LAD     GR2,1,GR2
      +          JUMP    MLOOP
      +  MFIN    RET
      +  MVAL    DC      12,-12,1,-1,32767,-32767,0,-32768
      +  MLEN    DC      8
      +  SEP     DC      '--------'
      +  PLUS    DC      '+'
      +  MINUS   DC      '-'
      +  OV      DC      'OV'
      +          END
      +
      +
        ../../../../casl2 abs.casl ../../../../as/casl2lib/outa.casl
      +  12
      +  +
      +  12
      +  --------
      +  -12
      +  -
      +  12
      +  --------
      +  1
      +  +
      +  1
      +  --------
      +  -1
      +  -
      +  1
      +  --------
      +  32767
      +  +
      +  32767
      +  --------
      +  -32767
      +  -
      +  32767
      +  --------
      +  0
      +  +
      +  0
      +  --------
      +  -32768
      +  OV
      +  -32768
      +  --------
      +
      +

      + +

      5.2 ADDL32 - addl32.casl

      + +

      32ビットの値を、連続する2語の領域に格納 + +

      入力

      + +
      +
      GR1
      32ビット値1の先頭アドレス + +
      GR2
      32ビット値2の先頭アドレス +
      + +

      出力

      + +
      +
      GR0
      和の先頭アドレス + +
      OF
      上位アドレスでオーバーフローした場合、1 + +
      SF
      和が負数(-32767〜-1)の場合、1 + +
      ZF
      和が0の場合、1 +
      + +

      使用例

      + +
        MAIN    START
      +          LAD     GR1,A
      +          LAD     GR2,B
      +          CALL    ADDL32
      +          LD      GR2,GR0
      +          LD      GR1,1,GR2
      +          CALL    OUTL
      +          LD      GR1,0,GR2
      +          CALL    OUTL
      +          RET
      +  A       DC      6,10
      +  B       DC      2,65530
      +          END
      +
      +
        ../../../../casl2 addl32_1.casl ../../../../as/casl2lib/addl32.casl ../../../../as/casl2lib/outl.casl
      +  4
      +  9
      +
      +

      依存する副プログラム

      + +

      なし + +

      + +

      5.3 DIVA -diva.casl

      + +

      -32,767〜32,767の範囲にある整数の割算(筆算方式)を行う + +

      入力

      + +
      +
      GR1
      被除数 + +
      GR2
      除数 +
      + +

      出力

      + +
      +
      GR0
      商 + +
      GR3
      剰余 + +
      OF
      除数が0の場合、1 + +
      SF
      商が負数(-32767〜-1)の場合、1 + +
      ZF
      商が0の場合、1 +
      + +

      依存する副プログラム

      + +
        +
      • DIVL +
      + + + + + + + + + + + + + + + + + + + + +

      + +

      5.4 DIVL - divl.casl

      + +

      0〜65,535の範囲にある整数の割算(筆算方式)を行う + +

      入力

      + +
      +
      GR1
      被除数 + +
      GR2
      除数 +
      + +

      出力

      -
      -a
      --arithmetic
      出力される整数の範囲を-32,768〜32,767にします。オプションなしの場合と同じです。 +
      GR0
      商 + +
      GR3
      剰余 + +
      OF
      除数が0の場合、1 -
      -l
      --logical
      出力される整数の範囲を0〜65,535にします。 +
      SF
      商が32,768〜65535の場合、1 -
      -h
      --help
      dumpwordの使用方法を表示して終了します。 +
      ZF
      商が0の場合、1
      +

      依存する副プログラム

      + +

      なし + +

      使用例

      + +
        MAIN    START
      +  BEGIN   LAD     GR1,101
      +          LAD     GR2,10
      +          CALL    DIVL
      +          RET
      +          END
      +
      +

      + +

      5.5 INL - inl.casl

      + +

      + +

      5.6 L2STR - l2str.casl

      + +

      + +

      5.7 MAX - max.casl

      + +

      + +

      5.8 MINIM - minim.casl

      + +

      + +

      5.9 MULA - mula.casl

      + +

      + +

      5.10 MULL - mull.casl

      + +

      + +

      5.11 OUTA - outa.casl

      + +

      + +

      5.12 OUTB - outb.casl

      + +

      + + +

      5.13 OUTD_Q15 - outd_q15.casl

      + +

      + +

      5.14 OUTL - outl.casl

      + +

      + +

      5.15 REV - rev.casl

      + +

      + +

      5.16 STR2L - str2l.casl

      + + diff --git a/doc/yacasl2.texi b/doc/yacasl2.texi index 0aa257f..a0bec20 100644 --- a/doc/yacasl2.texi +++ b/doc/yacasl2.texi @@ -4,8 +4,9 @@ @documentlanguage ja_JP @end ifnottex @setfilename yacasl2.info +@documentencoding UTF-8 @settitle YACASL2 - Linux上のCASL II処理系 -@firstparagraphindent insert +@firstparagraphindent none @paragraphindent 1 @c %**end of header @@ -36,6 +37,7 @@ Copyright @copyright{} 2010 j8takagi * YACASL2のインストール:: * YACASL2の使い方:: * YACASL2コマンドマニュアル:: +* CASL2LIBマニュアル:: @end menu @contents @@ -101,13 +103,13 @@ YACASL2をインストールするには、Linux上で次の作業をします @enumerate @item -@file{yacasl2.tar.gz}のダウンロード +YACASL2ファイルのダウンロード @item -@file{yacasl2.tar.gz}の検証 +YACASL2ファイルの検証 @item -@file{yacasl2.tar.gz}の展開 +YACASL2ファイルの展開 @item @command{casl2}、@command{comet2}、@command{dumpword}のビルド @@ -122,25 +124,12 @@ YACASL2をインストールするには、Linux上で次の作業をします 環境変数@var{PATH}の設定 @end enumerate -@section @file{yacasl2.tar.gz}のダウンロード -(詳細未定) +@section YACASL2ファイルのダウンロード +@uref{http://github.com/j8takagi/YACASL2, GitHub/j8takagi/YACASL2}の@uref{http://github.com/j8takagi/YACASL2/downloads, ダウンロードページ}から最新版のtgzファイルをダウンロードします(2010年3月6日現在、@var{v0.1}の@file{j8takagi-YACASL2-6323ce4.tar.gz})。 -@iftex -@cartouche -@end iftex -@example -$ @command{cd} -$ @command{wget somewhere/yacasl2.tar.gz} -$ @command{wget somewhere/yacasl2.tar.gz.md5sum} -@end example -@iftex -@end cartouche -@end iftex - -@section @file{yacasl2.tar.gz}の検証 - -(PGPを使った検証も導入予定) +続けて、対応する@file{md5sum}フィルをダウンロードします(2010年3月6日現在、@file{j8takagi-YACASL2-6323ce4.tar.gz.md5sum})。 +@section YACASL2ファイルの検証 ダウンロードが完了したら、@command{md5sum}と@command{diff}で正しくファイルがダウンロードができているかを検証します。 @iftex @@ -154,9 +143,9 @@ Files yacasl2.tar.gz.md5sum and - are identical @end cartouche @end iftex -@section @file{yacasl2.tar.gz}の展開 +@section YACASL2ファイルの展開 -@file{yacasl2.tar.gz}をダウンロードしたら、次のコマンドで展開します。 +YACASL2ファイルをダウンロードしたら、次のコマンドで展開します。 @iftex @cartouche @@ -734,7 +723,7 @@ $ @command{dumpword 72} @cartouche @end iftex @example -$ @command{dumpword} @option{--} @command{-72} +$ @command{dumpword -- -72} -72: -72 = #FFB8 = 1111111110111000 @end example @iftex @@ -760,7 +749,7 @@ YACASL2の@file{as/casl2lib}ディレクトリには、CASL IIで記述された このフォルダには、たとえば次のようなプログラムが含まれています。 -@table @samp +@table @option @item OUTL @file{outl.casl}。GR1に格納された値を、0〜65535の数値として出力します。 @@ -809,7 +798,7 @@ $ @command{casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl} @end cartouche @end iftex -@node YACASL2コマンドマニュアル,, YACASL2の使い方, Top +@node YACASL2コマンドマニュアル,CASL2LIBマニュアル,YACASL2の使い方,TOP @chapter YACASL2コマンドマニュアル @cindex YACASL2コマンドマニュアル @@ -844,7 +833,7 @@ $ @command{casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl} @command{casl2}は、次のオプションを指定できます。 -@table @samp +@table @option @item -s @itemx --source CASLファイルの内容を表示します。 @@ -917,7 +906,7 @@ $ @command{comet2 hello.o} @command{comet2}は、次のオプションを指定できます。 -@table @samp +@table @option @item -t @itemx --trace @@ -963,7 +952,7 @@ $ @command{dumpword 10} @command{dumpword}は、次のオプションを指定できます。 -@table @samp +@table @option @item -a @itemx --arithmetic @@ -978,4 +967,264 @@ $ @command{dumpword 10} @command{dumpword}の使用方法を表示して終了します。 @end table +@node CASL2LIBマニュアル,,YACASL2コマンドマニュアル,TOP +@chapter CASL2LIBマニュアル + +@menu +* ABS:: +* ADDL32:: +* DIVA:: +* DIVL:: +* INL:: +* L2STR:: +* MAX:: +* MINIM:: +* MULA:: +* MULL:: +* OUTA:: +* OUTB:: +* OUTD_Q15:: +* OUTL:: +* REV:: +* STR2L:: +@end menu + +@node ABS +@section @command{ABS} - @file{abs.casl} +入力された整数を絶対値に変換して出力 + +@unnumberedsubsec 入力 +@table @var + +@item GR1 +-32768〜32767の整数 +@end table + +@unnumberedsubsec 出力 +@table @var + +@item GR1 +入力された整数の絶対値 + +@item OF +入力されたGR1が-32768の場合、1 + +@item SF +入力されたGR1が負数(-32767〜-1)の場合、1 +@end table + +@unnumberedsubsec 依存する副プログラム +なし + +@unnumberedsubsec 使用例 +@iftex +@cartouche +@end iftex +@example +@verbatiminclude ../as/casl2lib/test/abs/abs.casl +@end example +@iftex +@end cartouche +@end iftex + +@iftex +@cartouche +@end iftex +@example +@verbatiminclude ../as/casl2lib/test/abs/0.txt +@end example +@iftex +@end cartouche +@end iftex + +@node ADDL32 +@section @command{ADDL32} - @file{addl32.casl} +32ビットの値を、連続する2語の領域に格納 + +@unnumberedsubsec 入力 +@table @var +@item GR1 +32ビット値1の先頭アドレス + +@item GR2 +32ビット値2の先頭アドレス +@end table + +@unnumberedsubsec 出力 +@table @var +@item GR0 +和の先頭アドレス + +@item OF +上位アドレスでオーバーフローした場合、1 + +@item SF +和が負数(-32767〜-1)の場合、1 + +@item ZF +和が0の場合、1 +@end table + +@unnumberedsubsec 使用例 +@iftex +@cartouche +@end iftex +@example +@verbatiminclude ../as/casl2lib/test/addl32/addl32_1.casl +@end example +@iftex +@end cartouche +@end iftex + +@iftex +@cartouche +@end iftex +@example +4 +9 +@iftex +@end cartouche +@end iftex + +@unnumberedsubsec 依存する副プログラム +なし + +@node DIVA +@section @command{DIVA} -@file{diva.casl} +-32,767〜32,767の範囲にある整数の割算(筆算方式)を行う + +@unnumberedsubsec 入力 +@table @var +@item GR1 +被除数 + +@item GR2 +除数 +@end table + +@unnumberedsubsec 出力 +@table @var +@item GR0 +商 + +@item GR3 +剰余 + +@item OF +除数が0の場合、1 + +@item SF +商が負数(-32767〜-1)の場合、1 + +@item ZF +商が0の場合、1 +@end table + +@unnumberedsubsec 依存する副プログラム +@itemize +@item @command{DIVL} +@end itemize + +@c @unnumberedsubsec 使用例 +@c @iftex +@c @cartouche +@c @end iftex +@c @example +@c @verbatiminclude ../as/casl2lib/test/diva/diva.casl +@c @end example +@c @iftex +@c @end cartouche +@c @end iftex + +@c @iftex +@c @cartouche +@c @end iftex +@c @example +@c @verbatiminclude ../as/casl2lib/test/diva/0.txt +@c @end example +@c @iftex +@c @end cartouche +@c @end iftex + +@node DIVL +@section @command{DIVL} - @file{divl.casl} +0〜65,535の範囲にある整数の割算(筆算方式)を行う + +@unnumberedsubsec 入力 +@table @var +@item GR1 +被除数 + +@item GR2 +除数 +@end table + +@unnumberedsubsec 出力 +@table @var +@item GR0 +商 + +@item GR3 +剰余 + +@item OF +除数が0の場合、1 + +@item SF +商が32,768〜65535の場合、1 + +@item ZF +商が0の場合、1 +@end table + +@unnumberedsubsec 依存する副プログラム +なし + +@unnumberedsubsec 使用例 +@iftex +@cartouche +@end iftex +@example +@verbatiminclude ../as/casl2lib/test/divl/divl0/divl0.casl +@end example +@iftex +@end cartouche +@end iftex + +@node INL +@section @command{INL} - @file{inl.casl} + +@node L2STR +@section @command{L2STR} - @file{l2str.casl} + +@node MAX +@section @command{MAX} - @file{max.casl} + +@node MINIM +@section @command{MINIM} - @file{minim.casl} + +@node MULA +@section @command{MULA} - @file{mula.casl} + +@node MULL +@section @command{MULL} - @file{mull.casl} + +@node OUTA +@section @command{OUTA} - @file{outa.casl} + +@node OUTB +@section @command{OUTB} - @file{outb.casl} + +@node OUTD_Q15 +@section @command{OUTD_Q15} - @file{outd_q15.casl} + +@node OUTL +@section @command{OUTL} - @file{outl.casl} + +@node REV +@section @command{REV} - @file{rev.casl} + +@node STR2L +@section @command{STR2L} - @file{str2l.casl} + @bye