From a624efdf4ae3a309dd991ec148eaa4c4ec565b93 Mon Sep 17 00:00:00 2001 From: j8takagi Date: Thu, 10 Feb 2011 23:45:15 +0900 Subject: [PATCH] =?utf8?q?=E3=83=89=E3=82=AD=E3=83=A5=E3=83=A1=E3=83=B3?= =?utf8?q?=E3=83=88=E3=81=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- doc/Makefile | 14 +- doc/yacasl2.html | 1288 +++++++++++++++++++++++++++++----------------- doc/yacasl2.texi | 145 ++++-- 3 files changed, 933 insertions(+), 514 deletions(-) diff --git a/doc/Makefile b/doc/Makefile index 4be074e..d43de39 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,15 +1,15 @@ DOCNAME = yacasl2 SRC = $(DOCNAME).texi CSS = style.css -TEXBIN = $(dir $(shell which ptex)) -PTEX = $(TEXBIN)/ptex -TEXINDEX = $(TEXBIN)/texindex -DVI2PDF = $(TEXBIN)/dvipdfmx + +PTEX = ptex +TEXI2DVI = texi2dvi +DVI2PDF = dvipdfmx MAKEINFO = makeinfo .PHONY: all htmlnosplit pdf clean -.INTERMEDIATE: yacasl2.dvi +.INTERMEDIATE: $(DOCNAME).dvi all: info htmlnosplit html pdf @@ -28,13 +28,13 @@ $(DOCNAME).info: $(SRC) @$(MAKEINFO) -o $@ $^ $(DOCNAME).html: $(SRC) $(CSS) - @$(MAKEINFO) -o $@ --no-split --no-headers --html --css-include=$(CSS) $(SRC) + @$(MAKEINFO) -o $@ --no-split --html --css-include=$(CSS) $(SRC) $(DOCNAME).pdf: $(DOCNAME).dvi @$(DVI2PDF) $^ $(DOCNAME).dvi: $(SRC) - @TEX=ptex texi2dvi -q --texinfo=@afourpaper -o $@ $< + @TEX=$(PTEX) $(TEXI2DVI) -q --texinfo=@afourpaper -o $@ $< @rm -rf $(DOCNAME).aux $(DOCNAME).cp $(DOCNAME).cps $(DOCNAME).fn $(DOCNAME).ky $(DOCNAME).log $(DOCNAME).pg $(DOCNAME).pgs $(DOCNAME).tmp $(DOCNAME).toc $(DOCNAME).tp $(DOCNAME).vr clean: diff --git a/doc/yacasl2.html b/doc/yacasl2.html index e203e8f..3a486fe 100644 --- a/doc/yacasl2.html +++ b/doc/yacasl2.html @@ -1,13 +1,13 @@ -YACASL2 - Linux上のCASL II処理系 +YACASL2 - CASL II処理システム - + +Copyright (C) 2010-2011 j8takagi--> + +dt { + font-weight: bold; +}--> -

YACASL2 - Linux上のCASL II処理系

+

YACASL2 - CASL II処理システム

+
+


+Next:  + +
-
+ + + -

+

+ +


+Next: , +Previous: Top, +Up: Top + +

1 YACASL2の概要

-

YACASL2は、UNIX/Linuxのコマンドラインインターフェイスで動作するオープンソースのCASL II処理システムです。CASL IIは情報処理試験で用いられるアセンブラ言語で、次の資料により仕様が公開されています。 +

YACASL2は、UNIX/Linuxのコマンドラインインターフェイスで動作するオープンソースのCASL II処理システムです。CASL IIは情報処理試験で用いられるアセンブラ言語で、次の資料により仕様が公開されています。

試験で使用する情報処理用語・プログラム言語など(2008年10月版)[PDFファイル] @@ -246,13 +307,13 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
  • 実行時のメモリの内容 -

    出力された動作内容は、GNU/Linuxのさまざまなツール、たとえばcat、less、grep、wcなどを使って解析できます。 +

    出力された動作内容は、GNU/Linuxのさまざまなツール、たとえば、cat less grep wcなどを使って解析できます。

    YACASL2の操作は、端末を開いてコマンドを入力・実行することで行います。

    要件

    -

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

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

    • Ubuntu Linux 10.04 @@ -262,348 +323,453 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
    • Mac OS X 10.6.5
    -

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

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

    +

    + +


    +Next: , +Previous: About, +Up: Top + +

    2 YACASL2のインストール

    -

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

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

    +

    -

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

    +
    + +


    +Next: , +Previous: Install, +Up: Install -

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

    -
      -
    • yacasl2.tar.gz - YACASL2のファイル一式をtar.gz形式で圧縮したもの +

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

      -
    • yacasl2.tar.gz.md5sum - yacasl2.tar.gzのMD5ハッシュ値 -
    +

    YACASL2のサイトまたはgithubのダウンロードページから最新版のtar.gzファイルをダウンロードします。 -

    または、githubのダウンロードページからダウンロード、 +

    + +


    +Next: , +Previous: Download, +Up: Install -

    +

    2.2 YACASL2ファイルの検証

    -

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

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

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

    +

    + +


    +Next: , +Previous: Verify, +Up: Install + +

    2.3 YACASL2ファイルの展開

    -

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

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

      $ tar xvzf yacasl2.tar.gz
    +
    $ tar xvzf yacasl2.tar.gz
     
    -

    - -

    2.4 casl2、comet2、dumpwordのビルド

    - -

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

      $ cd yacasl2
    -  $ make
    -  make -C src
    -  make[1]: Entering directory ‘/home/kazubito/yacasl2/src’
    -  gcc -c -g -Wall -I ../include casl2.c
    -  gcc -c -g -Wall -I ../include word.c
    -  gcc -c -g -Wall -I ../include hash.c
    -  gcc -c -g -Wall -I ../include cerr.c
    -  gcc -c -g -Wall -I ../include struct.c
    -  gcc -c -g -Wall -I ../include cmd.c
    -  gcc -c -g -Wall -I ../include assemble.c
    -  gcc -c -g -Wall -I ../include token.c
    -  gcc -c -g -Wall -I ../include label.c
    -  gcc -c -g -Wall -I ../include macro.c
    -  gcc -c -g -Wall -I ../include exec.c
    -  gcc -c -g -Wall -I ../include dump.c
    -  gcc -g -Wall -I ../include -o ../casl2 casl2.o word.o hash.o cerr.o st
    -  ruct.o cmd.o assemble.o token.o label.o macro.o exec.o dump.o
    -  gcc -c -g -Wall -I ../include comet2.c
    -  gcc -g -Wall -I ../include -o ../comet2 comet2.o word.o hash.o cerr.o
    -  struct.o cmd.o exec.o dump.o
    -  gcc -c -g -Wall -I ../include dumpword.c
    -  gcc -g -Wall -I ../include -o ../dumpword dumpword.o word.o cerr.o
    -  make[1]: Leaving directory ‘/home/kazubito/yacasl2/src’
    + 
    + +


    +Next: , +Previous: Expand, +Up: Install + +
    + +

    2.4 casl2 comet2 dumpwordのビルド

    + +

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

    $ cd yacasl2
    +$ make
    +make -C src
    +make[1]: Entering directory ‘/home/kazubito/yacasl2/src’
    +gcc -c -g -Wall -I ../include casl2.c
    +gcc -c -g -Wall -I ../include word.c
    +gcc -c -g -Wall -I ../include hash.c
    +gcc -c -g -Wall -I ../include cerr.c
    +gcc -c -g -Wall -I ../include struct.c
    +gcc -c -g -Wall -I ../include cmd.c
    +gcc -c -g -Wall -I ../include assemble.c
    +gcc -c -g -Wall -I ../include token.c
    +gcc -c -g -Wall -I ../include label.c
    +gcc -c -g -Wall -I ../include macro.c
    +gcc -c -g -Wall -I ../include exec.c
    +gcc -c -g -Wall -I ../include dump.c
    +gcc -g -Wall -I ../include -o ../casl2 casl2.o word.o hash.o cerr.o st
    +ruct.o cmd.o assemble.o token.o label.o macro.o exec.o dump.o
    +gcc -c -g -Wall -I ../include comet2.c
    +gcc -g -Wall -I ../include -o ../comet2 comet2.o word.o hash.o cerr.o
    +struct.o cmd.o exec.o dump.o
    +gcc -c -g -Wall -I ../include dumpword.c
    +gcc -g -Wall -I ../include -o ../dumpword dumpword.o word.o cerr.o
    +make[1]: Leaving directory ‘/home/kazubito/yacasl2/src’
     
    -

    +

    + +


    +Next: , +Previous: Build, +Up: Install + +

    2.5 casl2の実行テスト

    -

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

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

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

    +

    + +


    +Next: , +Previous: Simple Test, +Up: Install + +

    2.6 詳細なテスト

    -

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

      $ make check
    -  195 / 195 tests passed. Details in /home/username/yacasl2/test/integra
    -  tion/casl2/Test.log
    -  All tests are succeded.
    -  149 / 149 tests passed. Details in /home/username/yacasl2/test/integra
    -  tion/comet2/Test.log
    -  All tests are succeded.
    -  4 / 4 tests passed. Details in /home/username/yacasl2/test/integration
    -  /dumpword/Test.log
    -  All tests are succeded.
    + 

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

    $ make check
    +195 / 195 tests passed. Details in /home/username/yacasl2/test/integra
    +tion/casl2/Test.log
    +All tests are succeded.
    +149 / 149 tests passed. Details in /home/username/yacasl2/test/integra
    +tion/comet2/Test.log
    +All tests are succeded.
    +4 / 4 tests passed. Details in /home/username/yacasl2/test/integration
    +/dumpword/Test.log
    +All tests are succeded.
     
    -

    +

    + +


    +Previous: Detail Test, +Up: Install + +

    2.7 環境変数の設定

    -

    環境変数を設定することで、YACASL2が使いやすくなります。環境変数の設定は、シェルの初期設定ファイルに追加することでログインしたあと自動的に反映されます。 -するときは、 -環境変数PATHにYACASL2のディレクトリを追加すると、どのディレクトリでもcasl2、comet2、dumpwordを実行できます。また、 +

    環境変数PATHやCASL2LIBを設定することで、YACASL2が使いやすくなります。環境変数は、使っているシェルを確認してから設定します。

    シェルの確認

    -

    環境変数の設定方法は使っているシェルによって異なります。シェルは、次のコマンドで確認できます。 +

    環境変数の設定方法は使っているシェルによって異なります。シェルは、次のコマンドで確認できます。 -

      $ echo $SHELL
    -  /bin/bash
    +
    $ echo $SHELL
    +/bin/bash
     
    -

    現在もっとも多く使われているシェルは、BASHでしょう。以下、BASHでの設定方法を記載します。 +

    現在もっとも多く使われているシェルは、BASHでしょう。以下、BASHでの設定方法を説明します。

    PATHにYACASL2のディレクトリを追加

    -

    PATHにYACASL2のディレクトリを追加すると、どのディレクトリでもディレクトリを指定せずにcasl2、comet2、dumpwordを実行できます。YACASL2をホームディレクトリ~にインストールしたときは、次のコマンドで設定できます。 +

    PATHにYACASL2のディレクトリを追加すると、どのディレクトリでもディレクトリを指定せずにcasl2、comet2、dumpwordを実行できます。YACASL2をホームディレクトリ~にインストールしたときは、次のコマンドで設定できます。 -

      $ PATH=$PATH:~/yacasl2 && export PATH
    +
    $ PATH=$PATH:~/yacasl2 && export PATH
     
    -

    BASHではホームディレクトリにある.bashrcが初期設定ファイルです。次のコマンドで追加できます。 +

    環境変数の設定は、シェルの初期設定ファイルに追加することでログインしたあと自動的に反映されるようになります。BASHではホームディレクトリにある.bashrcが初期設定ファイルです。次のコマンドで追加できます。 -

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

    CASL2LIBの設定

    -

    環境変数CASL2LIBを設定しておけば、後述するCASL2LIBを利用するときの手間が小さくなります。YACASL2をホームディレクトリ~にインストールしたときは、次のコマンドで設定できます。 +

    環境変数CASL2LIBを設定しておけば、後述するCASL2LIBを利用するときの手間が小さくなります。YACASL2をホームディレクトリ~にインストールしたときは、次のコマンドで設定できます。 -

      $ CASL2LIB=~/yacasl2/as/casl2lib && export CASL2LIB
    +
    $ CASL2LIB=~/yacasl2/as/casl2lib && export CASL2LIB
     

    BASHの初期設定ファイル.bashrcには、次のコマンドで追加できます。 -

      $  echo 'CASL2LIB=~/yacasl2/as/casl2lib && export CASL2LIB' >>~/.bashrc
    +
    $  echo 'CASL2LIB=~/yacasl2/as/casl2lib && export CASL2LIB' >>~/.bashrc
     
    -

    +

    + +


    +Next: , +Previous: Install, +Up: Top + +

    3 YACASL2の使い方

    -

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

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

    -

    +

    + +


    +Next: , +Previous: Usage, +Up: Usage + +

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

    -

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

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

      $ cat hello.casl
    -  MAIN     START
    -           OUT     OBUF,LEN
    -           RET
    -  OBUF     DC      'Hello, World!'
    -  LEN      DC      13
    -           END
    +
    $ cat hello.casl
    +MAIN     START
    +         OUT     OBUF,LEN
    +         RET
    +OBUF     DC      'Hello, World!'
    +LEN      DC      13
    +         END
     

    次のコマンドを実行すると、CASL II のアセンブルと仮想マシン COMET II 上での実行が連続で行われ、文字列が出力されます。 -

      $ casl2 hello.casl
    -  Hello, World!
    +
    $ casl2 hello.casl
    +Hello, World!
     

    addl.caslは、3と1の和を求めます。 -

      $ cat addl.casl
    -  ;;; ADDL r,adr
    -  MAIN     START
    -           LD      GR1,A
    -           ADDL    GR1,B
    -           RET
    -  A        DC      3
    -  B        DC      1
    -           END
    +
    $ cat addl.casl
    +;;; ADDL r,adr
    +MAIN     START
    +         LD      GR1,A
    +         ADDL    GR1,B
    +         RET
    +A        DC      3
    +B        DC      1
    +         END
     

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

      $ casl2 addl.casl
    -  $
    +
    $ casl2 addl.casl
    +$
     

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

    +

    + +


    +Next: , +Previous: Simple Output, +Up: Usage + +

    3.2 アセンブル結果の確認

    -

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

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

    次のコマンドではhello.caslの、ラベルとアドレスの対応表と、アセンブル結果と、実行結果が表示されます。OUTはアセンブラ命令で複数の機械語命令で構成されているため、命令行1行に対して、複数行のコードが生成されます。 -

      $ casl2 -a -l hello.casl
    -  
    -  Assemble hello.casl (0)
    -  
    -  Label::::
    -  MAIN.LEN ---> #0020
    -  MAIN ---> #0000
    -  MAIN.OBUF ---> #0013
    -  
    -  Assemble hello.casl (1)
    -  hello.casl:    1:MAIN    START
    -  hello.casl:    2:        OUT     OBUF,LEN
    -      #0000   #7001
    -      #0001   #0000
    -      #0002   #7002
    -      #0003   #0000
    -      #0004   #1210
    -      #0005   #0013
    -      #0006   #1220
    -      #0007   #0020
    -      #0008   #F000
    -      #0009   #0002
    -      #000A   #1210
    -      #000B   #0021
    -      #0021   #000A
    -      #000C   #1220
    -      #000D   #0022
    -      #0022   #0001
    -      #000E   #F000
    -      #000F   #0002
    -      #0010   #7120
    -      #0011   #7110
    -  hello.casl:    3:        RET
    -      #0012   #8100
    -  hello.casl:    4:OBUF    DC      'Hello, World!'
    -      #0013   #0048
    -      #0014   #0065
    -      #0015   #006C
    -      #0016   #006C
    -      #0017   #006F
    -      #0018   #002C
    -      #0019   #0020
    -      #001A   #0057
    -      #001B   #006F
    -      #001C   #0072
    -      #001D   #006C
    -      #001E   #0064
    -      #001F   #0021
    -  hello.casl:    5:LEN     DC      13
    -      #0020   #000D
    -  hello.casl:    6:        END
    -  Hello, World!
    +
    $ casl2 -a -l hello.casl
    +
    +Assemble hello.casl (0)
    +
    +Label::::
    +MAIN.LEN ---> #0020
    +MAIN ---> #0000
    +MAIN.OBUF ---> #0013
    +
    +Assemble hello.casl (1)
    +hello.casl:    1:MAIN    START
    +hello.casl:    2:        OUT     OBUF,LEN
    +    #0000   #7001
    +    #0001   #0000
    +    #0002   #7002
    +    #0003   #0000
    +    #0004   #1210
    +    #0005   #0013
    +    #0006   #1220
    +    #0007   #0020
    +    #0008   #F000
    +    #0009   #0002
    +    #000A   #1210
    +    #000B   #0021
    +    #0021   #000A
    +    #000C   #1220
    +    #000D   #0022
    +    #0022   #0001
    +    #000E   #F000
    +    #000F   #0002
    +    #0010   #7120
    +    #0011   #7110
    +hello.casl:    3:        RET
    +    #0012   #8100
    +hello.casl:    4:OBUF    DC      'Hello, World!'
    +    #0013   #0048
    +    #0014   #0065
    +    #0015   #006C
    +    #0016   #006C
    +    #0017   #006F
    +    #0018   #002C
    +    #0019   #0020
    +    #001A   #0057
    +    #001B   #006F
    +    #001C   #0072
    +    #001D   #006C
    +    #001E   #0064
    +    #001F   #0021
    +hello.casl:    5:LEN     DC      13
    +    #0020   #000D
    +hello.casl:    6:        END
    +Hello, World!
     

    addl.caslの、ラベルとアドレスの対応表と、アセンブル結果は、次のようになります。 -

      $ casl2 -a -l addl.casl
    -  
    -  Assemble addl.casl (0)
    -  
    -  Label::::
    -  MAIN.A ---> #0005
    -  MAIN.B ---> #0006
    -  MAIN ---> #0000
    -  
    -  Assemble addl.casl (1)
    -  addl.casl:    1:;;; ADDL r,adr
    -  addl.casl:    2:MAIN    START
    -  addl.casl:    3:        LD      GR1,A
    -      #0000   #1010
    -      #0001   #0005
    -  addl.casl:    4:        ADDL    GR1,B
    -      #0002   #2210
    -      #0003   #0006
    -  addl.casl:    5:        RET
    -      #0004   #8100
    -  addl.casl:    6:A       DC      3
    -      #0005   #0003
    -  addl.casl:    7:B       DC      1
    -      #0006   #0001
    -  addl.casl:    8:        END
    +
    $ casl2 -a -l addl.casl
    +
    +Assemble addl.casl (0)
    +
    +Label::::
    +MAIN.A ---> #0005
    +MAIN.B ---> #0006
    +MAIN ---> #0000
    +
    +Assemble addl.casl (1)
    +addl.casl:    1:;;; ADDL r,adr
    +addl.casl:    2:MAIN    START
    +addl.casl:    3:        LD      GR1,A
    +    #0000   #1010
    +    #0001   #0005
    +addl.casl:    4:        ADDL    GR1,B
    +    #0002   #2210
    +    #0003   #0006
    +addl.casl:    5:        RET
    +    #0004   #8100
    +addl.casl:    6:A       DC      3
    +    #0005   #0003
    +addl.casl:    7:B       DC      1
    +    #0006   #0001
    +addl.casl:    8:        END
     

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

    +

    + +


    +Next: , +Previous: Assemble Result, +Up: Usage + +

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

    -

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

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

    また、-Mで、仮想マシンCOMET II のメモリ容量を語(16 ビット)単位で指定できます。小さいプログラムを実行するときは、メモリ容量を小さくすれば結果が見やすくなります。 +

    +

    addl.caslに必要なメモリ容量は8語のため、次のようにCPUのレジスタとメモリの内容を表示できます。 -

      $ casl2 -t -d -M8 addl.casl | less
    -  
    -  Assemble addl.casl (0)
    -  
    -  Assemble addl.casl (1)
    -  
    -  Executing machine codes
    -  #0000: Register::::
    -  #0000: GR0:      0 = #0000 = 0000000000000000
    -  #0000: GR1:      0 = #0000 = 0000000000000000
    -  #0000: GR2:      0 = #0000 = 0000000000000000
    -  #0000: GR3:      0 = #0000 = 0000000000000000
    -  #0000: GR4:      0 = #0000 = 0000000000000000
    -  #0000: GR5:      0 = #0000 = 0000000000000000
    -  #0000: GR6:      0 = #0000 = 0000000000000000
    -  #0000: GR7:      0 = #0000 = 0000000000000000
    -  #0000: SP:       8 = #0008 = 0000000000001000
    -  #0000: PR:       0 = #0000 = 0000000000000000
    -  #0000: FR (OF SF ZF): 000
    -  #0000: Memory::::
    -  #0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007
    -  #0000: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
    -  #0002: Register::::
    -  #0002: GR0:      0 = #0000 = 0000000000000000
    -  #0002: GR1:      3 = #0003 = 0000000000000011
    -  #0002: GR2:      0 = #0000 = 0000000000000000
    -  #0002: GR3:      0 = #0000 = 0000000000000000
    -  #0002: GR4:      0 = #0000 = 0000000000000000
    -  #0002: GR5:      0 = #0000 = 0000000000000000
    -  #0002: GR6:      0 = #0000 = 0000000000000000
    -  #0002: GR7:      0 = #0000 = 0000000000000000
    -  #0002: SP:       8 = #0008 = 0000000000001000
    -  #0002: PR:       2 = #0002 = 0000000000000010
    -  #0002: FR (OF SF ZF): 000
    -  #0002: Memory::::
    -  #0002: adr : 0000 0001 0002 0003 0004 0005 0006 0007
    -  #0002: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
    -  #0004: Register::::
    -  #0004: GR0:      0 = #0000 = 0000000000000000
    -  #0004: GR1:      4 = #0004 = 0000000000000100
    -  #0004: GR2:      0 = #0000 = 0000000000000000
    -  #0004: GR3:      0 = #0000 = 0000000000000000
    -  #0004: GR4:      0 = #0000 = 0000000000000000
    -  #0004: GR5:      0 = #0000 = 0000000000000000
    -  #0004: GR6:      0 = #0000 = 0000000000000000
    -  #0004: GR7:      0 = #0000 = 0000000000000000
    -  #0004: SP:       8 = #0008 = 0000000000001000
    -  #0004: PR:       4 = #0004 = 0000000000000100
    -  #0004: FR (OF SF ZF): 000
    -  #0004: Memory::::
    -  #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007
    -  #0004: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
    +
    $ casl2 -t -d -M8 addl.casl | less
    +
    +Assemble addl.casl (0)
    +
    +Assemble addl.casl (1)
    +
    +Executing machine codes
    +#0000: Register::::
    +#0000: GR0:      0 = #0000 = 0000000000000000
    +#0000: GR1:      0 = #0000 = 0000000000000000
    +#0000: GR2:      0 = #0000 = 0000000000000000
    +#0000: GR3:      0 = #0000 = 0000000000000000
    +#0000: GR4:      0 = #0000 = 0000000000000000
    +#0000: GR5:      0 = #0000 = 0000000000000000
    +#0000: GR6:      0 = #0000 = 0000000000000000
    +#0000: GR7:      0 = #0000 = 0000000000000000
    +#0000: SP:       8 = #0008 = 0000000000001000
    +#0000: PR:       0 = #0000 = 0000000000000000
    +#0000: FR (OF SF ZF): 000
    +#0000: Memory::::
    +#0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007
    +#0000: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
    +#0002: Register::::
    +#0002: GR0:      0 = #0000 = 0000000000000000
    +#0002: GR1:      3 = #0003 = 0000000000000011
    +#0002: GR2:      0 = #0000 = 0000000000000000
    +#0002: GR3:      0 = #0000 = 0000000000000000
    +#0002: GR4:      0 = #0000 = 0000000000000000
    +#0002: GR5:      0 = #0000 = 0000000000000000
    +#0002: GR6:      0 = #0000 = 0000000000000000
    +#0002: GR7:      0 = #0000 = 0000000000000000
    +#0002: SP:       8 = #0008 = 0000000000001000
    +#0002: PR:       2 = #0002 = 0000000000000010
    +#0002: FR (OF SF ZF): 000
    +#0002: Memory::::
    +#0002: adr : 0000 0001 0002 0003 0004 0005 0006 0007
    +#0002: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
    +#0004: Register::::
    +#0004: GR0:      0 = #0000 = 0000000000000000
    +#0004: GR1:      4 = #0004 = 0000000000000100
    +#0004: GR2:      0 = #0000 = 0000000000000000
    +#0004: GR3:      0 = #0000 = 0000000000000000
    +#0004: GR4:      0 = #0000 = 0000000000000000
    +#0004: GR5:      0 = #0000 = 0000000000000000
    +#0004: GR6:      0 = #0000 = 0000000000000000
    +#0004: GR7:      0 = #0000 = 0000000000000000
    +#0004: SP:       8 = #0008 = 0000000000001000
    +#0004: PR:       4 = #0004 = 0000000000000100
    +#0004: FR (OF SF ZF): 000
    +#0004: Memory::::
    +#0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007
    +#0004: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
     
    -

    +

    + +


    +Next: , +Previous: Register and Memory, +Up: Register and Memory + +

    3.3.1 特定のレジスタを表示

    -

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

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

      $ casl2 -t addl.casl | grep 'GR1:'
    -  #0000: GR1:      0 = #0000 = 0000000000000000
    -  #0002: GR1:      3 = #0003 = 0000000000000011
    -  #0004: GR1:      4 = #0004 = 0000000000000100
    +
    $ casl2 -t addl.casl | grep 'GR1:'
    +#0000: GR1:      0 = #0000 = 0000000000000000
    +#0002: GR1:      3 = #0003 = 0000000000000011
    +#0004: GR1:      4 = #0004 = 0000000000000100
     

    この内容を、先に出力したアセンブル結果と引き比べてください。 次の表のように、PRとGR1、命令行が対応していることがわかります。 @@ -619,108 +785,141 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試 ADDL GR1,B
    -

    +

    + +


    +Next: , +Previous: Register Specify, +Up: Register and Memory + +

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

    -

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

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

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

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

    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
    +
    $ 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'
    +
    $ casl2 -t sum_10.casl | grep 'GR0:' | tail -1
    +#0010: GR0:     55 = #0037 = 0000000000110111 = '7'
     
    -

    +

    + +


    +Previous: Ending Value, +Up: Register and Memory + +

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

    -

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

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

      $ casl2 -t hello.casl | grep 'GR1:' | wc -l
    -  11
    +
    $ casl2 -t hello.casl | grep 'GR1:' | wc -l
    +11
     
    -
      $ casl2 -t addl.casl | grep 'GR1:' | wc -l
    -  3
    + 
    $ casl2 -t addl.casl | grep 'GR1:' | wc -l
    +3
     

    sum_10.caslはプログラム内にループがあるため、ステップ数が大きくなります。 -

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

    +

    + +


    +Next: , +Previous: Register and Memory, +Up: Usage + +

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

    -

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

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

      $ casl2 -Ohello.o hello.casl
    +
    $ casl2 -Ohello.o hello.casl
     

    作成されたオブジェクトファイルの内容は、odを使って確認できます。テキストファイルではないため、catなどでは確認できません。 -

      $ od -t x2 hello.o
    -  0000000 7001 0000 7002 0000 1210 0013 1220 0020
    -  0000020 f000 0002 1210 0021 1220 0022 f000 0002
    -  0000040 7120 7110 8100 0048 0065 006c 006c 006f
    -  0000060 002c 0020 0057 006f 0072 006c 0064 0021
    -  0000100 000d 000a 0001
    -  0000106
    +
    $ od -t x2 hello.o
    +0000000 7001 0000 7002 0000 1210 0013 1220 0020
    +0000020 f000 0002 1210 0021 1220 0022 f000 0002
    +0000040 7120 7110 8100 0048 0065 006c 006c 006f
    +0000060 002c 0020 0057 006f 0072 006c 0064 0021
    +0000100 000d 000a 0001
    +0000106
     

    オブジェクトファイルの実行には、comet2を使います。 -

      $ comet2 hello.o
    -  Hello, World!
    +
    $ comet2 hello.o
    +Hello, World!
     
    -

    +

    + +


    +Next: , +Previous: Only Assemble, +Up: Usage + +

    3.5 1語の解析

    -

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

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

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

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

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

    16進数は、次のように次のように'で囲み#を付けて指定します。 -

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

    +

    + +


    +Previous: Analyze Word, +Up: Usage + +

    3.6 CASL2ライブラリの使用

    -

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

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

    このフォルダには、たとえば次のようなプログラムが含まれています。 @@ -736,53 +935,73 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

    3.6.1 数値を出力する

    -

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

      $ cat addl_outl.casl
    -  MAIN    START
    -          LD      GR1,A
    -          ADDL    GR1,B
    -          CALL    OUTL
    -          RET
    -  A       DC      3
    -  B       DC      1
    -          END
    + 

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

    $ cat addl_outl.casl
    +MAIN    START
    +        LD      GR1,A
    +        ADDL    GR1,B
    +        CALL    OUTL
    +        RET
    +A       DC      3
    +B       DC      1
    +        END
     

    変更したらcasl2を、複数のファイルを指定して実行します。 -

      $ casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl
    -  4
    +
    $ casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl
    +4
     
    -

    +

    + +


    +Next: , +Previous: Usage, +Up: Top + +

    4 YACASL2コマンドマニュアル

    -

    +

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

    +

    + +
    + +


    +Next: , +Previous: Command Manual, +Up: Command Manual + +

    4.1 casl2

    -

    +

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

      $ casl2 hello.casl
    +
    $ casl2 hello.casl
     

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

      $ casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl
    +
    $ casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl
     

    オプション

    -

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

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

    -s
    --source
    CASLファイルの内容を表示します。
    -l
    --label
    ラベルの一覧を次の形式で表示します。表示後、ほかの作業を続行します。 -
           <プログラム名>.<ラベル名> ---> <アドレスの16進数表現>
    +     
         <プログラム名>.<ラベル名> ---> <アドレスの16進数表現>
     

    -L
    --labelonly
    -lと同じ形式でラベルの一覧を表示します。表示後、ほかの作業は続行せず、終了します。 @@ -796,8 +1015,8 @@ YACASL2のコマンドとオプションについて解説します。
    -t
    --trace
    --tracearithmetic
    プログラム実行中のレジスタの値を次の形式で表示します。 -
           <PR値の16進数表現>: <レジスタ>: <値の10進数表現> =
    -       <値の16進数表現> = <値の2進数表現>[ ='文字']
    +     
         <PR値の16進数表現>: <レジスタ>: <値の10進数表現> =
    +     <値の16進数表現> = <値の2進数表現>[ ='文字']
     
    • <PR値の16進数表現>と<レジスタ>、<値の16進数表現>は、4けたの16進数で表されます。<PR値の16進数表現>と<値の16進数表現>には、先頭に#が付きます。範囲は#0000から#FFFFです @@ -823,7 +1042,7 @@ YACASL2のコマンドとオプションについて解説します。

      例えば、次のように表示されます。 -

             #0002: GR1:      3 = #0003 = 0000000000000011
      +     
           #0002: GR1:      3 = #0003 = 0000000000000011
       

      -T
      --tracelogical
      -tと同じように、プログラム実行中のレジスタの値を表示します。ただし、-tと異なり、<値の10進数表現>は符号の付かない10進数です。値の範囲は0から65535です。 @@ -836,25 +1055,32 @@ YACASL2のコマンドとオプションについて解説します。
      -h
      --help
      casl2の使用方法を表示して終了します。
    -

    +

    + +


    +Next: , +Previous: casl2, +Up: Command Manual + +

    4.2 comet2

    -

    +

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

      $ comet2 hello.o
    +
    $ comet2 hello.o
     

    引数で指定できるオブジェクトファイルは1つだけです。引数が指定されない場合は、エラーメッセージを表示して終了します。複数の引数を指定した場合、2番目以降の引数は無視されます。

    オプション

    -

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

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

    -t
    --trace
    --tracearithmetic
    プログラム実行中のレジスタの値を次の形式で表示します。<値の10進数表現>は符号の付いた10進数です。範囲は-32768から32767です。 -
           <PR値の16進数表現>: <レジスタ>: <値の10進数表現> = <値の16進数表現> = <値の2進数表現>[ ='文字']
    +     
         <PR値の16進数表現>: <レジスタ>: <値の10進数表現> = <値の16進数表現> = <値の2進数表現>[ ='文字']
     
    • <PR値の16進数表現>と<値の16進数表現>は、先頭に#が付いた4けたの16進数で表されます。範囲は、#0000から#FFFFです @@ -866,7 +1092,7 @@ YACASL2のコマンドとオプションについて解説します。

      例えば、次のように表示されます。 -

             #0002: GR1:      3 = #0003 = 0000000000000011
      +     
           #0002: GR1:      3 = #0003 = 0000000000000011
       

      表示されるレジスタには、次の種類があります。 @@ -891,20 +1117,26 @@ YACASL2のコマンドとオプションについて解説します。

      -h
      --help
      comet2の使用方法を表示して終了します。
    -

    +

    + +


    +Previous: comet2, +Up: Command Manual + +

    4.3 dumpword

    -

    +

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

      $ dumpword 10
    +
    $ dumpword 10
     

    引数で指定できる1つだけです。引数が指定されない場合は、使い方を表示して終了します。複数の引数を指定した場合、2番目以降の引数は無視されます。

    オプション

    -

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

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

    -a
    --arithmetic
    出力される整数の範囲を-32,768〜32,767にします。オプションなしの場合と同じです。 @@ -914,15 +1146,46 @@ YACASL2のコマンドとオプションについて解説します。
    -h
    --help
    dumpwordの使用方法を表示して終了します。
    -

    +

    + +


    +Previous: Command Manual, +Up: Top + +

    5 CASL2LIBマニュアル

    -

    +

    + +
    + +


    +Next: , +Previous: CASL2LIB Manual, +Up: CASL2LIB Manual + +

    5.1 ABS - abs.casl

    -

    GR1を符号付き整数とみなし、絶対値に変換 +

    GR1を符号付き整数とみなし、絶対値に変換

    入力

    @@ -942,28 +1205,35 @@ YACASL2のコマンドとオプションについて解説します。

    依存する副プログラム

    -

    なし +

    なし

    使用例

    -
      ;;; CASL2LIB > ABSを呼び出し、-1の絶対値を表示
    -  MAIN    START
    -          LD      GR1,A
    -          CALL    ABS
    -          CALL    OUTA
    -          RET
    -  A       DC      -1
    -          END
    +
    ;;; CASL2LIB > ABSを呼び出し、-1の絶対値を表示
    +MAIN    START
    +        LD      GR1,A
    +        CALL    ABS
    +        CALL    OUTA
    +        RET
    +A       DC      -1
    +        END
     
    -
      $ casl2 call_abs.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/outa.casl \
    -    $CASL2LIBDIR/divl.casl $CASL2LIBDIR/rev.casl
    -  1
    + 
    $ casl2 call_abs.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/outa.casl \
    +  $CASL2LIBDIR/divl.casl $CASL2LIBDIR/rev.casl
    +1
     
    -

    +

    + +


    +Next: , +Previous: ABS, +Up: CASL2LIB Manual + +

    5.2 DIVA - diva.casl

    -

    符号付き整数の割算を筆算方式で行う +

    符号付き整数の割算を筆算方式で行う

    入力

    @@ -1002,35 +1272,42 @@ YACASL2のコマンドとオプションについて解説します。

    使用例

    -
      ;; CASL2LIB > DIVAを呼び出し、-32767 / 255 の商と剰余を表示
    -  MAIN    START
    -  BEGIN   LD      GR1,A
    -          LD      GR2,B
    -          CALL    DIVA
    -          JOV     ERR
    -          LD      GR1,GR0
    -          CALL    OUTA
    -          LD      GR1,GR3
    -          CALL    OUTA
    -          JUMP    FIN
    -  ERR     OUT     EMSG,ELEN
    -  FIN     RET
    -  A       DC      -32767
    -  B       DC      255
    -  EMSG    DC      'error'
    -  ELEN    DC      5
    -          END
    +
    ;; CASL2LIB > DIVAを呼び出し、-32767 / 255 の商と剰余を表示
    +MAIN    START
    +BEGIN   LD      GR1,A
    +        LD      GR2,B
    +        CALL    DIVA
    +        JOV     ERR
    +        LD      GR1,GR0
    +        CALL    OUTA
    +        LD      GR1,GR3
    +        CALL    OUTA
    +        JUMP    FIN
    +ERR     OUT     EMSG,ELEN
    +FIN     RET
    +A       DC      -32767
    +B       DC      255
    +EMSG    DC      'error'
    +ELEN    DC      5
    +        END
     
    -
      $ casl2 call_diva.casl $CASL2LIBDIR/diva.casl $CASL2LIBDIR/divl.casl \
    -    $CASL2LIBDIR/outa.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/rev.casl
    -  -128
    -  -127
    + 
    $ casl2 call_diva.casl $CASL2LIBDIR/diva.casl $CASL2LIBDIR/divl.casl \
    +  $CASL2LIBDIR/outa.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/rev.casl
    +-128
    +-127
     
    -

    +

    + +


    +Next: , +Previous: DIVA, +Up: CASL2LIB Manual + +

    5.3 DIVL - divl.casl

    -

    符号なし整数の割算を筆算方式で行う +

    符号なし整数の割算を筆算方式で行う

    入力

    @@ -1056,39 +1333,46 @@ YACASL2のコマンドとオプションについて解説します。

    依存する副プログラム

    -

    なし +

    なし

    使用例

    -
      ;; CASL2LIB > DIVLを呼び出し、65534 / 255 の商と剰余を表示
    -  MAIN    START
    -  BEGIN   LD      GR1,A
    -          LD      GR2,B
    -          CALL    DIVL
    -          JOV     ERR
    -          LD      GR1,GR0
    -          CALL    OUTL
    -          LD      GR1,GR3
    -          CALL    OUTL
    -          JUMP    FIN        
    -  ERR     OUT     EMSG,ELEN
    -  FIN     RET
    -  A       DC      65534
    -  B       DC      255
    -  EMSG    DC      'error'
    -  ELEN	DC	5
    -          END
    +
    ;; CASL2LIB > DIVLを呼び出し、65534 / 255 の商と剰余を表示
    +MAIN    START
    +BEGIN   LD      GR1,A
    +        LD      GR2,B
    +        CALL    DIVL
    +        JOV     ERR
    +        LD      GR1,GR0
    +        CALL    OUTL
    +        LD      GR1,GR3
    +        CALL    OUTL
    +        JUMP    FIN        
    +ERR     OUT     EMSG,ELEN
    +FIN     RET
    +A       DC      65534
    +B       DC      255
    +EMSG    DC      'error'
    +ELEN	DC	5
    +        END
     
    -
      $ casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl \
    -    $CASL2LIBDIR/rev.casl
    -  256
    -  254
    + 
    $ casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl \
    +  $CASL2LIBDIR/rev.casl
    +256
    +254
     
    -

    +

    + +


    +Next: , +Previous: DIVL, +Up: CASL2LIB Manual + +

    5.4 INL - inl.casl

    -

    符号なし整数の入力を受け付ける +

    符号なし整数の入力を受け付ける

    入力

    @@ -1112,35 +1396,42 @@ YACASL2のコマンドとオプションについて解説します。

    使用例

    -
      ;; CASL2LIB > DIVLを呼び出し、65534 / 255 の商と剰余を表示
    -  MAIN    START
    -  BEGIN   LD      GR1,A
    -          LD      GR2,B
    -          CALL    DIVL
    -          JOV     ERR
    -          LD      GR1,GR0
    -          CALL    OUTL
    -          LD      GR1,GR3
    -          CALL    OUTL
    -          JUMP    FIN        
    -  ERR     OUT     EMSG,ELEN
    -  FIN     RET
    -  A       DC      65534
    -  B       DC      255
    -  EMSG    DC      'error'
    -  ELEN	DC	5
    -          END
    +
    ;; CASL2LIB > DIVLを呼び出し、65534 / 255 の商と剰余を表示
    +MAIN    START
    +BEGIN   LD      GR1,A
    +        LD      GR2,B
    +        CALL    DIVL
    +        JOV     ERR
    +        LD      GR1,GR0
    +        CALL    OUTL
    +        LD      GR1,GR3
    +        CALL    OUTL
    +        JUMP    FIN        
    +ERR     OUT     EMSG,ELEN
    +FIN     RET
    +A       DC      65534
    +B       DC      255
    +EMSG    DC      'error'
    +ELEN	DC	5
    +        END
     
    -
      $ casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl \
    -    $CASL2LIBDIR/rev.casl
    -  256
    -  254
    + 
    $ casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl \
    +  $CASL2LIBDIR/rev.casl
    +256
    +254
     
    -

    +

    + +


    +Next: , +Previous: INL, +Up: CASL2LIB Manual + +

    5.5 L2STR - l2str.casl

    -

    符号なし整数を文字列に変換する +

    符号なし整数を文字列に変換する

    入力

    @@ -1162,11 +1453,18 @@ YACASL2のコマンドとオプションについて解説します。
  • DIVL -

    +

    + +


    +Next: , +Previous: L2STR, +Up: CASL2LIB Manual + +

    5.6 MAX - max.casl

    -

    連続した複数のWORDを符号付き整数とみなして最大値を返す +

    連続した複数のWORDを符号付き整数とみなして最大値を返す

    入力

    @@ -1184,13 +1482,20 @@ YACASL2のコマンドとオプションについて解説します。

    依存する副プログラム

    -

    なし +

    なし -

    +

    + +


    +Next: , +Previous: MAX, +Up: CASL2LIB Manual + +

    5.7 MINIM - minim.casl

    -

    連続した複数のWORDを符号付き整数とみなして最小値を返す +

    連続した複数のWORDを符号付き整数とみなして最小値を返す

    入力

    @@ -1208,38 +1513,93 @@ YACASL2のコマンドとオプションについて解説します。

    依存する副プログラム

    -

    なし +

    なし + +

    + +


    +Next: , +Previous: MINIM, +Up: CASL2LIB Manual -

    +

    5.8 MULA - mula.casl

    -

    +

    + +


    +Next: , +Previous: MULA, +Up: CASL2LIB Manual + +

    5.9 MULL - mull.casl

    -

    +

    + +


    +Next: , +Previous: MULL, +Up: CASL2LIB Manual + +

    5.10 OUTA - outa.casl

    -

    +

    + +


    +Next: , +Previous: OUTA, +Up: CASL2LIB Manual + +

    5.11 OUTB - outb.casl

    -

    +

    + +


    +Next: , +Previous: OUTB, +Up: CASL2LIB Manual + +

    5.12 OUTD_Q15 - outd_q15.casl

    -

    +

    + +


    +Next: , +Previous: OUTD_Q15, +Up: CASL2LIB Manual + +

    5.13 OUTL - outl.casl

    -

    +

    + +


    +Next: , +Previous: OUTL, +Up: CASL2LIB Manual + +

    5.14 REV - rev.casl

    -

    +

    + +


    +Previous: REV, +Up: CASL2LIB Manual + +

    5.15 STR2L - str2l.casl

    diff --git a/doc/yacasl2.texi b/doc/yacasl2.texi index 3cfa3d8..6a756d6 100644 --- a/doc/yacasl2.texi +++ b/doc/yacasl2.texi @@ -5,20 +5,18 @@ @end ifnottex @setfilename yacasl2.info @documentencoding UTF-8 -@settitle YACASL2 - Linux上のCASL II処理系 -@firstparagraphindent none +@settitle YACASL2 - CASL II処理システム +@firstparagraphindent insert @paragraphindent 1 -@c @iftex -@c @usedvipdfmx -@c @end iftex +@ifhtml +@exampleindent 0 +@end ifhtml @c %**end of header @copying Copyright @copyright{} 2010-2011 j8takagi @end copying -@exampleindent 2 - @dircategory Basics @direntry * YACASL2: (yacasl2). @@ -31,9 +29,83 @@ Copyright @copyright{} 2010-2011 j8takagi @insertcopying @end titlepage -@ifnottex +@ifinfo @node Top, About, (dir), (dir) -@end ifnottex + +@menu +* About:: YACASL2の概要 +* Install:: YACASL2のインストール +* Usage:: YACASL2の使い方 +* Command Manual:: YACASL2コマンドマニュアル +* CASL2LIB Manual:: CASL2LIBマニュアル + +@detailmenu + --- The Detailed Node Listing --- + + + +* About:: YACASL2の概要 +* Install:: YACASL2のインストール +* Usage:: YACASL2の使い方 +* Command Manual:: YACASL2コマンドマニュアル +* CASL2LIB Manual:: CASL2LIBマニュアル + +YACASL2のインストール + +* Download:: YACASL2ファイルのダウンロード +* Verify:: YACASL2ファイルの検証 +* Expand:: YACASL2ファイルの展開 +* Build:: @kbd{casl2}、@kbd{comet2}、@kbd{dumpword}のビルド +* Simple Test:: @kbd{casl2}の実行テスト +* Detail Test:: 詳細なテスト +* Environment:: 環境変数の設定 + +YACASL2の使い方 + +* Simple Output:: 実行結果の出力だけを表示 +* Assemble Result:: アセンブル結果の確認 +* Register and Memory:: 実行時のレジスタとメモリを表示 +* Only Assemble:: アセンブルと実行を別に行う +* Analyze Word:: 1語の解析 +* Use CASL2LIB:: CASL2ライブラリの使用 + +実行時のレジスタとメモリを表示 + +* Register Specify:: 特定のレジスタを表示 +* Ending Value:: プログラム終了時の値を表示 +* Step Count:: プログラムのステップ数を表示 + +YACASL2コマンドマニュアル + +* casl2:: @kbd{casl2} +* comet2:: @kbd{comet2} +* dumpword:: @kbd{dumpword} + +CASL2LIBマニュアル + +* ABS:: @kbd{ABS} - @file{abs.casl} +* DIVA:: @kbd{DIVA} - @file{diva.casl} +* DIVL:: @kbd{DIVL} - @file{divl.casl} +* INL:: @kbd{INL} - @file{inl.casl} +* L2STR:: @kbd{L2STR} - @file{l2str.casl} +* MAX:: @kbd{MAX} - @file{max.casl} +* MINIM:: @kbd{MINIM} - @file{minim.casl} +* MULA:: @kbd{MULA} - @file{mula.casl} +* MULL:: @kbd{MULL} - @file{mull.casl} +* OUTA:: @kbd{OUTA} - @file{outa.casl} +* OUTB:: @kbd{OUTB} - @file{outb.casl} +* OUTD_Q15:: @kbd{OUTD_Q15} - @file{outd_q15.casl} +* OUTL:: @kbd{OUTL} - @file{outl.casl} +* REV:: @kbd{REV} - @file{rev.casl} +* STR2L:: @kbd{STR2L} - @file{str2l.casl} + +@end detailmenu +@end menu + +@end ifinfo + +@ifnotinfo +@node Top, About @menu * About:: YACASL2の概要 @@ -44,6 +116,7 @@ Copyright @copyright{} 2010-2011 j8takagi @end menu @contents +@end ifnotinfo @node About, Install, Top, Top @chapter YACASL2の概要 @@ -81,7 +154,7 @@ YACASL2は、「ふつうの処理系」として動作します。ほかの多 実行時のメモリの内容 @end itemize -出力された動作内容は、GNU/Linuxのさまざまなツール、たとえば@kbd{cat}、@kbd{less}、@kbd{grep}、@kbd{wc}などを使って解析できます。 +出力された動作内容は、GNU/Linuxのさまざまなツール、たとえば、@kbd{cat} @kbd{less} @kbd{grep} @kbd{wc}などを使って解析できます。 YACASL2の操作は、端末を開いてコマンドを入力・実行することで行います。 @@ -100,36 +173,26 @@ Vine Linux 5.2 Mac OS X 10.6.5 @end itemize -インストール時に、@kbd{tar}、@kbd{gcc}、@kbd{make}が必要です。Linuxの場合は、標準でインストールされていることが多いと思います。Mac OS Xの場合、@code{Xcode}をインストールしてください。 +インストール時に、@kbd{tar} @kbd{gcc} @kbd{make}が必要です。Linuxでは多くの場合、標準でインストールされています。Mac OS Xの場合、@code{Xcode}をインストールするといっしょにインストールされます。 @node Install, Usage, About, Top @chapter YACASL2のインストール YACASL2をインストールするには、Linux上で次の作業をします。 @menu -* Download:: YACASL2ファイルのダウンロード -* Verify:: YACASL2ファイルの検証 -* Expand:: YACASL2ファイルの展開 -* Build:: @kbd{casl2}、@kbd{comet2}、@kbd{dumpword}のビルド -* Simple Test:: @kbd{casl2}の実行テスト -* Detail Test:: 詳細なテスト +* Download:: YACASL2ファイルのダウンロード +* Verify:: YACASL2ファイルの検証 +* Expand:: YACASL2ファイルの展開 +* Build:: @kbd{casl2} @kbd{comet2} @kbd{dumpword}のビルド +* Simple Test:: @kbd{casl2}の実行テスト +* Detail Test:: 詳細なテスト * Environment:: 環境変数の設定 @end menu @node Download, Verify, Install, Install @section YACASL2ファイルのダウンロード -次の場所から最新版の@file{tar.gz}ファイルをダウンロードします。 - -@itemize -@item -@uref{yacasl2.tar.gz} - YACASL2のファイル一式を@file{tar.gz}形式で圧縮したもの - -@item -@uref{yacasl2.tar.gz.md5sum} - @file{yacasl2.tar.gz}のMD5ハッシュ値 -@end itemize - -または、@uref{http://github.com/j8takagi/YACASL2/downloads, githubのダウンロードページ}からダウンロード、 +@uref{http://www.j8takagi.net/yacasl2/, YACASL2のサイト}または@uref{http://github.com/j8takagi/YACASL2/downloads/, githubのダウンロードページ}から最新版の@file{tar.gz}ファイルをダウンロードします。 @node Verify, Expand, Download, Install @section YACASL2ファイルの検証 @@ -151,9 +214,9 @@ $ @kbd{tar xvzf yacasl2.tar.gz} @end example @node Build, Simple Test, Expand, Install -@section @kbd{casl2}、@kbd{comet2}、@kbd{dumpword}のビルド +@section @kbd{casl2} @kbd{comet2} @kbd{dumpword}のビルド -展開したら、次のコマンドで@kbd{casl2}、@kbd{comet2}、@kbd{dumpword}をビルドします。 +展開したら、次のコマンドで@kbd{casl2} @kbd{comet2} @kbd{dumpword}をビルドします。 @example $ @kbd{cd yacasl2} @@ -214,11 +277,7 @@ All tests are succeded. @node Environment, , Detail Test, Install @section 環境変数の設定 -環境変数を設定することで、YACASL2が使いやすくなります。環境変数の設定は、シェルの初期設定ファイルに追加することでログインしたあと自動的に反映されます。 -するときは、 -環境変数@code{PATH}にYACASL2のディレクトリを追加すると、どのディレクトリでも@kbd{casl2}、@kbd{comet2}、@kbd{dumpword}を実行できます。また、 - - +環境変数@code{PATH}や@code{CASL2LIB}を設定することで、YACASL2が使いやすくなります。環境変数は、使っているシェルを確認してから設定します。 @unnumberedsubsec シェルの確認 @@ -229,7 +288,7 @@ $ @kbd{echo $SHELL} /bin/bash @end example -現在もっとも多く使われているシェルは、BASHでしょう。以下、BASHでの設定方法を記載します。 +現在もっとも多く使われているシェルは、BASHでしょう。以下、BASHでの設定方法を説明します。 @unnumberedsubsec @code{PATH}にYACASL2のディレクトリを追加 @@ -239,7 +298,7 @@ $ @kbd{echo $SHELL} $ @kbd{PATH=$PATH:~/yacasl2 && export PATH} @end example -BASHではホームディレクトリにある@file{.bashrc}が初期設定ファイルです。次のコマンドで追加できます。 +環境変数の設定は、シェルの初期設定ファイルに追加することでログインしたあと自動的に反映されるようになります。BASHではホームディレクトリにある@file{.bashrc}が初期設定ファイルです。次のコマンドで追加できます。 @example $ @kbd{echo ’PATH=$PATH:~/yacasl2 && export PATH’ >>~/.bashrc} @@ -272,7 +331,7 @@ YACASL2 は、テキストファイルに記述されたCASLプログラムを * Register and Memory:: 実行時のレジスタとメモリを表示 * Only Assemble:: アセンブルと実行を別に行う * Analyze Word:: 1語の解析 -* CASL2lib:: CASL2LIBマニュアル +* Use CASL2LIB:: CASL2ライブラリの使用 @end menu @node Simple Output, Assemble Result, Usage, Usage @@ -603,7 +662,7 @@ $ @kbd{comet2 hello.o} Hello, World! @end example -@node Analyze Word, CASL2lib, Only Assemble, Usage +@node Analyze Word, Use CASL2LIB, Only Assemble, Usage @section 1語の解析 CASL IIでは、1語(16ビット)を単位としてデータが処理されます。 @@ -628,7 +687,7 @@ $ @kbd{dumpword '#0048'} #0048: 72 = #0048 = 0000000001001000 = 'H' @end example -@node CASL2lib, , Analyze Word, Usage +@node Use CASL2LIB, , Analyze Word, Usage @section CASL2ライブラリの使用 YACASL2の@file{as/casl2lib}ディレクトリには、CASL IIで記述されたライブラリファイルが格納されています。 @@ -680,9 +739,9 @@ $ @kbd{casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl} YACASL2のコマンドとオプションについて解説します。 @menu -* casl2:: -* comet2:: -* dumpword:: +* casl2:: @kbd{casl2} +* comet2:: @kbd{comet2} +* dumpword:: @kbd{dumpword} @end menu @node casl2, comet2, Command Manual, Command Manual -- 2.18.0