<li><a href="#INL">使用例</a>
</li></ul>
<li><a href="#L2STR">5.5 <kbd>L2STR</kbd> - <samp><span class="file">l2str.casl</span></samp></a>
+<ul>
+<li><a href="#L2STR">入力</a>
+<li><a href="#L2STR">出力</a>
+<li><a href="#L2STR">依存する副プログラム</a>
+</li></ul>
<li><a href="#MAX">5.6 <kbd>MAX</kbd> - <samp><span class="file">max.casl</span></samp></a>
+<ul>
+<li><a href="#MAX">入力</a>
+<li><a href="#MAX">出力</a>
+<li><a href="#MAX">依存する副プログラム</a>
+</li></ul>
<li><a href="#MINIM">5.7 <kbd>MINIM</kbd> - <samp><span class="file">minim.casl</span></samp></a>
+<ul>
+<li><a href="#MINIM">入力</a>
+<li><a href="#MINIM">出力</a>
+<li><a href="#MINIM">依存する副プログラム</a>
+</li></ul>
<li><a href="#MULA">5.8 <kbd>MULA</kbd> - <samp><span class="file">mula.casl</span></samp></a>
<li><a href="#MULL">5.9 <kbd>MULL</kbd> - <samp><span class="file">mull.casl</span></samp></a>
<li><a href="#OUTA">5.10 <kbd>OUTA</kbd> - <samp><span class="file">outa.casl</span></samp></a>
<h2 class="chapter">1 YACASL2の概要</h2>
-<p>YACASL2は、Linux上で動作するオープンソースのCASL II処理系です。CASL IIは情報処理試験で用いられるアセンブラ言語で、次の資料により仕様が公開されています。
+<p>YACASL2は、UNIX/Linuxのコマンドラインインターフェイスで動作するオープンソースのCASL II処理システムです。CASL IIは情報処理試験で用いられるアセンブラ言語で、次の資料により仕様が公開されています。
<blockquote>
<a href="http://www.jitec.ipa.go.jp/1_00topic/topic_20081027_hani_yougo.pdf">試験で使用する情報処理用語・プログラム言語など(2008年10月版)</a>[PDFファイル]
<p>YACASL2は、LinuxやMac OS Xなど、UNIX系のOS上で動作します。現在動作を確認しているのは、次の環境です。
<ul>
-<li>Ubuntu Linux 10.10
+<li>Ubuntu Linux 10.04
- <li>Vine Linux 4.2
+ <li>Vine Linux 5.2
- <li>Mac OS X 10.6
+ <li>Mac OS X 10.6.5
</ul>
<p>インストール時に、<kbd>tar</kbd>、<kbd>gcc</kbd>、<kbd>make</kbd>が必要です。Linuxの場合は、標準でインストールされていることが多いと思います。Mac OS Xの場合、<code>Xcode</code>をインストールしてください。
<h3 class="section">2.1 YACASL2ファイルのダウンロード</h3>
<p>次の場所から最新版の<samp><span class="file">tar.gz</span></samp>ファイルをダウンロードします。
-<blockquote>
-<a href="http://github.com/j8takagi/YACASL2">GitHub/j8takagi/YACASL2</a>の<a href="http://github.com/j8takagi/YACASL2/downloads">ダウンロードページ</a>
-</blockquote>
- <p>続けて、対応する<samp><span class="file">md5sum</span></samp>ファイルをダウンロードします。
+ <ul>
+<li><a href="yacasl2.tar.gz">yacasl2.tar.gz</a> - YACASL2のファイル一式を<samp><span class="file">tar.gz</span></samp>形式で圧縮したもの
+
+ <li><a href="yacasl2.tar.gz.md5sum">yacasl2.tar.gz.md5sum</a> - <samp><span class="file">yacasl2.tar.gz</span></samp>のMD5ハッシュ値
+</ul>
+
+ <p>または、<a href="http://github.com/j8takagi/YACASL2/downloads">githubのダウンロードページ</a>からダウンロード、
<p><a name="Verify"></a>
<p>ダウンロードが完了したら、<kbd>md5sum</kbd>と<kbd>diff</kbd>で正しくファイルがダウンロードができているかを検証します。
-<pre class="example"> $ <kbd>md5sum yacasl2.tar.gz | diff -s yacasl2.tar.gz.md5sum -</kbd>
+<pre class="example"> $ <kbd>openssl md5sum yacasl2.tar.gz | diff -s yacasl2.tar.gz.md5sum -</kbd>
Files yacasl2.tar.gz.md5sum and - are identical
</pre>
<p><a name="Expand"></a>
<p>次のコマンドを実行すると、正常にビルドできているかどうかを詳細にテストできます。
<pre class="example"> $ <kbd>make check</kbd>
- 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.
</pre>
MAIN START
OUT OBUF,LEN
RET
- OBUF DC ’Hello, World!’
+ OBUF DC 'Hello, World!'
LEN DC 13
END
</pre>
<br><dt><samp><span class="option">-O[<OBJECTFILE>]</span></samp><dt><samp><span class="option">--assembleoutonly[<OBJECTFILE>]</span></samp><dd>アセンブル結果をオブジェクトファイル<samp><span class="file"><OBJECTFILE></span></samp>に出力し、終了します。出力されたオブジェクトファイルは、<kbd>comet2</kbd>で実行できます。オブジェクトファイルを指定しない場合、出力先は<samp><span class="file">a.o</span></samp>です。オブジェクトファイルは1つだけ指定できます。
- <br><dt><samp><span class="option">-t</span></samp><dt><samp><span class="option">--trace</span></samp><dt><samp><span class="option">--tracearithmetic</span></samp><dd>プログラム実行中のレジスタの値を次の形式で表示します。<code><値の10進数表現></code>は符号の付いた10進数です。範囲は-32768から32767です。
+ <br><dt><samp><span class="option">-t</span></samp><dt><samp><span class="option">--trace</span></samp><dt><samp><span class="option">--tracearithmetic</span></samp><dd>プログラム実行中のレジスタの値を次の形式で表示します。
- <pre class="example"> <PR値の16進数表現>: <レジスタ>: <値の10進数表現> = <値の16進数表現> = <値の2進数表現>[ ='文字']
+ <pre class="example"> <PR値の16進数表現>: <レジスタ>: <値の10進数表現> =
+ <値の16進数表現> = <値の2進数表現>[ ='文字']
</pre>
<ul>
-<li><code><PR値の16進数表現></code>と<code><値の16進数表現></code>は、先頭に<code>#</code>が付いた4けたの16進数で表されます。範囲は、<code>#0000</code>から<code>#FFFF</code>です
+<li><code><PR値の16進数表現></code>と<code><レジスタ></code>、<code><値の16進数表現></code>は、4けたの16進数で表されます。<code><PR値の16進数表現></code>と<code><値の16進数表現></code>には、先頭に<code>#</code>が付きます。範囲は<code>#0000</code>から<code>#FFFF</code>です
+
+ <li><code><値の10進数表現></code>は符号の付いた10進数です。範囲は-32768から32767です。
<li><code><値の2進数表現></code>は、16けたの2進数で表されます。範囲は、<code>0000000000000000</code>から<code>1111111111111111</code>です
A DC -1
END
</pre></pre>
-<pre class="example"> $ <kbd>casl2 call_abs.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/outa.casl
+<pre class="example"> $ <kbd>casl2 call_abs.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/outa.casl \
$CASL2LIBDIR/divl.casl $CASL2LIBDIR/rev.casl</kbd>
1
</pre>
ELEN DC 5
END
</pre></pre>
-<pre class="example"> $ <kbd>casl2 call_diva.casl $CASL2LIBDIR/diva.casl $CASL2LIBDIR/divl.casl
+<pre class="example"> $ <kbd>casl2 call_diva.casl $CASL2LIBDIR/diva.casl $CASL2LIBDIR/divl.casl \
$CASL2LIBDIR/outa.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/rev.casl</kbd>
-128
-127
ELEN DC 5
END
</pre></pre>
-<pre class="example"> $ <kbd>casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl
+<pre class="example"> $ <kbd>casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl \
$CASL2LIBDIR/rev.casl</kbd>
256
254
ELEN DC 5
END
</pre></pre>
-<pre class="example"> $ <kbd>casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl
+<pre class="example"> $ <kbd>casl2 call_divl.casl $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl \
$CASL2LIBDIR/rev.casl</kbd>
256
254
<h3 class="section">5.5 <kbd>L2STR</kbd> - <samp><span class="file">l2str.casl</span></samp></h3>
+<p>符号なし整数を文字列に変換する
+
+<h4 class="unnumberedsubsec">入力</h4>
+
+ <dl>
+<dt><code>GR1</code><dd>符号なし整数
+
+ <br><dt><code>GR2</code><dd>変換した文字列を格納するアドレス
+</dl>
+
+<h4 class="unnumberedsubsec">出力</h4>
+
+ <dl>
+<dt><code>GR0</code><dd>文字列の長さ
+</dl>
+
+<h4 class="unnumberedsubsec">依存する副プログラム</h4>
+
+ <ul>
+<li><code>DIVL</code>
+</ul>
+
<p><a name="MAX"></a>
<h3 class="section">5.6 <kbd>MAX</kbd> - <samp><span class="file">max.casl</span></samp></h3>
+<p>連続した複数のWORDを符号付き整数とみなして最大値を返す
+
+<h4 class="unnumberedsubsec">入力</h4>
+
+ <dl>
+<dt><code>GR1</code><dd>WORD値を格納したアドレス
+
+ <br><dt><code>GR2</code><dd>値の個数
+</dl>
+
+<h4 class="unnumberedsubsec">出力</h4>
+
+ <dl>
+<dt><code>GR0</code><dd>最大値
+</dl>
+
+<h4 class="unnumberedsubsec">依存する副プログラム</h4>
+
+<p>なし
+
<p><a name="MINIM"></a>
<h3 class="section">5.7 <kbd>MINIM</kbd> - <samp><span class="file">minim.casl</span></samp></h3>
+<p>連続した複数のWORDを符号付き整数とみなして最小値を返す
+
+<h4 class="unnumberedsubsec">入力</h4>
+
+ <dl>
+<dt><code>GR1</code><dd>WORD値を格納したアドレス
+
+ <br><dt><code>GR2</code><dd>値の個数
+</dl>
+
+<h4 class="unnumberedsubsec">出力</h4>
+
+ <dl>
+<dt><code>GR0</code><dd>最小値
+</dl>
+
+<h4 class="unnumberedsubsec">依存する副プログラム</h4>
+
+<p>なし
+
<p><a name="MULA"></a>
<h3 class="section">5.8 <kbd>MULA</kbd> - <samp><span class="file">mula.casl</span></samp></h3>