From: j8takagi Date: Fri, 5 Feb 2010 22:41:33 +0000 (+0900) Subject: ドキュメント作成開始 X-Git-Tag: v0.1~67 X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=commitdiff_plain;h=6d481ded788fac267c4d6a115184936052df7430 ドキュメント作成開始 --- diff --git a/README b/README index bbe97ea..88a2cf3 100644 --- a/README +++ b/README @@ -1,60 +1,193 @@ -このファイルは、YACASL2(仮称)のREADMEファイルである。 +このファイルは、YACASL2のREADMEファイルです。 + +■機能概要 +■要件 +■コンパイル方法 +■実行方法 +■ライセンス ■機能概要 YACASL2は、Linux上で動作するオープンソースのCASL II処理系。 CASL IIは、情報処理試験で用いられるアセンブラ言語。 仕様は、次の資料「試験で使用する情報処理用語・プログラム言語など」(2008å¹´10月版)の -中にある「別紙 1 アセンブラ言語の仕様」参照。 +中にある「別紙 1 アセンブラ言語の仕様」参照。\ http://www.jitec.ipa.go.jp/1_00topic/topic_20081027_hani_yougo.pdf (PDFファイル) ■要件 -Linux(Ubuntu Linux 9.04とVine Linux 4.2で動作確認) +Linux(Ubuntu Linux 9.04/8.04とVine Linux 4.2で動作確認) インストールに、gcc、makeが必要 -■インストール -yacasl2.tar.gz をダウンロードし、シェルで次のコマンド実行 +■コンパイル +yacasl2.tar.gz をダウンロードし、シェルで次のコマンド実行。 $ tar xvzf yacasl2.tar.gz - $ cd casl2 + $ cd yacasl2 $ make - gcc -o ../casl2 -g -Wall struct.c cmd.c cerr.c dump.c exec.c label.c parseline.c macro.c assemble.c casl2.c - gcc -o ../comet2 -g -Wall struct.c cmd.c cerr.c dump.c exec.c comet2.c - make[1]: Leaving directory `/home/kazubito/casl2/src' +コンパイル後、次のコマンドでレグレッションテスト可能。 + + $ make check + ■実行方法 -※asディレクトリに、サンプルのcaslファイルを格納 +※asディレクトリに、サンプルのcaslファイルを格納しています。 1. アセンブラファイルをアセンブルし、仮想システムCOMET II上で実行 - $ ./casl as/hello.casl - $ ./casl as/add.casl - + $ ./casl2 as/hello.casl + Hello, World! + 2. アセンブラファイルの、ラベルの解析結果とアセンブル詳細結果を出力。 - 実行はしない - - $ ./casl -Al as/add.casl - -3. アセンブラファイルの、ラベルの解析結果とアセンブル詳細結果を - 出力してから、仮想システムCOMET II上で実行 - - $ ./casl -al as/add.casl - -4. アセンブラファイルの、ラベルの解析結果とアセンブル詳細結果を - 出力してから、仮想システムCOMET II上で実行。 - 実行時に、レジスタの内容を出力 - $ ./casl -alt as/add.casl + $ ./casl2 -al as/FUNC/sum_10.casl + as/CMD/ld0.casl: 1:MAIN START + as/CMD/ld0.casl: 2: LAD GR1,3 + #0000 #1210 + #0001 #0003 + as/CMD/ld0.casl: 3: LD GR0,GR1 + #0002 #1401 + as/CMD/ld0.casl: 4: RET + #0003 #8100 + as/CMD/ld0.casl: 5: END + +3. アセンブラファイルを仮想システムCOMET II上で実行し、 + レジスタの内容を出力 + + $ ./casl2 -t as/CMD/ld0.casl + + Assemble as/CMD/ld0.casl (0) + + Assemble as/CMD/ld0.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: 512 = #0200 = 0000001000000000 + #0000: PR: 0 = #0000 = 0000000000000000 + #0000: FR (OF SF ZF): 000 + + #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: 512 = #0200 = 0000001000000000 + #0002: PR: 2 = #0002 = 0000000000000010 + #0002: FR (OF SF ZF): 000 + + #0003: Register:::: + #0003: GR0: 3 = #0003 = 0000000000000011 + #0003: GR1: 3 = #0003 = 0000000000000011 + #0003: GR2: 0 = #0000 = 0000000000000000 + #0003: GR3: 0 = #0000 = 0000000000000000 + #0003: GR4: 0 = #0000 = 0000000000000000 + #0003: GR5: 0 = #0000 = 0000000000000000 + #0003: GR6: 0 = #0000 = 0000000000000000 + #0003: GR7: 0 = #0000 = 0000000000000000 + #0003: SP: 512 = #0200 = 0000001000000000 + #0003: PR: 3 = #0003 = 0000000000000011 + #0003: FR (OF SF ZF): 000 5. アセンブラファイルの、ラベルの解析結果とアセンブル詳細結果を 出力してから、仮想システムCOMET II上で実行。 実行時に、レジスタとメモリの内容を出力 + -Mで、COMET IIのメモリサイズを指定できる。 + + $ ./casl2 -td -M 16 as/CMD/st0.casl + + Assemble as/CMD/st0.casl (0) + + Assemble as/CMD/st0.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: 16 = #0010 = 0000000000010000 + #0000: PR: 0 = #0000 = 0000000000000000 + #0000: FR (OF SF ZF): 000 + #0000: Memory:::: + #0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F + #0000: 0000: 1200 011E 1100 0005 8100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 + + #0002: Register:::: + #0002: GR0: 286 = #011E = 0000000100011110 + #0002: GR1: 0 = #0000 = 0000000000000000 + #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: 16 = #0010 = 0000000000010000 + #0002: PR: 2 = #0002 = 0000000000000010 + #0002: FR (OF SF ZF): 000 + #0002: Memory:::: + #0002: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F + #0002: 0000: 1200 011E 1100 0005 8100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 + + #0004: Register:::: + #0004: GR0: 286 = #011E = 0000000100011110 + #0004: GR1: 0 = #0000 = 0000000000000000 + #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: 16 = #0010 = 0000000000010000 + #0004: PR: 4 = #0004 = 0000000000000100 + #0004: FR (OF SF ZF): 000 + #0004: Memory:::: + #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F + #0004: 0000: 1200 011E 1100 0005 8100 011E 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 - $ ./casl -altd as/add.casl 6. アセンブラファイルのアセンブラ結果をオブジェクトファイルadd.oに出力し、 comet2コマンドでadd.oを仮想システムCOMET II上で実行。 - $ ./casl -oadd.o as/add.casl - $ ./comet2 -td add.o + $ ./casl2 -Ofib.o as/FUNC/fib_outl.casl as/FUNC/outl.casl + $ ./comet2 fib.o + 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + 55 + 89 + 144 + 233 + 377 + 610 + 987 + 1597 + 2584 + 4181 + 6765 + 10946 + 17711 + 28657 + 46368 7. オプションの確認 @@ -66,5 +199,5 @@ yacasl2.tar.gz をダウンロードし、シェルで次のコマンド実行 詳細は、チュートリアル(作成予定)参照。 ■ライセンス -Copyright (C) 2009 j8takagi (j8takagi@nifty.com) +Copyright (C) 2010 j8takagi (j8takagi@nifty.com) (未定。GPL or 修正BSDの予定) diff --git a/doc/.gitignore b/doc/.gitignore new file mode 100644 index 0000000..00d30e8 --- /dev/null +++ b/doc/.gitignore @@ -0,0 +1 @@ +yacasl2 diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 0000000..e356989 --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,5 @@ +.PHPNY: html clean +html: yacasl2.texi + @makeinfo --html $^ +clean: + @rm -rf yacasl2 diff --git a/doc/yacasl2.texi b/doc/yacasl2.texi new file mode 100644 index 0000000..8357b35 --- /dev/null +++ b/doc/yacasl2.texi @@ -0,0 +1,55 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header +@setfilename yacasl2 +@settitle YACASL2 +@c %**end of header + +@copying +Copyright @copyright{} 2010 j8takagi +@end copying + +@titlepage +@title YACASL2 -Linux上で動作するCASL2処理系- + +@c The following two commands start the copyright page. +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage + +@c Output the table of contents at the beginning. +@contents + +@insertcopying + +@chapter YACASL2の概要 + +@cindex chapter, first + +YACASL2は、Linux上で動作するオープンソースのCASL II処理系です。 + +CASL IIは、情報処理試験で用いられるアセンブラ言語で、仕様も公開されています。 + +@uref{http://www.jitec.ipa.go.jp/1_00topic/topic_20081027_hani_yougo.pdf, 試験で使用する情報処理用語・プログラム言語など(2008å¹´10月版)[PDFファイル]-別紙 1 アセンブラ言語の仕様} + +YACASL2は、CASL IIの仕様に準拠した動作をします。 +そのため、情報処理試験の問題をはじめ、各種参考書やサイトに記載されたCASL IIのプログラムをそのまま動作させることができます。 + +また、本パッケージ中にCASL IIプログラムのサンプルが多数収録されています。 + +YACASL2は、「通常の処理系」として動作します。ほかの多くのCASL IIエミュレーターと違い、デバッガーとして動作したり、コンピューター内部の模式図を表示したりすることはありません。そのかわり、YACASL2は、次のような動作内容をすべてテキストで出力します。 + +@enumerate +@item +ラベルとアドレスの対応 +@item +アセンブラ結果 +@item +実行時のレジスタの内容 +@item +実行時のメモリの内容 +@end enumerate + +出力された動作内容は、GNU/Linuxのさまざまなツール、たとえばhead, tail, grep, diffなどを使って解析できます。 + +@bye