X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fyacasl2.texi;h=74906eaffc8f77d151afbebcc4dabf0a98e0e8d1;hb=c382a00ca44f99c57fe50b5b2ec6cafd457b16b5;hp=ed90d7c36c75cd8bb39916d14ebd962154a5cb74;hpb=79f7a10d94e20b14b8018e41c98965b91013cb92;p=YACASL2.git diff --git a/doc/yacasl2.texi b/doc/yacasl2.texi index ed90d7c..74906ea 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,24 +24,99 @@ Copyright @copyright{} 2010 j8takagi @titlepage @title YACASL2 -@subtitle UNIX/Linuxのコマンドラインインターフェイスで動作するCASL II処理システム +@subtitle UNIX系OSのコマンドラインで動作するオープンソースのCASL II処理システム @author j8takagi @insertcopying @end titlepage -@ifnottex +@ifinfo @node Top, About, (dir), (dir) -@end ifnottex @menu -* About:: -* Install:: -* Usage:: -* Command Manual:: -* CASL2LIB Manual:: +* 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の概要 +* Install:: YACASL2のインストール +* Usage:: YACASL2の使い方 +* Command Manual:: YACASL2コマンドマニュアル +* CASL2LIB Manual:: CASL2LIBマニュアル @end menu @contents +@end ifnotinfo @node About, Install, Top, Top @chapter YACASL2の概要 @@ -51,7 +127,7 @@ YACASL2は、UNIX/Linuxのコマンドラインインターフェイスで動 @cartouche @end iftex @quotation -@uref{http://www.jitec.ipa.go.jp/1_00topic/topic_20081027_hani_yougo.pdf, 試験で使用する情報処理用語・プログラム言語など(2008年10月版)}[PDFファイル] +@uref{http://www.jitec.jp/1_13download/shiken_yougo_ver2_2.pdf, 「試験で使用する情報技術に関する用語・プログラム言語など」Ver2.2(2012年5月版)}[PDFファイル] 別紙 1 アセンブラ言語の仕様 @end quotation @iftex @@ -61,7 +137,7 @@ YACASL2は、UNIX/Linuxのコマンドラインインターフェイスで動 YACASL2は、CASL IIアセンブラ言語で記述されたファイルをアセンブルし、仮想マシンCOMET II上で実行します。アセンブルと実行は、連続で行うことも別々に行うことも可能です。 YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試験の問題をはじめ各種参考書やサイトに記載されたCASL IIのプログラムをそのままアセンブルして実行できます。また、本パッケージ中にCASL IIのサンプルプログラムが多数収録されています。 -YACASL2は、「ふつうの処理系」として動作します。ほかの多くのCASL IIエミュレータと違い、デバッガとして動作したり、コンピュータ内部の模式図を表示したりすることはありません。そのかわり、YACASL2は、次のような動作内容をすべてテキストで出力します。 +YACASL2は、「ふつうの処理系」として動作します。ほかの多くのCASL IIエミュレータと違い、デバッガとして動作したり、コンピュータ内部の模式図を直接表示したりすることはありません。そのかわり、YACASL2は、次のような動作内容をすべてテキストで出力します。 @itemize @bullet @@ -78,64 +154,95 @@ YACASL2は、「ふつうの処理系」として動作します。ほかの多 実行時のメモリの内容 @end itemize -出力された動作内容は、GNU/Linuxのさまざまなツール、たとえば@kbd{cat}、@kbd{less}、@kbd{grep}、@kbd{wc}などを使って解析できます。 +出力された動作内容は、GNU/Linuxのさまざまなツール、たとえば、@kbd{cat} @kbd{less} @kbd{grep} @kbd{wc}などを使って解析できます。 YACASL2の操作は、端末を開いてコマンドを入力・実行することで行います。 @unnumberedsec 要件 -YACASL2は、LinuxやMac OS Xなど、UNIX系のOS上で動作します。現在動作を確認しているのは、次の環境です。 - -@itemize @bullet - -@item -Ubuntu Linux 10.10 +YACASL2は、LinuxやMac OS Xなど、UNIX系のOS上で動作します。 -@item -Vine Linux 5.2 - -@item -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}(@kbd{gmake})が必要です。Linuxでは多くの場合、標準でインストールされています。Mac OS Xの場合、@code{Xcode}のcommand line toolsをインストールすれば使えるようになります。 @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:: 詳細なテスト -* Environment:: 環境変数の設定 +* 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}ファイルをダウンロードします。 +@uref{http://www.j8takagi.net/yacasl2/, YACASL2のサイト}から、@file{tar.gz}または@file{tar.xz}ファイルと、対応する検証用ファイルをダウンロードします。@uref{http://github.com/j8takagi/YACASL2/downloads/, githubのダウンロードページ}から@file{tar.gz}などのファイルをダウンロードすることもできます。 @node Verify, Expand, Download, Install @section YACASL2ファイルの検証 -ダウンロードが完了したら、@kbd{md5sum}と@kbd{diff}で正しくファイルがダウンロードができているかを検証します。 +ダウンロードが完了したら、圧縮ファイルが改竄されていないか検証します。検証にはGnuPG分離署名か、MD5ハッシュ値を使います。 + +@subsection GnuPG分離署名での検証 + +GnuPGの@kbd{gpg}で圧縮ファイルを検証します。この検証を行うには、GnuPGがインストールされ、自分の秘密鍵と公開鍵のペアが作成されている必要があります。 + +@example +$ @kbd{gpg --verify yacasl2.tar.xz.asc} +gpg: Signature made Sat Oct 27 02:17:16 2012 JST using RSA key ID 25B62DD1 +gpg: Can't check signature: public key not found +$ @kbd{gpg --recv-keys 25B62DD1} +gpg: requesting key 25B62DD1 from hkp server keys.gnupg.net +gpg: key 25B62DD1: public key "j8takagi " imported +gpg: Total number processed: 1 +gpg: imported: 1 (RSA: 1) + +$ @kbd{gpg --lsign-key 25B62DD1} + +pub 2048R/25B62DD1 created: 2012-09-29 expires: never usage: SC + trust: unknown validity: full +sub 2048R/92E25C29 created: 2012-09-29 expires: never usage: E +[ full ] (1). j8takagi + + +pub 2048R/25B62DD1 created: 2012-09-29 expires: never usage: SC + trust: unknown validity: full + Primary key fingerprint: 653A 5D2E 49C3 2ADE 2FE3 87BB AB68 4DDB 25B6 2DD1 + + j8takagi + +Are you sure that you want to sign this key with your +key ".* <.*@@.*>" + +The signature will be marked as non-exportable. + +Really sign? (y/N) y + +You need a passphrase to unlock the secret key for +user: ".* <.*@@.*>" +2048-bit RSA key, ID ........, created 20..-..-.. + + + +$ @kbd{gpg --verify yacasl2.tar.xz.asc} +gpg: Signature made Sat Oct 27 02:17:16 2012 JST using RSA key ID 25B62DD1 +gpg: checking the trustdb +gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model +gpg: depth: 0 valid: 1 signed: 4 trust: 0-, 0q, 0n, 0m, 0f, 1u +gpg: depth: 1 valid: 4 signed: 0 trust: 4-, 0q, 0n, 0m, 0f, 0u +gpg: Good signature from "j8takagi " +@end example + +@subsection MD5ハッシュ値での検証 + +@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 +256,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} @@ -198,13 +305,13 @@ Hello, World! @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 @@ -212,11 +319,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 シェルの確認 @@ -227,7 +330,7 @@ $ @kbd{echo $SHELL} /bin/bash @end example -現在もっとも多く使われているシェルは、BASHでしょう。以下、BASHでの設定方法を記載します。 +現在もっとも多く使われているシェルは、BASHでしょう。以下、BASHでの設定方法を説明します。 @unnumberedsubsec @code{PATH}にYACASL2のディレクトリを追加 @@ -237,7 +340,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} @@ -270,7 +373,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 @@ -283,7 +386,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 @@ -601,7 +704,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ビット)を単位としてデータが処理されます。 @@ -626,7 +729,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で記述されたライブラリファイルが格納されています。 @@ -678,9 +781,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 @@ -741,15 +844,19 @@ CASLファイルの内容を表示します。 @item -t @itemx --trace @itemx --tracearithmetic -プログラム実行中のレジスタの値を次の形式で表示します。@code{<値の10進数表現>}は符号の付いた10進数です。範囲は-32768から32767です。 +プログラム実行中のレジスタの値を次の形式で表示します。 @example -: <レジスタ>: <値の10進数表現> = <値の16進数表現> = <値の2進数表現>[ ='文字'] +: <レジスタ>: <値の10進数表現> = +<値の16進数表現> = <値の2進数表現>[ ='文字'] @end example @itemize @item -@code{}と@code{<値の16進数表現>}は、先頭に@code{#}が付いた4けたの16進数で表されます。範囲は、@code{#0000}から@code{#FFFF}です +@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}です @@ -921,21 +1028,21 @@ $ @kbd{dumpword 10} @chapter CASL2LIBマニュアル @menu -* ABS:: -* 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, DIVA, CASL2LIB Manual, CASL2LIB Manual @@ -969,8 +1076,8 @@ GR1を符号付き整数とみなし、絶対値に変換 @end example @example -$ @kbd{casl2 call_abs.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/outa.casl \ - $CASL2LIBDIR/divl.casl $CASL2LIBDIR/rev.casl} +$ @kbd{casl2 call_abs.casl $CASL2LIB/abs.casl $CASL2LIB/outa.casl \ + $CASL2LIB/divl.casl $CASL2LIB/rev.casl} 1 @end example @@ -1026,8 +1133,8 @@ GR2が-32768 @end example @example -$ @kbd{casl2 call_diva.casl $CASL2LIBDIR/diva.casl $CASL2LIBDIR/divl.casl \ - $CASL2LIBDIR/outa.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/rev.casl} +$ @kbd{casl2 call_diva.casl $CASL2LIB/diva.casl $CASL2LIB/divl.casl \ + $CASL2LIB/outa.casl $CASL2LIB/abs.casl $CASL2LIB/rev.casl} -128 -127 @end example @@ -1072,8 +1179,8 @@ GR2が0の場合、1 @end example @example -$ @kbd{casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl \ - $CASL2LIBDIR/rev.casl} +$ @kbd{casl2 call_divl.casl $CASL2LIB/divl.casl $CASL2LIB/outl.casl \ + $CASL2LIB/rev.casl} 256 254 @end example @@ -1105,26 +1212,89 @@ $ @kbd{casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl \ @end itemize @unnumberedsubsec 使用例 +次のコマンドを実行すると、数値の入力が受け付けられ、入力された数値が表示される。 + @example -@verbatiminclude casl2lib/divl/call_divl.casl +@verbatiminclude casl2lib/inl/call_inl.casl @end example @example -$ @kbd{casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl \ - $CASL2LIBDIR/rev.casl} -256 -254 +$ @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 @code +@item GR1 +符号なし整数 + +@item GR2 +変換した文字列を格納するアドレス +@end table + +@unnumberedsubsec 出力 +@table @code +@item GR0 +文字列の長さ +@end table + +@unnumberedsubsec 依存する副プログラム +@itemize +@item +@code{DIVL} +@end itemize + @node MAX, MINIM, L2STR, CASL2LIB Manual @section @kbd{MAX} - @file{max.casl} +連続した複数のWORDを符号付き整数とみなして最大値を返す + +@unnumberedsubsec 入力 +@table @code +@item GR1 +WORD値を格納したアドレス + +@item GR2 +値の個数 +@end table + +@unnumberedsubsec 出力 +@table @code +@item GR0 +最大値 +@end table + +@unnumberedsubsec 依存する副プログラム +なし + @node MINIM, MULA, MAX, CASL2LIB Manual @section @kbd{MINIM} - @file{minim.casl} +連続した複数のWORDを符号付き整数とみなして最小値を返す + +@unnumberedsubsec 入力 +@table @code +@item GR1 +WORD値を格納したアドレス + +@item GR2 +値の個数 +@end table + +@unnumberedsubsec 出力 +@table @code +@item GR0 +最小値 +@end table + +@unnumberedsubsec 依存する副プログラム +なし + @node MULA, MULL, MINIM, CASL2LIB Manual @section @kbd{MULA} - @file{mula.casl}