X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=doc%2Fyacasl2.texi;h=2c20e24491432f7825756597829a2459784d0c97;hp=a097830e5f2ba839699d77f23c74b8127d39db6b;hb=a639337a9aa30a059c1695ab1701b8714fd26193;hpb=e934f979236c43e098be7b500e7bc11103911630 diff --git a/doc/yacasl2.texi b/doc/yacasl2.texi index a097830..2c20e24 100644 --- a/doc/yacasl2.texi +++ b/doc/yacasl2.texi @@ -5,17 +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 +@ifhtml +@exampleindent 0 +@end ifhtml @c %**end of header @copying -Copyright @copyright{} 2010 j8takagi +Copyright @copyright{} 2010-2011 j8takagi @end copying -@exampleindent 2 - @dircategory Basics @direntry * YACASL2: (yacasl2). @@ -23,29 +24,104 @@ Copyright @copyright{} 2010 j8takagi @titlepage @title YACASL2 -@subtitle Linux上のCASL II処理系 +@subtitle UNIX/Linuxのコマンドラインインターフェイスで動作するCASL II処理システム @author j8takagi @insertcopying @end titlepage -@ifnottex -@node Top -@end ifnottex +@ifinfo +@node Top, About, (dir), (dir) + +@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:: -* Install:: -* Usage:: -* Command Manual:: -* CASL2LIB Manual:: +* About:: YACASL2の概要 +* Install:: YACASL2のインストール +* Usage:: YACASL2の使い方 +* Command Manual:: YACASL2コマンドマニュアル +* CASL2LIB Manual:: CASL2LIBマニュアル @end menu @contents +@end ifnotinfo @node About, Install, Top, Top @chapter YACASL2の概要 -YACASL2は、Linux上で動作するオープンソースのCASL II処理系です。CASL IIは情報処理試験で用いられるアセンブラ言語で、次の資料により仕様が公開されています。 +YACASL2は、UNIX/Linuxのコマンドラインインターフェイスで動作するオープンソースのCASL II処理システムです。CASL IIは情報処理試験で用いられるアセンブラ言語で、次の資料により仕様が公開されています。 @iftex @cartouche @@ -78,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の操作は、端末を開いてコマンドを入力・実行することで行います。 @@ -88,46 +164,35 @@ YACASL2は、LinuxやMac OS Xなど、UNIX系のOS上で動作します。現在 @itemize @bullet @item -Ubuntu Linux 10.10 +Ubuntu Linux 10.04 @item -Vine Linux 4.2 +Vine Linux 5.2 @item -Mac OS X 10.6 +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:: 詳細なテスト -* Path Setting:: 環境変数@code{PATH}の設定 +* 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}ファイルをダウンロードします。 -@iftex -@cartouche -@end iftex -@quotation -@uref{http://github.com/j8takagi/YACASL2, GitHub/j8takagi/YACASL2}の@uref{http://github.com/j8takagi/YACASL2/downloads, ダウンロードページ} -@end quotation -@iftex -@end cartouche -@end iftex - -続けて、対応する@file{md5sum}ファイルをダウンロードします(2010年3月6日現在、@file{j8takagi-YACASL2-6323ce4.tar.gz.md5sum})。 +@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ファイルの検証 @@ -135,7 +200,7 @@ YACASL2をインストールするには、Linux上で次の作業をします ダウンロードが完了したら、@kbd{md5sum}と@kbd{diff}で正しくファイルがダウンロードができているかを検証します。 @example -$ @kbd{md5sum yacasl2.tar.gz | diff -s yacasl2.tar.gz.md5sum -} +$ @kbd{openssl md5sum yacasl2.tar.gz | diff -s yacasl2.tar.gz.md5sum -} Files yacasl2.tar.gz.md5sum and - are identical @end example @@ -149,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} @@ -191,28 +256,30 @@ $ @kbd{./casl2 as/hello.casl} Hello, World! @end example -@node Detail Test, Path Setting, Simple Test, Install +@node Detail Test, Environment, Simple Test, Install @section 詳細なテスト 次のコマンドを実行すると、正常にビルドできているかどうかを詳細にテストできます。 @example $ @kbd{make check} -194 / 194 tests passed. Details in /home/kazubito/yacasl2/test/integra +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/kazubito/yacasl2/test/integra +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/kazubito/yacasl2/test/integration +4 / 4 tests passed. Details in /home/username/yacasl2/test/integration /dumpword/Test.log All tests are succeded. @end example -@node Path Setting,, Detail Test, Install -@section 環境変数@code{PATH}の設定 +@node Environment, , Detail Test, Install +@section 環境変数の設定 + +環境変数@code{PATH}や@code{CASL2LIB}を設定することで、YACASL2が使いやすくなります。環境変数は、使っているシェルを確認してから設定します。 -環境変数@code{PATH}にYACASL2のディレクトリを追加すると、どのディレクトリでも@kbd{casl2}、@kbd{comet2}、@kbd{dumpword}を実行できます。 +@unnumberedsubsec シェルの確認 環境変数の設定方法は使っているシェルによって異なります。シェルは、次のコマンドで確認できます。 @@ -221,18 +288,38 @@ $ @kbd{echo $SHELL} /bin/bash @end example -現在もっとも多く使われているシェルは、BASHでしょう。BASHでは、次のコマンドを実行すると環境変数@code{PATH}にYACASL2のディレクトリが追加されます。 +現在もっとも多く使われているシェルは、BASHでしょう。以下、BASHでの設定方法を説明します。 + +@unnumberedsubsec @code{PATH}にYACASL2のディレクトリを追加 + +@code{PATH}にYACASL2のディレクトリを追加すると、どのディレクトリでもディレクトリを指定せずに@kbd{casl2}、@kbd{comet2}、@kbd{dumpword}を実行できます。YACASL2をホームディレクトリ@code{~}にインストールしたときは、次のコマンドで設定できます。 @example $ @kbd{PATH=$PATH:~/yacasl2 && export PATH} @end example -シェルの初期設定ファイルに上記のコマンドを追加すれば、今後ログインした後は自動的にどのディレクトリでも @kbd{casl2}、@kbd{comet2}、@kbd{dumpword}を実行できます。BASHではホームディレクトリにある@file{.bashrc}が初期設定ファイルのため、次のコマンドで追加されます。 +環境変数の設定は、シェルの初期設定ファイルに追加することでログインしたあと自動的に反映されるようになります。BASHではホームディレクトリにある@file{.bashrc}が初期設定ファイルです。次のコマンドで追加できます。 @example $ @kbd{echo ’PATH=$PATH:~/yacasl2 && export PATH’ >>~/.bashrc} @end example + +@unnumberedsubsec @code{CASL2LIB}の設定 + +環境変数@code{CASL2LIB}を設定しておけば、後述するCASL2LIBを利用するときの手間が小さくなります。YACASL2をホームディレクトリ@code{~}にインストールしたときは、次のコマンドで設定できます。 + +@example +$ @kbd{CASL2LIB=~/yacasl2/as/casl2lib && export CASL2LIB} +@end example + +BASHの初期設定ファイル@file{.bashrc}には、次のコマンドで追加できます。 + +@example +$ @kbd{ echo 'CASL2LIB=~/yacasl2/as/casl2lib && export CASL2LIB' >>~/.bashrc} +@end example + + @node Usage, Command Manual, Install, Top @chapter YACASL2の使い方 YACASL2 は、テキストファイルに記述されたCASLプログラムを処理します。以下の例で用いられるCASLプログラムのファイルは、テキストエディタなどで作成してください。また、インストールしたディレクトリの中にある@file{as}ディレクトリからコピーして作成することもできます。 @@ -244,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 @@ -257,7 +344,7 @@ $ @kbd{cat hello.casl} MAIN START OUT OBUF,LEN RET -OBUF DC ’Hello, World!’ +OBUF DC 'Hello, World!' LEN DC 13 END @end example @@ -525,7 +612,7 @@ $ @kbd{casl2 -t sum_10.casl | grep 'GR0:' | tail -1} #0010: GR0: 55 = #0037 = 0000000000110111 = '7' @end example -@node Step Count,, Ending Value, Register and Memory +@node Step Count, , Ending Value, Register and Memory @subsection プログラムのステップ数を表示 @kbd{grep}と@kbd{wc}を組み合わせれば、プログラムのステップ数を表示できます。 @@ -575,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ビット)を単位としてデータが処理されます。 @@ -586,21 +673,21 @@ $ @kbd{dumpword 72} 72: 72 = #0048 = 0000000001001000 = 'H' @end example -マイナスの数は、次のように指定します。 +マイナスの数は、次のように@kbd{--}を付けて指定します。 @example $ @kbd{dumpword -- -72} -72: -72 = #FFB8 = 1111111110111000 @end example -16進数は、次のように指定します。 +16進数は、次のように次のように@kbd{'}で囲み@kbd{#}を付けて指定します。 @example $ @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で記述されたライブラリファイルが格納されています。 @@ -644,7 +731,7 @@ $ @kbd{casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl} 4 @end example -@node Command Manual,CASL2LIB Manual,Usage,TOP +@node Command Manual, CASL2LIB Manual, Usage, Top @chapter YACASL2コマンドマニュアル @cindex YACASL2コマンドマニュアル @@ -652,12 +739,12 @@ $ @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 +@node casl2, comet2, Command Manual, Command Manual @section @kbd{casl2} @pindex casl2 @@ -686,36 +773,81 @@ CASLファイルの内容を表示します。 @item -l @itemx --label -ラベルの一覧を表示し、ほかの作業を続行します。 +ラベルの一覧を次の形式で表示します。表示後、ほかの作業を続行します。 + +@example +<プログラム名>.<ラベル名> ---> <アドレスの16進数表現> +@end example @item -L @itemx --labelonly -ラベルの一覧を表示して終了します。 +@option{-l}と同じ形式でラベルの一覧を表示します。表示後、ほかの作業は続行せず、終了します。 @item -a @itemx --assembledetail アセンブル詳細結果を表示し、ほかの作業を続行します。 @item -A -@itemx --show-all +@itemx --assembledetailonly アセンブル詳細結果を表示して終了します。 @item -o -@itemx --assembleout +@itemx --assembleout アセンブル結果をオブジェクトファイル@file{}に出力し、ほかの作業を続行します。出力されたオブジェクトファイルは、@kbd{comet2}で実行できます。オブジェクトファイルを指定しない場合、出力先は@file{a.o}です。オブジェクトファイルは1つだけ指定できます。 -@item -O -@itemx --assembleoutonly +@item -O[] +@itemx --assembleoutonly[] アセンブル結果をオブジェクトファイル@file{}に出力し、終了します。出力されたオブジェクトファイルは、@kbd{comet2}で実行できます。オブジェクトファイルを指定しない場合、出力先は@file{a.o}です。オブジェクトファイルは1つだけ指定できます。 @item -t @itemx --trace @itemx --tracearithmetic -実行時のレジスタをトレースします。レジスタには、GR0〜GR7という8個の汎用レジスタと、SP(スタックポインタ)、PR(プログラムレジスタ)、FR(フラグレジスタ)があります。レジストリの内容は、-32,768〜32,767の範囲の整数、#0000〜#FFFFの範囲の16進数、2進数で表示されます。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。-32768〜32767の範囲の整数を表示するので、算術演算の結果を確認する場合に使えます。 +プログラム実行中のレジスタの値を次の形式で表示します。 + +@example +: <レジスタ>: <値の10進数表現> = +<値の16進数表現> = <値の2進数表現>[ ='文字'] +@end example + +@itemize +@item +@code{}と@code{<レジスタ>}、@code{<値の16進数表現>}は、4けたの16進数で表されます。@code{}と@code{<値の16進数表現>}には、先頭に@code{#}が付きます。範囲は@code{#0000}から@code{#FFFF}です + +@item +@code{<値の10進数表現>}は符号の付いた10進数です。範囲は-32768から32767です。 + +@item +@code{<値の2進数表現>}は、16けたの2進数で表されます。範囲は、@code{0000000000000000}から@code{1111111111111111}です + +@item +@code{[ ='文字']}は、レジストリの値が「文字の組」の範囲に含まれる場合に表示されます。 +@end itemize + +表示されるレジスタには、次の種類があります。 + +@table @code +@item GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7 +汎用レジスタ + +@item SP +スタックポインタ + +@item PR +プログラムレジスタ + +@item FR +フラグレジスタ +@end table + +例えば、次のように表示されます。 + +@example +#0002: GR1: 3 = #0003 = 0000000000000011 +@end example @item -T @itemx --tracelogical -@option{-t}と同じく、実行時のレジスタをトレースします。@option{-t}と異なり0〜65,535の範囲の整数を表示するので、論理演算の結果を確認する場合に使えます。 +@option{-t}と同じように、プログラム実行中のレジスタの値を表示します。ただし、@option{-t}と異なり、@code{<値の10進数表現>}は符号の付かない10進数です。値の範囲は0から65535です。 @item -d @itemx --dump @@ -723,7 +855,7 @@ CASLファイルの内容を表示します。 @item -M @itemx --memorysize -アセンブルおよび実行時のメモリサイズ@option{}を0〜65,535の範囲で指定します。指定しない場合、メモリサイズは512です。 +アセンブルおよび実行時のメモリサイズ@option{}を0から65535の範囲で指定します。指定しない場合、512です。 @item -C @itemx --clocks @@ -734,7 +866,7 @@ CASLファイルの内容を表示します。 @kbd{casl2}の使用方法を表示して終了します。 @end table -@node comet2 +@node comet2, dumpword, casl2, Command Manual @section @kbd{comet2} @pindex comet2 @@ -757,11 +889,48 @@ $ @kbd{comet2 hello.o} @item -t @itemx --trace @itemx --tracearithmetic -実行時のレジスタをトレースします。レジスタには、GR0〜GR7という8個の汎用レジスタと、SP(スタックポインタ)、PR(プログラムレジスタ)、FR(フラグレジスタ)があります。レジストリの内容は、-32,768〜32,767の範囲の整数、#0000〜#FFFFの範囲の16進数、2進数で表示されます。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。-32768〜32767の範囲の整数が表示されるので、算術演算の結果を確認する場合に使えます。 +プログラム実行中のレジスタの値を次の形式で表示します。@code{<値の10進数表現>}は符号の付いた10進数です。範囲は-32768から32767です。 + +@example +: <レジスタ>: <値の10進数表現> = <値の16進数表現> = <値の2進数表現>[ ='文字'] +@end example + +@itemize +@item +@code{}と@code{<値の16進数表現>}は、先頭に@code{#}が付いた4けたの16進数で表されます。範囲は、@code{#0000}から@code{#FFFF}です + +@item +@code{<値の2進数表現>}は、16けたの2進数で表されます。範囲は、@code{0000000000000000}から@code{1111111111111111}です + +@item +@code{[ ='文字']}は、レジストリの値が「文字の組」の範囲に含まれる場合に表示されます。 +@end itemize + +例えば、次のように表示されます。 + +@example +#0002: GR1: 3 = #0003 = 0000000000000011 +@end example + +表示されるレジスタには、次の種類があります。 + +@table @code +@item GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7 +汎用レジスタ + +@item SP +スタックポインタ + +@item PR +プログラムレジスタ + +@item FR +フラグレジスタ +@end table @item -T @itemx --tracelogical -@option{-t}と同じく、実行時のレジスタをトレースします。@option{-t}と異なり0〜65,535の範囲の整数を表示するので、論理演算の結果を確認する場合に使えます。 +@option{-t}と同じように、プログラム実行中のレジスタの値を表示します。ただし、@option{-t}と異なり、@code{<値の10進数表現>}は符号の付かない10進数です。値の範囲は0から65535です。 @item -d @itemx --dump @@ -769,24 +938,24 @@ $ @kbd{comet2 hello.o} @item -M @itemx --memorysize -実行時のメモリサイズ@option{}を0〜65,535の範囲で指定します。指定しない場合、メモリサイズは512です。 +実行時のメモリサイズ@option{}を0から65535の範囲で指定します。指定しない場合、512です。 @item -C @itemx --clocks -実行時のクロック周波数@option{}を0より大きい整数で指定します。指定しない場合、クロック周波数は5,000,000です。 +実行時のクロック周波数@option{}を0より大きい整数で指定します。指定しない場合、5000000です。 @item -h @itemx --help @kbd{comet2}の使用方法を表示して終了します。 @end table -@node dumpword +@node dumpword, , comet2, Command Manual @section @kbd{dumpword} @pindex dumpword @cindex dumpword -@kbd{dumpword}は、引数として指定された数値を、整数、#0000〜#FFFFの範囲の16進数、2進数で表示します。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。引数は、10進数または先頭に「#」の付いた16進数で指定します。表示される整数は、オプションにより-32,768〜32,767または0〜65,535の範囲です。オプションなしの場合は、-32,768〜32,767です。 +@kbd{dumpword}は、引数として指定された数値を、整数、#0000〜#FFFFの範囲の16進数、2進数で表示します。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。引数は、10進数または先頭に「#」の付いた16進数で指定します。表示される整数は、オプションにより符号付きか符号なしかを指定します。オプションなしの場合は符号付きです。整数の範囲は、符号付きの場合は-32768から32767、符号なしの場合は0から65535です。 @example $ @kbd{dumpword 10} @@ -813,50 +982,47 @@ $ @kbd{dumpword 10} @kbd{dumpword}の使用方法を表示して終了します。 @end table -@node CASL2LIB Manual,,Command Manual,TOP +@node CASL2LIB Manual, , Command Manual, Top @chapter CASL2LIBマニュアル @menu -* ABS:: -* ADDL32:: -* DIVA:: -* DIVL:: -* INL:: -* L2STR:: -* MAX:: -* MINIM:: -* MULA:: -* MULL:: -* OUTA:: -* OUTB:: -* OUTD_Q15:: -* OUTL:: -* REV:: -* STR2L:: +* 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 menu -@node ABS +@node ABS, DIVA, CASL2LIB Manual, CASL2LIB Manual @section @kbd{ABS} - @file{abs.casl} -入力された整数を絶対値に変換して出力 +GR1を符号付き整数とみなし、絶対値に変換 @unnumberedsubsec 入力 -@table @var - +@table @code @item GR1 --32768〜32767の整数 +符号付き整数 @end table @unnumberedsubsec 出力 -@table @var - +@table @code @item GR1 -入力された整数の絶対値 +入力された値の絶対値 @item OF -入力されたGR1が-32768の場合、1 +入力された値が-32768の場合、1 @item SF -入力されたGR1が負数(-32767〜-1)の場合、1 +入力された値が負数(-32767から-1)の場合、1 @end table @unnumberedsubsec 依存する副プログラム @@ -864,60 +1030,79 @@ $ @kbd{dumpword 10} @unnumberedsubsec 使用例 @example -@verbatiminclude ../as/casl2lib/test/abs/abs.casl +@verbatiminclude casl2lib/abs/call_abs.casl @end example @example -@verbatiminclude ../as/casl2lib/test/abs/0.txt +$ @kbd{casl2 call_abs.casl $CASL2LIB/abs.casl $CASL2LIB/outa.casl \ + $CASL2LIB/divl.casl $CASL2LIB/rev.casl} +1 @end example -@node ADDL32 -@section @kbd{ADDL32} - @file{addl32.casl} -32ビットの値を、連続する2語の領域に格納 +@node DIVA, DIVL, ABS, CASL2LIB Manual +@section @kbd{DIVA} - @file{diva.casl} +符号付き整数の割算を筆算方式で行う @unnumberedsubsec 入力 -@table @var +@table @code @item GR1 -32ビット値1の先頭アドレス +被除数 @item GR2 -32ビット値2の先頭アドレス +除数 @end table @unnumberedsubsec 出力 -@table @var +@table @code @item GR0 -和の先頭アドレス +商 + +@item GR3 +剰余 @item OF -上位アドレスでオーバーフローした場合、1 +次の場合、1 +@itemize +@item +GR2が0 + +@item +GR1が-32768 + +@item +GR2が-32768 +@end itemize @item SF -和が負数(-32767〜-1)の場合、1 +商が負数(-32767から-1)の場合、1 @item ZF -和が0の場合、1 +商が0の場合、1 @end table +@unnumberedsubsec 依存する副プログラム +@itemize +@item @code{DIVL} +@end itemize + @unnumberedsubsec 使用例 @example -@verbatiminclude ../as/casl2lib/test/addl32/addl32_1.casl +@verbatiminclude casl2lib/diva/call_diva.casl @end example @example -4 -9 +$ @kbd{casl2 call_diva.casl $CASL2LIB/diva.casl $CASL2LIB/divl.casl \ + $CASL2LIB/outa.casl $CASL2LIB/abs.casl $CASL2LIB/rev.casl} +-128 +-127 @end example -@unnumberedsubsec 依存する副プログラム -なし - -@node DIVA -@section @kbd{DIVA} -@file{diva.casl} --32,767〜32,767の範囲にある整数の割算(筆算方式)を行う +@node DIVL, INL, DIVA, CASL2LIB Manual +@section @kbd{DIVL} - @file{divl.casl} +符号なし整数の割算を筆算方式で行う @unnumberedsubsec 入力 -@table @var +@table @code @item GR1 被除数 @@ -926,7 +1111,7 @@ $ @kbd{dumpword 10} @end table @unnumberedsubsec 出力 -@table @var +@table @code @item GR0 商 @@ -934,114 +1119,162 @@ $ @kbd{dumpword 10} 剰余 @item OF -除数が0の場合、1 +GR2が0の場合、1 @item SF -商が負数(-32767〜-1)の場合、1 +商が32768から65535の場合、1 @item ZF 商が0の場合、1 @end table +@unnumberedsubsec 依存する副プログラム +なし + +@unnumberedsubsec 使用例 +@example +@verbatiminclude casl2lib/divl/call_divl.casl +@end example + +@example +$ @kbd{casl2 call_divl.casl $CASL2LIB/divl.casl $CASL2LIB/outl.casl \ + $CASL2LIB/rev.casl} +256 +254 +@end example + +@node INL, L2STR, DIVL, CASL2LIB Manual +@section @kbd{INL} - @file{inl.casl} + +符号なし整数の入力を受け付ける + +@unnumberedsubsec 入力 +@table @code +@item 標準入力 +符号なし整数 +@end table + +@unnumberedsubsec 出力 +@table @code +@item GR1 +入力された符号なし整数 + +@item GR0 +文字列の長さ。数字以外が入力された場合は@code{#FFFF} +@end table + @unnumberedsubsec 依存する副プログラム @itemize -@item @kbd{DIVL} +@item +@code{STR2L} @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 @kbd{DIVL} - @file{divl.casl} -0〜65,535の範囲にある整数の割算(筆算方式)を行う +@unnumberedsubsec 使用例 +次のコマンドを実行すると、数値の入力が受け付けられ、入力された数値が表示される。 + +@example +@verbatiminclude casl2lib/inl/call_inl.casl +@end example + +@example +$ @kbd{casl2 -M1024 call_inl.casl $CASL2LIB/inl.casl $CASL2LIB/str2l.casl $CASL2LIB/mull.casl \ + $CASL2LIB/outl.casl $CASL2LIB/divl.casl $CASL2LIB/rev.casl} +@end example + +@node L2STR, MAX, INL, CASL2LIB Manual +@section @kbd{L2STR} - @file{l2str.casl} + +符号なし整数を文字列に変換する @unnumberedsubsec 入力 -@table @var +@table @code @item GR1 -被除数 +符号なし整数 @item GR2 -除数 +変換した文字列を格納するアドレス @end table @unnumberedsubsec 出力 -@table @var +@table @code @item GR0 -商 +文字列の長さ +@end table -@item GR3 -剰余 +@unnumberedsubsec 依存する副プログラム +@itemize +@item +@code{DIVL} +@end itemize -@item OF -除数が0の場合、1 +@node MAX, MINIM, L2STR, CASL2LIB Manual +@section @kbd{MAX} - @file{max.casl} -@item SF -商が32,768〜65535の場合、1 +連続した複数のWORDを符号付き整数とみなして最大値を返す -@item ZF -商が0の場合、1 +@unnumberedsubsec 入力 +@table @code +@item GR1 +WORD値を格納したアドレス + +@item GR2 +値の個数 +@end table + +@unnumberedsubsec 出力 +@table @code +@item GR0 +最大値 @end table @unnumberedsubsec 依存する副プログラム なし -@unnumberedsubsec 使用例 -@example -@verbatiminclude ../as/casl2lib/test/divl/divl0/divl0.casl -@end example +@node MINIM, MULA, MAX, CASL2LIB Manual +@section @kbd{MINIM} - @file{minim.casl} -@node INL -@section @kbd{INL} - @file{inl.casl} +連続した複数のWORDを符号付き整数とみなして最小値を返す -@node L2STR -@section @kbd{L2STR} - @file{l2str.casl} +@unnumberedsubsec 入力 +@table @code +@item GR1 +WORD値を格納したアドレス -@node MAX -@section @kbd{MAX} - @file{max.casl} +@item GR2 +値の個数 +@end table -@node MINIM -@section @kbd{MINIM} - @file{minim.casl} +@unnumberedsubsec 出力 +@table @code +@item GR0 +最小値 +@end table + +@unnumberedsubsec 依存する副プログラム +なし -@node MULA +@node MULA, MULL, MINIM, CASL2LIB Manual @section @kbd{MULA} - @file{mula.casl} -@node MULL +@node MULL, OUTA, MULA, CASL2LIB Manual @section @kbd{MULL} - @file{mull.casl} -@node OUTA +@node OUTA, OUTB, MULL, CASL2LIB Manual @section @kbd{OUTA} - @file{outa.casl} -@node OUTB +@node OUTB, OUTD_Q15, OUTA, CASL2LIB Manual @section @kbd{OUTB} - @file{outb.casl} -@node OUTD_Q15 +@node OUTD_Q15, OUTL, OUTB, CASL2LIB Manual @section @kbd{OUTD_Q15} - @file{outd_q15.casl} -@node OUTL +@node OUTL, REV, OUTD_Q15, CASL2LIB Manual @section @kbd{OUTL} - @file{outl.casl} -@node REV +@node REV, STR2L, OUTL, CASL2LIB Manual @section @kbd{REV} - @file{rev.casl} -@node STR2L +@node STR2L, , REV, CASL2LIB Manual @section @kbd{STR2L} - @file{str2l.casl} @bye