5924b6a0eed843e189a57ce884ccaad0e9ace073
[YACASL2.git] / doc / yacasl2.html
1 <html lang="en">
2 <head>
3 <title>YACASL2 - Linux上のCASL II処理系</title>
4 <meta http-equiv="Content-Type" content="text/html">
5 <meta name="description" content="YACASL2 - Linux上のCASL II処理系">
6 <meta name="generator" content="makeinfo 4.11">
7 <link title="Top" rel="top" href="#Top">
8 <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
9 <!--
10 Copyright (C) 2010 j8takagi-->
11 <meta http-equiv="Content-Style-Type" content="text/css">
12 <style type="text/css"><!--
13   pre.display { font-family:inherit }
14   pre.format  { font-family:inherit }
15   pre.smalldisplay { font-family:inherit; font-size:smaller }
16   pre.smallformat  { font-family:inherit; font-size:smaller }
17   pre.smallexample { font-size:smaller }
18   pre.smalllisp    { font-size:smaller }
19   span.sc    { font-variant:small-caps }
20   span.roman { font-family:serif; font-weight:normal; } 
21   span.sansserif { font-family:sans-serif; font-weight:normal; } 
22 body {
23     margin-left: 6em;
24     margin-right: 12em;
25     color: black;
26     background-color: #EEE;
27 }
28
29 h1, h2 {
30     margin-left: -2em;
31 }
32
33 .node{
34     margin-left: -3em;
35 }
36
37 h2 {
38     padding: 0.25em;
39     color: white;
40     background-color: navy;
41 }
42
43 h3, h4 {
44     color: navy;
45     margin-left: -1em;
46 }
47
48 p {
49     line-height: 1.5em;
50     margin-top: 0;
51     margin-bottom: 0.5em;
52 }
53
54 a:hover {
55     color: red;
56     text-decoration: underline;
57 }
58
59 .command {
60     font-family: monospace;
61 }
62
63 table.cartouche {
64     width: 60%;
65 }
66
67 pre.example {
68     padding: 0.5em 1em 0.5em 1em;
69     color: #CCC;
70     background: black;
71     font-size: 90%;
72 }
73
74 a {
75     text-decoration: none;
76 }
77
78 blockquote.p {
79     margin-top:0;
80     padding-top:0;
81     line-height: 100%;
82 }
83
84 table, th, td {
85     border: 1px solid #CCC;
86     border-collapse: collapse; /* 枠線の表示方法 */
87 }
88
89 table.cartouche, table.cartouche th, table.cartouche td  {
90     border: none;
91 }
92
93 pre.example .command, pre.example .option {
94     font-weight: bold;
95     background-color: inherit;
96     color: white;
97 }
98
99 pre.example strong {
100     font: inherit;
101     border: 2px solid green;
102 }
103 --></style>
104 </head>
105 <body>
106 <h1 class="settitle">YACASL2 - Linux上のCASL II処理系</h1>
107 <a name="Top"></a>
108
109  <div class="contents">
110 <h2>Table of Contents</h2>
111 <ul>
112 <li><a name="toc_YACASL2_00e3_0081_00ae_00e6_00a6_0082_00e8_00a6_0081" href="#YACASL2_00e3_0081_00ae_00e6_00a6_0082_00e8_00a6_0081">1 YACASL2の概要</a>
113 <ul>
114 <li><a href="#YACASL2_00e3_0081_00ae_00e6_00a6_0082_00e8_00a6_0081">要件</a>
115 </li></ul>
116 <li><a name="toc_YACASL2_00e3_0081_00ae_00e3_0082_00a4_00e3_0083_00b3_00e3_0082_00b9_00e3_0083_0088_00e3_0083_00bc_00e3_0083_00ab" href="#YACASL2_00e3_0081_00ae_00e3_0082_00a4_00e3_0083_00b3_00e3_0082_00b9_00e3_0083_0088_00e3_0083_00bc_00e3_0083_00ab">2 YACASL2のインストール</a>
117 <ul>
118 <li><a href="#YACASL2_00e3_0081_00ae_00e3_0082_00a4_00e3_0083_00b3_00e3_0082_00b9_00e3_0083_0088_00e3_0083_00bc_00e3_0083_00ab">2.1 <samp><span class="file">yacasl2.tar.gz</span></samp>のダウンロード</a>
119 <li><a href="#YACASL2_00e3_0081_00ae_00e3_0082_00a4_00e3_0083_00b3_00e3_0082_00b9_00e3_0083_0088_00e3_0083_00bc_00e3_0083_00ab">2.2 <samp><span class="file">yacasl2.tar.gz</span></samp>の検証</a>
120 <li><a href="#YACASL2_00e3_0081_00ae_00e3_0082_00a4_00e3_0083_00b3_00e3_0082_00b9_00e3_0083_0088_00e3_0083_00bc_00e3_0083_00ab">2.3 <samp><span class="file">yacasl2.tar.gz</span></samp>の展開</a>
121 <li><a href="#YACASL2_00e3_0081_00ae_00e3_0082_00a4_00e3_0083_00b3_00e3_0082_00b9_00e3_0083_0088_00e3_0083_00bc_00e3_0083_00ab">2.4 <samp><span class="command">casl2</span></samp>、<samp><span class="command">comet2</span></samp>、<samp><span class="command">dumpword</span></samp>のビルド</a>
122 <li><a href="#YACASL2_00e3_0081_00ae_00e3_0082_00a4_00e3_0083_00b3_00e3_0082_00b9_00e3_0083_0088_00e3_0083_00bc_00e3_0083_00ab">2.5 <samp><span class="command">casl2</span></samp>の実行テスト</a>
123 <li><a href="#YACASL2_00e3_0081_00ae_00e3_0082_00a4_00e3_0083_00b3_00e3_0082_00b9_00e3_0083_0088_00e3_0083_00bc_00e3_0083_00ab">2.6 詳細なテスト</a>
124 <li><a href="#YACASL2_00e3_0081_00ae_00e3_0082_00a4_00e3_0083_00b3_00e3_0082_00b9_00e3_0083_0088_00e3_0083_00bc_00e3_0083_00ab">2.7 環境変数<var>PATH</var>の設定</a>
125 </li></ul>
126 <li><a name="toc_YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9" href="#YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9">3 YACASL2 の使い方</a>
127 <ul>
128 <li><a href="#YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9">3.1 実行結果の出力だけを表示</a>
129 <li><a href="#YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9">3.2 アセンブル結果の確認</a>
130 <li><a href="#YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9">3.3 実行時のレジスタとメモリを表示</a>
131 <ul>
132 <li><a href="#YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9">3.3.1 特定のレジスタを表示</a>
133 <li><a href="#YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9">3.3.2 プログラム終了時の値を表示</a>
134 <li><a href="#YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9">3.3.3 プログラムのステップ数を表示</a>
135 </li></ul>
136 <li><a href="#YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9">3.4 アセンブルと実行を別に行う</a>
137 <li><a href="#YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9">3.5 1語の解析</a>
138 <li><a href="#YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9">3.6 CASL2ライブラリの使用</a>
139 <ul>
140 <li><a href="#YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9">3.6.1 数値を出力する</a>
141 </li></ul>
142 </li></ul>
143 <li><a name="toc_YACASL2_00e3_0082_00b3_00e3_0083_009e_00e3_0083_00b3_00e3_0083_0089_00e3_0083_009e_00e3_0083_008b_00e3_0083_00a5_00e3_0082_00a2_00e3_0083_00ab" href="#YACASL2_00e3_0082_00b3_00e3_0083_009e_00e3_0083_00b3_00e3_0083_0089_00e3_0083_009e_00e3_0083_008b_00e3_0083_00a5_00e3_0082_00a2_00e3_0083_00ab">4 YACASL2コマンドマニュアル</a>
144 <ul>
145 <li><a href="#casl2">4.1 <samp><span class="command">casl2</span></samp></a>
146 <ul>
147 <li><a href="#casl2">オプション</a>
148 </li></ul>
149 <li><a href="#comet2">4.2 <samp><span class="command">comet2</span></samp></a>
150 <ul>
151 <li><a href="#comet2">オプション</a>
152 </li></ul>
153 <li><a href="#dumpword">4.3 <samp><span class="command">dumpword</span></samp></a>
154 <ul>
155 <li><a href="#dumpword">オプション</a>
156 </li></ul>
157 </li></ul>
158 </li></ul>
159 </div>
160
161 <p><a name="YACASL2%e3%81%ae%e6%a6%82%e8%a6%81"></a>
162 <a name="YACASL2_00e3_0081_00ae_00e6_00a6_0082_00e8_00a6_0081"></a>
163
164 <h2 class="chapter">1 YACASL2の概要</h2>
165
166  <p>YACASL2は、Linux上で動作するオープンソースのCASL II処理系です。CASL IIは情報処理試験で用いられるアセンブラ言語で、次の資料により仕様が公開されています。
167
168  <blockquote>
169 <a href="http://www.jitec.ipa.go.jp/1_00topic/topic_20081027_hani_yougo.pdf">試験で使用する情報処理用語・プログラム言語など(2008年10月版)</a>[PDFファイル]
170 別紙 1 アセンブラ言語の仕様
171 </blockquote>
172
173  <p>YACASL2は、CASL IIアセンブラ言語で記述されたファイルをアセンブルし、仮想マシンCOMET II上で実行します。アセンブルと実行は、連続で行うことも別々に行うことも可能です。
174 YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試験の問題をはじめ各種参考書やサイトに記載されたCASL IIのプログラムをそのままアセンブルして実行できます。また、本パッケージ中にCASL IIのサンプルプログラムが多数収録されています。
175
176  <p>YACASL2は、「ふつうの処理系」として動作します。ほかの多くのCASL IIエミュレータと違い、デバッガとして動作したり、コンピュータ内部の模式図を表示したりすることはありません。そのかわり、YACASL2は、次のような動作内容をすべてテキストで出力します。
177
178      <ul>
179 <li>ラベルとアドレスの対応
180
181      <li>アセンブル結果
182
183      <li>実行時のレジスタの内容
184
185      <li>実行時のメモリの内容
186 </ul>
187
188  <p>出力された動作内容は、GNU/Linuxのさまざまなツール、たとえば<samp><span class="command">cat</span></samp>、<samp><span class="command">less</span></samp>、<samp><span class="command">grep</span></samp>、<samp><span class="command">wc</span></samp>などを使って解析できます。
189
190  <p>YACASL2の操作は、端末を開いてコマンドを入力・実行することで行います。
191
192 <h3 class="unnumberedsec">要件</h3>
193
194  <p>YACASL2は、Linux上で動作します。現在動作を確認しているのは、次のディストリビューションです。
195
196      <ul>
197 <li>Ubuntu Linux 9.04 / 8.04
198
199      <li>Vine Linux 4.2
200 </ul>
201
202  <p>インストール時に、<samp><span class="command">tar</span></samp>、<samp><span class="command">gcc</span></samp>、<samp><span class="command">make</span></samp>が必要です。
203
204 <p><a name="YACASL2%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab"></a>
205 <a name="YACASL2_00e3_0081_00ae_00e3_0082_00a4_00e3_0083_00b3_00e3_0082_00b9_00e3_0083_0088_00e3_0083_00bc_00e3_0083_00ab"></a>
206
207 <h2 class="chapter">2 YACASL2のインストール</h2>
208
209  <p>YACASL2をインストールするには、Linux上で次の作業をします。
210
211      <ol type=1 start=1>
212
213      <li><samp><span class="file">yacasl2.tar.gz</span></samp>のダウンロード
214
215      <li><samp><span class="file">yacasl2.tar.gz</span></samp>の検証
216
217      <li><samp><span class="file">yacasl2.tar.gz</span></samp>の展開
218
219      <li><samp><span class="command">casl2</span></samp>、<samp><span class="command">comet2</span></samp>、<samp><span class="command">dumpword</span></samp>のビルド
220
221      <li><samp><span class="command">casl2</span></samp>の実行テスト
222
223      <li>詳細なテスト
224
225      <li>環境変数<var>PATH</var>の設定
226       </ol>
227
228 <h3 class="section">2.1 <samp><span class="file">yacasl2.tar.gz</span></samp>のダウンロード</h3>
229
230  <p>(詳細未定)
231
232 <pre class="example">  $ <samp><span class="command">cd</span></samp>
233   $ <samp><span class="command">wget somewhere/yacasl2.tar.gz</span></samp>
234   $ <samp><span class="command">wget somewhere/yacasl2.tar.gz.md5sum</span></samp>
235 </pre>
236  <h3 class="section">2.2 <samp><span class="file">yacasl2.tar.gz</span></samp>の検証</h3>
237
238  <p>(PGPを使った検証も導入予定)
239
240  <p>ダウンロードが完了したら、<samp><span class="command">md5sum</span></samp>と<samp><span class="command">diff</span></samp>で正しくファイルがダウンロードができているかを検証します。
241
242 <pre class="example">  $ <samp><span class="command">md5sum yacasl2.tar.gz | diff -s yacasl2.tar.gz.md5sum -</span></samp>
243   Files yacasl2.tar.gz.md5sum and - are identical
244 </pre>
245  <h3 class="section">2.3 <samp><span class="file">yacasl2.tar.gz</span></samp>の展開</h3>
246
247  <p><samp><span class="file">yacasl2.tar.gz</span></samp>をダウンロードしたら、次のコマンドで展開します。
248
249 <pre class="example">  $ <samp><span class="command">tar xvzf yacasl2.tar.gz</span></samp>
250 </pre>
251  <h3 class="section">2.4 <samp><span class="command">casl2</span></samp>、<samp><span class="command">comet2</span></samp>、<samp><span class="command">dumpword</span></samp>のビルド</h3>
252
253  <p>展開したら、次のコマンドで<samp><span class="command">casl2</span></samp>、<samp><span class="command">comet2</span></samp>、<samp><span class="command">dumpword</span></samp>をビルドします。
254
255 <pre class="example">  $ <samp><span class="command">cd yacasl2</span></samp>
256   $ <samp><span class="command">make</span></samp>
257   make -C src
258   make[1]: Entering directory ‘/home/kazubito/yacasl2/src’
259   gcc -c -g -Wall -I ../include casl2.c
260   gcc -c -g -Wall -I ../include word.c
261   gcc -c -g -Wall -I ../include hash.c
262   gcc -c -g -Wall -I ../include cerr.c
263   gcc -c -g -Wall -I ../include struct.c
264   gcc -c -g -Wall -I ../include cmd.c
265   gcc -c -g -Wall -I ../include assemble.c
266   gcc -c -g -Wall -I ../include token.c
267   gcc -c -g -Wall -I ../include label.c
268   gcc -c -g -Wall -I ../include macro.c
269   gcc -c -g -Wall -I ../include exec.c
270   gcc -c -g -Wall -I ../include dump.c
271   gcc -g -Wall -I ../include -o ../casl2 casl2.o word.o hash.o cerr.o st
272   ruct.o cmd.o assemble.o token.o label.o macro.o exec.o dump.o
273   gcc -c -g -Wall -I ../include comet2.c
274   gcc -g -Wall -I ../include -o ../comet2 comet2.o word.o hash.o cerr.o
275   struct.o cmd.o exec.o dump.o
276   gcc -c -g -Wall -I ../include dumpword.c
277   gcc -g -Wall -I ../include -o ../dumpword dumpword.o word.o cerr.o
278   make[1]: Leaving directory ‘/home/kazubito/yacasl2/src’
279 </pre>
280  <h3 class="section">2.5 <samp><span class="command">casl2</span></samp>の実行テスト</h3>
281
282  <p>ビルドしたら、次のコマンドが正常に実行できるかを確認します。
283 正常に実行された場合は、「Hello, World!」と表示されます。
284
285 <pre class="example">  $ <samp><span class="command">./casl2 as/hello.casl</span></samp>
286   Hello, World!
287 </pre>
288  <h3 class="section">2.6 詳細なテスト</h3>
289
290  <p>次のコマンドを実行すると、正常にビルドできているかどうかを詳細にテストできます。
291
292 <pre class="example">  $ <samp><span class="command">make check</span></samp>
293   194 / 194 tests passed. Details in /home/kazubito/yacasl2/test/integra
294   tion/casl2/Test.log
295   All tests are succeded.
296   149 / 149 tests passed. Details in /home/kazubito/yacasl2/test/integra
297   tion/comet2/Test.log
298   All tests are succeded.
299   4 / 4 tests passed. Details in /home/kazubito/yacasl2/test/integration
300   /dumpword/Test.log
301   All tests are succeded.
302 </pre>
303  <h3 class="section">2.7 環境変数<var>PATH</var>の設定</h3>
304
305  <p>環境変数<var>PATH</var>にYACASL2のディレクトリを追加すると、どのディレクトリでも<samp><span class="command">casl2</span></samp>、<samp><span class="command">comet2</span></samp>、<samp><span class="command">dumpword</span></samp>を実行できます。
306
307  <p>環境変数の設定方法は使っているシェルによって異なります。シェルは、次のコマンドで確認できます。
308
309 <pre class="example">  $ <samp><span class="command">echo $SHELL</span></samp>
310   /bin/bash
311 </pre>
312  <p>現在もっとも多く使われているシェルは、BASHでしょう。BASHでは、次のコマンドを実行すると環境変数<var>PATH</var>にYACASL2のディレクトリが追加されます。
313
314 <pre class="example">  $ <samp><span class="command">PATH=$PATH:~/yacasl2 &amp;&amp; export PATH</span></samp>
315 </pre>
316  <p>シェルの初期設定ファイルに上記のコマンドを追加すれば、今後ログインした後は自動的にどのディレクトリでも <samp><span class="command">casl2</span></samp>、<samp><span class="command">comet2</span></samp>、<samp><span class="command">dumpword</span></samp>を実行できます。BASHではホームディレクトリにある<samp><span class="file">.bashrc</span></samp>が初期設定ファイルのため、次のコマンドで追加されます。
317
318 <pre class="example">  $ <samp><span class="command">echo ’PATH=$PATH:~/yacasl2 &amp;&amp; export PATH’ &gt;&gt;~/.bashrc</span></samp>
319 </pre>
320  <p><a name="YACASL2%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9"></a>
321 <a name="YACASL2_00e3_0081_00ae_00e4_00bd_00bf_00e3_0081_0084_00e6_0096_00b9"></a>
322
323 <h2 class="chapter">3 YACASL2 の使い方</h2>
324
325  <p>YACASL2 は、テキストファイルに記述されたCASLプログラムを処理します。以下の例で用いられるCASLプログラムのファイルは、テキストエディタなどで作成してください。また、インストールしたディレクトリの中にある<samp><span class="file">as</span></samp>ディレクトリからコピーして作成することもできます。
326
327 <h3 class="section">3.1 実行結果の出力だけを表示</h3>
328
329  <p>インストール時にコマンド実行の確認に使った<samp><span class="file">hello.casl</span></samp>は、次のような内容です。CASL IIのマクロ命令OUTは、文字列を出力します。
330
331 <pre class="example">  $ <samp><span class="command">cat hello.casl</span></samp>
332   MAIN     START
333            OUT     OBUF,LEN
334            RET
335   OBUF     DC      ’Hello, World!’
336   LEN      DC      13
337            END
338 </pre>
339  <p>次のコマンドを実行すると、CASL II のアセンブルと仮想マシン COMET II 上での実行が連続で行われ、文字列が出力されます。
340
341 <pre class="example">  $ <samp><span class="command">casl2 hello.casl</span></samp>
342   Hello, World!
343 </pre>
344  <p><samp><span class="file">addl.casl</span></samp>は、3と1の和を求めます。
345
346 <pre class="example">  $ <samp><span class="command">cat addl.casl</span></samp>
347   ;;; ADDL r,adr
348   MAIN     START
349            LD      GR1,A
350            ADDL    GR1,B
351            RET
352   A        DC      3
353   B        DC      1
354            END
355 </pre>
356  <p>このプログラムには出力命令がないため、オプションなしで実行した場合には結果が出力されません。
357
358 <pre class="example">  $ <samp><span class="command">casl2 addl.casl</span></samp>
359   $
360 </pre>
361  <p>実行内容を確認するには、後述のようにCPU 内にあるレジスタやメモリの内容を表示するか、結果を出力するための処理を追加する必要があります。
362
363  <p><samp><span class="file">sum_10.casl</span></samp>は、1から10までの整数の和を求めます。
364
365 <pre class="example">  $ <samp><span class="command">cat sum_10.casl</span></samp>
366   ;;; sum_10.casl
367   ;;; 出力 GR0: 1から10までの整数をすべて加算した値
368   MAIN    START
369           PUSH    0,GR1
370           LAD     GR0,0           ; GR0を初期化
371           LD      GR1,FST         ; GR1に初項を転送
372   LOOP    ADDL    GR0,GR1         ; ループ先頭
373           ADDL    GR1,STEP        ; GR1 &lt;- GR1 + 公差
374           CPL     GR1,LST         ; GR1が末項より大きい場合は終了
375           JPL     FIN             ; ↓
376           JUMP    LOOP            ; ループ終端
377   FIN     POP     GR1
378           RET
379   FST     DC      1               ; 初項
380   LST     DC      10              ; 末項
381   STEP    DC      1               ; 公差
382           END
383 </pre>
384  <p>このプログラムも、オプションなしで実行した場合には結果が出力されません。
385 <pre class="example">  $ <samp><span class="command">casl2 sum_10.casl</span></samp>
386   $
387 </pre>
388  <h3 class="section">3.2 アセンブル結果の確認</h3>
389
390  <p>casl2の処理途中で行われるアセンブルの結果を表示するには、オプション<samp><span class="option">-a</span></samp>を指定します。また、ラベルとアドレスの対応表を表示するには、オプション<samp><span class="option">-l</span></samp>を指定します。
391
392  <p>次のコマンドでは<samp><span class="file">hello.casl</span></samp>の、ラベルとアドレスの対応表と、アセンブル結果と、実行結果が表示されます。OUTはアセンブラ命令で複数の機械語命令で構成されているため、命令行1行に対して、複数行のコードが生成されます。
393
394 <pre class="example">  $ <samp><span class="command">casl2 -a -l hello.casl</span></samp>
395   
396   Assemble hello.casl (0)
397   
398   Label::::
399   MAIN.LEN ---&gt; #0020
400   MAIN ---&gt; #0000
401   MAIN.OBUF ---&gt; #0013
402   
403   Assemble hello.casl (1)
404   hello.casl:    1:MAIN    START
405   hello.casl:    2:        OUT     OBUF,LEN
406       #0000   #7001
407       #0001   #0000
408       #0002   #7002
409       #0003   #0000
410       #0004   #1210
411       #0005   #0013
412       #0006   #1220
413       #0007   #0020
414       #0008   #F000
415       #0009   #0002
416       #000A   #1210
417       #000B   #0021
418       #0021   #000A
419       #000C   #1220
420       #000D   #0022
421       #0022   #0001
422       #000E   #F000
423       #000F   #0002
424       #0010   #7120
425       #0011   #7110
426   hello.casl:    3:        RET
427       #0012   #8100
428   hello.casl:    4:OBUF    DC      'Hello, World!'
429       #0013   #0048
430       #0014   #0065
431       #0015   #006C
432       #0016   #006C
433       #0017   #006F
434       #0018   #002C
435       #0019   #0020
436       #001A   #0057
437       #001B   #006F
438       #001C   #0072
439       #001D   #006C
440       #001E   #0064
441       #001F   #0021
442   hello.casl:    5:LEN     DC      13
443       #0020   #000D
444   hello.casl:    6:        END
445   Hello, World!
446 </pre>
447  <p><samp><span class="file">addl.casl</span></samp>の、ラベルとアドレスの対応表と、アセンブル結果は、次のようになります。
448
449 <pre class="example">  $ <samp><span class="command">casl2 -a -l addl.casl</span></samp>
450   
451   Assemble addl.casl (0)
452   
453   Label::::
454   MAIN.A ---&gt; #0005
455   MAIN.B ---&gt; #0006
456   MAIN ---&gt; #0000
457   
458   Assemble addl.casl (1)
459   addl.casl:    1:;;; ADDL r,adr
460   addl.casl:    2:MAIN    START
461   addl.casl:    3:        LD      GR1,A
462       #0000   #1010
463       #0001   #0005
464   addl.casl:    4:        ADDL    GR1,B
465       #0002   #2210
466       #0003   #0006
467   addl.casl:    5:        RET
468       #0004   #8100
469   addl.casl:    6:A       DC      3
470       #0005   #0003
471   addl.casl:    7:B       DC      1
472       #0006   #0001
473   addl.casl:    8:        END
474 </pre>
475  <p>なお、オプション<samp><span class="option">-A</span></samp>を指定すると、アセンブル結果が表示される時点で処理が終了します。仮想マシンCOMET II での実行は行われません。
476
477 <h3 class="section">3.3 実行時のレジスタとメモリを表示</h3>
478
479  <p>YACASL2では実行中のCPUのレジスタとメモリの内容をそれぞれ、<samp><span class="option">-t</span></samp>と<samp><span class="option">-d</span></samp>を指定することで表示できます。
480
481  <p>また、<samp><span class="option">-M</span></samp>で、仮想マシンCOMET II のメモリ容量を語(16 ビット)単位で指定できます。小さいプログラムを実行するときは、メモリ容量を小さくすれば結果が見やすくなります。
482
483  <p><samp><span class="file">addl.casl</span></samp>に必要なメモリ容量は8語のため、次のようにCPUのレジスタとメモリの内容を表示できます。
484
485 <pre class="example">  $ <samp><span class="command">casl2 -t -d -M8 addl.casl | less</span></samp>
486   
487   Assemble addl.casl (0)
488   
489   Assemble addl.casl (1)
490   
491   Executing machine codes
492   #0000: Register::::
493   #0000: GR0:      0 = #0000 = 0000000000000000
494   #0000: GR1:      0 = #0000 = 0000000000000000
495   #0000: GR2:      0 = #0000 = 0000000000000000
496   #0000: GR3:      0 = #0000 = 0000000000000000
497   #0000: GR4:      0 = #0000 = 0000000000000000
498   #0000: GR5:      0 = #0000 = 0000000000000000
499   #0000: GR6:      0 = #0000 = 0000000000000000
500   #0000: GR7:      0 = #0000 = 0000000000000000
501   #0000: SP:       8 = #0008 = 0000000000001000
502   #0000: PR:       0 = #0000 = 0000000000000000
503   #0000: FR (OF SF ZF): 000
504   #0000: Memory::::
505   #0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007
506   #0000: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
507   #0002: Register::::
508   #0002: GR0:      0 = #0000 = 0000000000000000
509   #0002: GR1:      3 = #0003 = 0000000000000011
510   #0002: GR2:      0 = #0000 = 0000000000000000
511   #0002: GR3:      0 = #0000 = 0000000000000000
512   #0002: GR4:      0 = #0000 = 0000000000000000
513   #0002: GR5:      0 = #0000 = 0000000000000000
514   #0002: GR6:      0 = #0000 = 0000000000000000
515   #0002: GR7:      0 = #0000 = 0000000000000000
516   #0002: SP:       8 = #0008 = 0000000000001000
517   #0002: PR:       2 = #0002 = 0000000000000010
518   #0002: FR (OF SF ZF): 000
519   #0002: Memory::::
520   #0002: adr : 0000 0001 0002 0003 0004 0005 0006 0007
521   #0002: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
522   #0004: Register::::
523   #0004: GR0:      0 = #0000 = 0000000000000000
524   #0004: GR1:      4 = #0004 = 0000000000000100
525   #0004: GR2:      0 = #0000 = 0000000000000000
526   #0004: GR3:      0 = #0000 = 0000000000000000
527   #0004: GR4:      0 = #0000 = 0000000000000000
528   #0004: GR5:      0 = #0000 = 0000000000000000
529   #0004: GR6:      0 = #0000 = 0000000000000000
530   #0004: GR7:      0 = #0000 = 0000000000000000
531   #0004: SP:       8 = #0008 = 0000000000001000
532   #0004: PR:       4 = #0004 = 0000000000000100
533   #0004: FR (OF SF ZF): 000
534   #0004: Memory::::
535   #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007
536   #0004: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
537 </pre>
538  <h4 class="subsection">3.3.1 特定のレジスタを表示</h4>
539
540  <p><samp><span class="file">addl.casl</span></samp>のレジスタやメモリの中で、実行中に値が変化しているのはGR1だけです。こうした場合は、<samp><span class="command">grep</span></samp>を使って表示される内容を絞り込むことで動作を検証しやすくなります。
541
542 <pre class="example">  $ <samp><span class="command">casl2 -t addl.casl | grep 'GR1:'</span></samp>
543   #0000: GR1:      0 = #0000 = 0000000000000000
544   #0002: GR1:      3 = #0003 = 0000000000000011
545   #0004: GR1:      4 = #0004 = 0000000000000100
546 </pre>
547  <p>この内容を、先に出力したアセンブル結果と引き比べてください。
548 次の表のように、PRとGR1、命令行が対応していることがわかります。
549
550  <p><table summary=""><tr align="left"><td valign="top" width="30%">PR </td><td valign="top" width="30%">GR1 </td><td valign="top" width="40%">命令行
551 <br></td></tr><tr align="left"><td valign="top" width="30%">#0000
552 </td><td valign="top" width="30%">#0000
553 <br></td></tr><tr align="left"><td valign="top" width="30%">#0002
554 </td><td valign="top" width="30%">#0003
555 </td><td valign="top" width="40%"><code>LD GR1,A</code>
556 <br></td></tr><tr align="left"><td valign="top" width="30%">#0004
557 </td><td valign="top" width="30%">#0004
558 </td><td valign="top" width="40%"><code>ADDL GR1,B</code>
559  <br></td></tr></table>
560
561 <h4 class="subsection">3.3.2 プログラム終了時の値を表示</h4>
562
563  <p><samp><span class="command">grep</span></samp>と<samp><span class="command">tail</span></samp>を組み合わせれば、プログラム終了時の値を表示できます。
564
565 <pre class="example">  $ <samp><span class="command">casl2 -t addl.casl | grep 'GR1:' | tail -1</span></samp>
566   #0004: GR1:      4 = #0004 = 0000000000000100
567 </pre>
568  <pre class="example">  $ <samp><span class="command">casl2 -t sum_10.casl | grep 'GR0:' | tail -1</span></samp>
569   #0010: GR0:     55 = #0037 = 0000000000110111 = '7'
570 </pre>
571  <h4 class="subsection">3.3.3 プログラムのステップ数を表示</h4>
572
573  <p><samp><span class="command">grep</span></samp>と<samp><span class="command">wc</span></samp>を組み合わせれば、プログラムのステップ数を表示できます。
574
575 <pre class="example">  $ <samp><span class="command">casl2 -t hello.casl | grep 'GR1:' | wc -l</span></samp>
576   11
577 </pre>
578  <pre class="example">  $ <samp><span class="command">casl2 -t addl.casl | grep 'GR1:' | wc -l</span></samp>
579   3
580 </pre>
581  <p><samp><span class="file">sum_10.casl</span></samp>はプログラム内にループがあるため、ステップ数が大きくなります。
582
583 <pre class="example">  $ <samp><span class="command">casl2 -t sum_10.casl | grep 'GR0:' | wc -l</span></samp>
584   54
585 </pre>
586  <h3 class="section">3.4 アセンブルと実行を別に行う</h3>
587
588  <p><samp><span class="command">casl2</span></samp>に<samp><span class="option">-O</span></samp><samp><span class="file">ファイル名</span></samp>を指定すると、オブジェクトファイルを作成できます。
589
590 <pre class="example">  $ <samp><span class="command">casl2 -Ohello.o hello.casl</span></samp>
591 </pre>
592  <p>作成されたオブジェクトファイルの内容は、<samp><span class="command">od</span></samp>を使って確認できます。テキストファイルではないため、<samp><span class="command">cat</span></samp>などでは確認できません。
593
594 <pre class="example">  $ <samp><span class="command">od -t x2 hello.o</span></samp>
595   0000000 7001 0000 7002 0000 1210 0013 1220 0020
596   0000020 f000 0002 1210 0021 1220 0022 f000 0002
597   0000040 7120 7110 8100 0048 0065 006c 006c 006f
598   0000060 002c 0020 0057 006f 0072 006c 0064 0021
599   0000100 000d 000a 0001
600   0000106
601 </pre>
602  <p>オブジェクトファイルの実行には、<samp><span class="command">comet2</span></samp>を使います。
603
604 <pre class="example">  $ <samp><span class="command">comet2 hello.o</span></samp>
605   Hello, World!
606 </pre>
607  <h3 class="section">3.5 1語の解析</h3>
608
609  <p>CASL IIでは、1語(16ビット)を単位としてデータが処理されます。
610 <samp><span class="command">dumpword</span></samp>は、指定した1語を10進数、16進数、2進数で表示します。
611
612 <pre class="example">  $ <samp><span class="command">dumpword 72</span></samp>
613       72:     72 = #0048 = 0000000001001000 = 'H'
614 </pre>
615  <p>マイナスの数は、次のように指定します。
616
617 <pre class="example">  $ <samp><span class="command">dumpword</span></samp> <samp><span class="option">--</span></samp> <samp><span class="command">-72</span></samp>
618      -72:    -72 = #FFB8 = 1111111110111000
619 </pre>
620  <p>16進数は、次のように指定します。
621
622 <pre class="example">  $ <samp><span class="command">dumpword '#0048'</span></samp>
623    #0048:     72 = #0048 = 0000000001001000 = 'H'
624 </pre>
625  <h3 class="section">3.6 CASL2ライブラリの使用</h3>
626
627  <p>YACASL2の<samp><span class="file">as/casl2lib</span></samp>ディレクトリには、CASL IIで記述されたライブラリファイルが格納されています。
628
629  <p>このフォルダには、たとえば次のようなプログラムが含まれています。
630
631      <dl>
632 <dt>&lsquo;<samp><span class="samp">OUTL</span></samp>&rsquo;<dd><samp><span class="file">outl.casl</span></samp>。GR1に格納された値を、0〜65535の数値として出力します。
633
634      <br><dt>&lsquo;<samp><span class="samp">OUTA</span></samp>&rsquo;<dd><samp><span class="file">outa.casl</span></samp>。GR1に格納された値を、-32767〜32767の数値として出力します。
635
636      <br><dt>&lsquo;<samp><span class="samp">MULL</span></samp>&rsquo;<dd><samp><span class="file">mull.casl</span></samp>。GR1とGR2に格納された値を0〜65535の整数と見なし、積をGR3に格納します。
637
638      <br><dt>&lsquo;<samp><span class="samp">DIVL</span></samp>&rsquo;<dd><samp><span class="file">divl.casl</span></samp>。GR1とGR2に格納された値を0〜65535の整数と見なし、商をGR3、剰余をGR0に格納します。
639 </dl>
640
641 <h4 class="subsection">3.6.1 数値を出力する</h4>
642
643  <p>3と1の和を求める<samp><span class="file">addl.casl</span></samp>で演算結果を出力するには、まず<samp><span class="file">addl.casl</span></samp>を編集します。CASL IIの<samp><span class="command">CALL</span></samp>命令で<samp><span class="command">OUTL</span></samp>を副プログラムとして呼び出すようにします。
644
645 <pre class="example">  $ <samp><span class="command">cat addl_outl.casl</span></samp>
646   MAIN    START
647           LD      GR1,A
648           ADDL    GR1,B
649           <strong>CALL    OUTL</strong>
650           RET
651   A       DC      3
652   B       DC      1
653           END
654 </pre>
655  <p>変更したら<samp><span class="command">casl2</span></samp>を、複数のファイルを指定して実行します。
656
657 <pre class="example">  $ <samp><span class="command">casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl</span></samp>
658   4
659 </pre>
660  <p><a name="YACASL2%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%9e%e3%83%8b%e3%83%a5%e3%82%a2%e3%83%ab"></a>
661 <a name="YACASL2_00e3_0082_00b3_00e3_0083_009e_00e3_0083_00b3_00e3_0083_0089_00e3_0083_009e_00e3_0083_008b_00e3_0083_00a5_00e3_0082_00a2_00e3_0083_00ab"></a>
662
663 <h2 class="chapter">4 YACASL2コマンドマニュアル</h2>
664
665  <p><a name="index-YACASL2_00e3_0082_00b3_00e3_0083_009e_00e3_0083_00b3_00e3_0083_0089_00e3_0083_009e_00e3_0083_008b_00e3_0083_00a5_00e3_0082_00a2_00e3_0083_00ab-1"></a>
666 YACASL2のコマンドとオプションについて解説します。
667
668 <p><a name="casl2"></a>
669
670 <h3 class="section">4.1 <samp><span class="command">casl2</span></samp></h3>
671
672  <p><a name="index-casl2-2"></a><a name="index-casl2-3"></a>
673 <samp><span class="command">casl2</span></samp>は、引数として指定されたCASLファイルをアセンブルし、仮想マシンCOMET II上で実行します。CASLファイルは、アセンブラ言語CASL IIで記述されたテキストファイルです。引数が指定されない場合は、エラーメッセージを表示して終了します。
674
675 <pre class="example">  $ <samp><span class="command">casl2 hello.casl</span></samp>
676 </pre>
677  <p>副プログラムを呼び出す場合は、複数のCASLファイルを指定することもできます。
678
679 <pre class="example">  $ <samp><span class="command">casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl</span></samp>
680 </pre>
681  <h4 class="unnumberedsubsec">オプション</h4>
682
683  <p><samp><span class="command">casl2</span></samp>は、次のオプションを指定できます。
684
685      <dl>
686 <dt>&lsquo;<samp><span class="samp">-s</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--source</span></samp>&rsquo;<dd>CASLファイルの内容を表示します。
687
688      <br><dt>&lsquo;<samp><span class="samp">-l</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--label</span></samp>&rsquo;<dd>ラベルの一覧を表示し、ほかの作業を続行します。
689
690      <br><dt>&lsquo;<samp><span class="samp">-L</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--labelonly</span></samp>&rsquo;<dd>ラベルの一覧を表示して終了します。
691
692      <br><dt>&lsquo;<samp><span class="samp">-a</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--assembledetail</span></samp>&rsquo;<dd>アセンブル詳細結果を表示し、ほかの作業を続行します。
693
694      <br><dt>&lsquo;<samp><span class="samp">-A</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--show-all</span></samp>&rsquo;<dd>アセンブル詳細結果を表示して終了します。
695
696      <br><dt>&lsquo;<samp><span class="samp">-o&lt;OBJECTFILE&gt;</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--assembleout</span></samp>&rsquo;<dd>アセンブル結果をオブジェクトファイル<samp><span class="file">&lt;OBJECTFILE&gt;</span></samp>に出力し、ほかの作業を続行します。出力されたオブジェクトファイルは、<samp><span class="command">comet2</span></samp>で実行できます。オブジェクトファイルを指定しない場合、出力先は<samp><span class="file">a.o</span></samp>です。オブジェクトファイルは1つだけ指定できます。
697
698      <br><dt>&lsquo;<samp><span class="samp">-O&lt;OBJECTFILE&gt;</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--assembleoutonly</span></samp>&rsquo;<dd>アセンブル結果をオブジェクトファイル<samp><span class="file">&lt;OBJECTFILE&gt;</span></samp>に出力し、終了します。出力されたオブジェクトファイルは、<samp><span class="command">comet2</span></samp>で実行できます。オブジェクトファイルを指定しない場合、出力先は<samp><span class="file">a.o</span></samp>です。オブジェクトファイルは1つだけ指定できます。
699
700      <br><dt>&lsquo;<samp><span class="samp">-t</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--trace</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--tracearithmetic</span></samp>&rsquo;<dd>実行時のレジスタをトレースします。レジスタには、GR0〜GR7という8個の汎用レジスタと、SP(スタックポインタ)、PR(プログラムレジスタ)、FR(フラグレジスタ)があります。レジストリの内容は、-32,768〜32,767の範囲の整数、#0000〜#FFFFの範囲の16進数、2進数で表示されます。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。-32768〜32767の範囲の整数を表示するので、算術演算の結果を確認する場合に使えます。
701
702      <br><dt>&lsquo;<samp><span class="samp">-T</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--tracelogical</span></samp>&rsquo;<dd><samp><span class="option">-t</span></samp>と同じく、実行時のレジスタをトレースします。<samp><span class="option">-t</span></samp>と異なり0〜65,535の範囲の整数を表示するので、論理演算の結果を確認する場合に使えます。
703
704      <br><dt>&lsquo;<samp><span class="samp">-d</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--dump</span></samp>&rsquo;<dd>メモリの内容をすべて表示します。
705
706      <br><dt>&lsquo;<samp><span class="samp">-M &lt;MEMORYSIZE&gt;</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--memorysize &lt;MEMORYSIZE&gt;</span></samp>&rsquo;<dd>アセンブルおよび実行時のメモリサイズ<samp><span class="option">&lt;MEMORYSIZE&gt;</span></samp>を0〜65,535の範囲で指定します。指定しない場合、メモリサイズは512です。
707
708      <br><dt>&lsquo;<samp><span class="samp">-C &lt;CLOCKS&gt;</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--clocks &lt;CLOCKS&gt;</span></samp>&rsquo;<dd>実行時のクロック周波数<samp><span class="option">&lt;CLOCKS&gt;</span></samp>を0より大きい整数で指定します。指定しない場合、クロック周波数は5000000です。
709
710      <br><dt>&lsquo;<samp><span class="samp">-h</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--help</span></samp>&rsquo;<dd><samp><span class="command">casl2</span></samp>の使用方法を表示して終了します。
711 </dl>
712
713 <p><a name="comet2"></a>
714
715 <h3 class="section">4.2 <samp><span class="command">comet2</span></samp></h3>
716
717  <p><a name="index-comet2-4"></a><a name="index-comet2-5"></a>
718 <samp><span class="command">comet2</span></samp>は、引数として指定されたオブジェクトファイルを仮想マシンCOMET II上で実行します。オブジェクトファイルは、<samp><span class="command">casl</span></samp>に<samp><span class="option">-o</span></samp>または<samp><span class="option">-O</span></samp>を指定して出力します。
719
720 <pre class="example">  $ <samp><span class="command">comet2 hello.o</span></samp>
721 </pre>
722  <p>引数で指定できるオブジェクトファイルは1つだけです。引数が指定されない場合は、エラーメッセージを表示して終了します。複数の引数を指定した場合、2番目以降の引数は無視されます。
723
724 <h4 class="unnumberedsubsec">オプション</h4>
725
726  <p><samp><span class="command">comet2</span></samp>は、次のオプションを指定できます。
727
728      <dl>
729 <dt>&lsquo;<samp><span class="samp">-t</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--trace</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--tracearithmetic</span></samp>&rsquo;<dd>実行時のレジスタをトレースします。レジスタには、GR0〜GR7という8個の汎用レジスタと、SP(スタックポインタ)、PR(プログラムレジスタ)、FR(フラグレジスタ)があります。レジストリの内容は、-32,768〜32,767の範囲の整数、#0000〜#FFFFの範囲の16進数、2進数で表示されます。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。-32768〜32767の範囲の整数が表示されるので、算術演算の結果を確認する場合に使えます。
730
731      <br><dt>&lsquo;<samp><span class="samp">-T</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--tracelogical</span></samp>&rsquo;<dd><samp><span class="option">-t</span></samp>と同じく、実行時のレジスタをトレースします。<samp><span class="option">-t</span></samp>と異なり0〜65,535の範囲の整数を表示するので、論理演算の結果を確認する場合に使えます。
732
733      <br><dt>&lsquo;<samp><span class="samp">-d</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--dump</span></samp>&rsquo;<dd>メモリの内容をすべて表示します。
734
735      <br><dt>&lsquo;<samp><span class="samp">-M &lt;MEMORYSIZE&gt;</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--memorysize &lt;MEMORYSIZE&gt;</span></samp>&rsquo;<dd>実行時のメモリサイズ<samp><span class="option">&lt;MEMORYSIZE&gt;</span></samp>を0〜65,535の範囲で指定します。指定しない場合、メモリサイズは512です。
736
737      <br><dt>&lsquo;<samp><span class="samp">-C &lt;CLOCKS&gt;</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--clocks &lt;CLOCKS&gt;</span></samp>&rsquo;<dd>実行時のクロック周波数<samp><span class="option">&lt;CLOCKS&gt;</span></samp>を0より大きい整数で指定します。指定しない場合、クロック周波数は5,000,000です。
738
739      <br><dt>&lsquo;<samp><span class="samp">-h</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--help</span></samp>&rsquo;<dd><samp><span class="command">comet2</span></samp>の使用方法を表示して終了します。
740 </dl>
741
742 <p><a name="dumpword"></a>
743
744 <h3 class="section">4.3 <samp><span class="command">dumpword</span></samp></h3>
745
746  <p><a name="index-dumpword-6"></a><a name="index-dumpword-7"></a>
747 <samp><span class="command">dumpword</span></samp>は、引数として指定された数値を、整数、#0000〜#FFFFの範囲の16進数、2進数で表示します。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。引数は、10進数または先頭に「#」の付いた16進数で指定します。表示される整数は、オプションにより-32,768〜32,767または0〜65,535の範囲です。オプションなしの場合は、-32,768〜32,767です。
748
749 <pre class="example">  $ <samp><span class="command">dumpword 10</span></samp>
750 </pre>
751  <p>引数で指定できる1つだけです。引数が指定されない場合は、使い方を表示して終了します。複数の引数を指定した場合、2番目以降の引数は無視されます。
752
753 <h4 class="unnumberedsubsec">オプション</h4>
754
755  <p><samp><span class="command">dumpword</span></samp>は、次のオプションを指定できます。
756
757      <dl>
758 <dt>&lsquo;<samp><span class="samp">-a</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--arithmetic</span></samp>&rsquo;<dd>出力される整数の範囲を-32,768〜32,767にします。オプションなしの場合と同じです。
759
760      <br><dt>&lsquo;<samp><span class="samp">-l</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--logical</span></samp>&rsquo;<dd>出力される整数の範囲を0〜65,535にします。
761
762      <br><dt>&lsquo;<samp><span class="samp">-h</span></samp>&rsquo;<dt>&lsquo;<samp><span class="samp">--help</span></samp>&rsquo;<dd><samp><span class="command">dumpword</span></samp>の使用方法を表示して終了します。
763 </dl>
764
765 </body></html>
766