<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html xmlns='http://www.w3.org/1999/xhtml'> <head> <title>doc/manual.html</title> <meta name='robots' content='noindex,nofollow' /> <meta name='generator' content='GLOBAL-6.6.5' /> <meta http-equiv='Content-Style-Type' content='text/css' /> <link rel='stylesheet' type='text/css' href='../style.css' /> </head> <body> <a id='TOP' name='TOP'></a><h2 class='header'><a href='../mains.html'>root</a>/<a href='../files/2921.html'>doc</a>/manual.html</h2> <em class='comment'>/* [<][>][^][v][top]<a href='#BOTTOM'>[bottom]</a><a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</em> <hr /> <pre> <a id='L1' name='L1'></a><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <a id='L2' name='L2'></a><html> <a id='L3' name='L3'></a><!-- Copyright (C) 2010-2021 j8takagi --> <a id='L4' name='L4'></a><!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ --> <a id='L5' name='L5'></a><head> <a id='L6' name='L6'></a><meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <a id='L7' name='L7'></a><title>YACASL2 - CASL II 処理システム</title> <a id='L8' name='L8'></a> <a id='L9' name='L9'></a><meta name="description" content="YACASL2 - CASL II 処理システム"> <a id='L10' name='L10'></a><meta name="keywords" content="YACASL2 - CASL II 処理システム"> <a id='L11' name='L11'></a><meta name="resource-type" content="document"> <a id='L12' name='L12'></a><meta name="distribution" content="global"> <a id='L13' name='L13'></a><meta name="Generator" content="makeinfo"> <a id='L14' name='L14'></a><link href="#Top" rel="start" title="Top"> <a id='L15' name='L15'></a><link href="#SEC_Contents" rel="contents" title="Table of Contents"> <a id='L16' name='L16'></a><link href="dir.html#Top" rel="up" title="(dir)"> <a id='L17' name='L17'></a><style type="text/css"> <a id='L18' name='L18'></a><!-- <a id='L19' name='L19'></a>a.summary-letter {text-decoration: none} <a id='L20' name='L20'></a>blockquote.indentedblock {margin-right: 0em} <a id='L21' name='L21'></a>div.display {margin-left: 3.2em} <a id='L22' name='L22'></a>div.example {margin-left: 3.2em} <a id='L23' name='L23'></a>div.lisp {margin-left: 3.2em} <a id='L24' name='L24'></a>kbd {font-style: oblique} <a id='L25' name='L25'></a>pre.display {font-family: inherit} <a id='L26' name='L26'></a>pre.format {font-family: inherit} <a id='L27' name='L27'></a>pre.menu-comment {font-family: serif} <a id='L28' name='L28'></a>pre.menu-preformatted {font-family: serif} <a id='L29' name='L29'></a>span.nolinebreak {white-space: nowrap} <a id='L30' name='L30'></a>span.roman {font-family: initial; font-weight: normal} <a id='L31' name='L31'></a>span.sansserif {font-family: sans-serif; font-weight: normal} <a id='L32' name='L32'></a>ul.no-bullet {list-style: none} <a id='L33' name='L33'></a>body { <a id='L34' name='L34'></a> margin-left: 6em; <a id='L35' name='L35'></a> margin-right: 12em; <a id='L36' name='L36'></a> color: black; <a id='L37' name='L37'></a> background-color: #EEE; <a id='L38' name='L38'></a> font-family: sans-serif; <a id='L39' name='L39'></a>} <a id='L40' name='L40'></a> <a id='L41' name='L41'></a>h1, h2, h3, h4, h5, h6 { <a id='L42' name='L42'></a> color: navy; <a id='L43' name='L43'></a> background-color: inherit; <a id='L44' name='L44'></a>} <a id='L45' name='L45'></a> <a id='L46' name='L46'></a>h1, h2 { <a id='L47' name='L47'></a> margin-left: -2em; <a id='L48' name='L48'></a>} <a id='L49' name='L49'></a> <a id='L50' name='L50'></a>.node{ <a id='L51' name='L51'></a> margin-left: -3em; <a id='L52' name='L52'></a> color: inherit; <a id='L53' name='L53'></a> background-color: #DDF; <a id='L54' name='L54'></a>} <a id='L55' name='L55'></a> <a id='L56' name='L56'></a>.menu, .node { <a id='L57' name='L57'></a> color: inherit; <a id='L58' name='L58'></a> background-color: #DDF; <a id='L59' name='L59'></a>} <a id='L60' name='L60'></a> <a id='L61' name='L61'></a>table.menu, table.menu th, table.menu td { <a id='L62' name='L62'></a> border-style: none; <a id='L63' name='L63'></a>} <a id='L64' name='L64'></a> <a id='L65' name='L65'></a>h2 { <a id='L66' name='L66'></a> padding: 0.25em; <a id='L67' name='L67'></a> border: 2px solid navy; <a id='L68' name='L68'></a>} <a id='L69' name='L69'></a> <a id='L70' name='L70'></a>.contents { <a id='L71' name='L71'></a> background-color: #DDF; <a id='L72' name='L72'></a> border: 4px double #000; <a id='L73' name='L73'></a> padding: 0.5em 1em 0.5em 1em; <a id='L74' name='L74'></a>} <a id='L75' name='L75'></a> <a id='L76' name='L76'></a>.contents h2 { <a id='L77' name='L77'></a> margin-left: 0; <a id='L78' name='L78'></a> color: black; <a id='L79' name='L79'></a> background-color: #DDF; <a id='L80' name='L80'></a>} <a id='L81' name='L81'></a> <a id='L82' name='L82'></a>.contents li { <a id='L83' name='L83'></a> list-style-type: none; <a id='L84' name='L84'></a>} <a id='L85' name='L85'></a> <a id='L86' name='L86'></a>.shortcontents { <a id='L87' name='L87'></a> background-color: #DDF; <a id='L88' name='L88'></a> border: 4px double #000; <a id='L89' name='L89'></a> } <a id='L90' name='L90'></a> <a id='L91' name='L91'></a>.shortcontents h2{ <a id='L92' name='L92'></a> display: none; <a id='L93' name='L93'></a>} <a id='L94' name='L94'></a> <a id='L95' name='L95'></a>h1.node-heading { <a id='L96' name='L96'></a> display: none; <a id='L97' name='L97'></a>} <a id='L98' name='L98'></a> <a id='L99' name='L99'></a>h2.contents-heading{ <a id='L100' name='L100'></a> display: none; <a id='L101' name='L101'></a>} <a id='L102' name='L102'></a> <a id='L103' name='L103'></a>h2.shortcontents-heading{ <a id='L104' name='L104'></a> display: none; <a id='L105' name='L105'></a>} <a id='L106' name='L106'></a> <a id='L107' name='L107'></a>.shortcontents a { <a id='L108' name='L108'></a> margin-right: 1em; <a id='L109' name='L109'></a>} <a id='L110' name='L110'></a> <a id='L111' name='L111'></a>h3, h4, h5 { <a id='L112' name='L112'></a> margin-left: -1em; <a id='L113' name='L113'></a>} <a id='L114' name='L114'></a> <a id='L115' name='L115'></a>h5 { <a id='L116' name='L116'></a> font-size: 100%; <a id='L117' name='L117'></a>} <a id='L118' name='L118'></a> <a id='L119' name='L119'></a>p { <a id='L120' name='L120'></a> line-height: 1.25em; <a id='L121' name='L121'></a> margin-top: 0; <a id='L122' name='L122'></a> margin-bottom: 0.5em; <a id='L123' name='L123'></a>} <a id='L124' name='L124'></a> <a id='L125' name='L125'></a>a:hover { <a id='L126' name='L126'></a> color: red; <a id='L127' name='L127'></a> text-decoration: underline; <a id='L128' name='L128'></a>} <a id='L129' name='L129'></a> <a id='L130' name='L130'></a>pre.example, pre.verbatim { <a id='L131' name='L131'></a> padding: 0.5em 1em 0.5em 1em; <a id='L132' name='L132'></a> border: 1px solid #CCC; <a id='L133' name='L133'></a>} <a id='L134' name='L134'></a> <a id='L135' name='L135'></a>a { <a id='L136' name='L136'></a> text-decoration: none; <a id='L137' name='L137'></a>} <a id='L138' name='L138'></a> <a id='L139' name='L139'></a>blockquote { <a id='L140' name='L140'></a> line-height: 1.25em; <a id='L141' name='L141'></a> border: 1px solid #00F; <a id='L142' name='L142'></a>} <a id='L143' name='L143'></a> <a id='L144' name='L144'></a>kbd, code, .file, var { <a id='L145' name='L145'></a> font-style: normal; <a id='L146' name='L146'></a> font-weight: normal; <a id='L147' name='L147'></a> font-family: monospace; <a id='L148' name='L148'></a> font-size: 120%; <a id='L149' name='L149'></a> margin-left:0.25em; <a id='L150' name='L150'></a> margin-right: 0.25em; <a id='L151' name='L151'></a>} <a id='L152' name='L152'></a> <a id='L153' name='L153'></a>table, th, td { <a id='L154' name='L154'></a> border: 1px solid black; <a id='L155' name='L155'></a> border-collapse: collapse; /* æ ç·ã®è¡¨ç¤ºæ¹æ³ */ <a id='L156' name='L156'></a> margin-bottom: 1em; <a id='L157' name='L157'></a>} <a id='L158' name='L158'></a> <a id='L159' name='L159'></a>table.cartouche, table.cartouche th, table.cartouche td { <a id='L160' name='L160'></a> border: none; <a id='L161' name='L161'></a>} <a id='L162' name='L162'></a> <a id='L163' name='L163'></a>pre.example .command, pre.example .option, pre.example kbd { <a id='L164' name='L164'></a> font-weight: bold; <a id='L165' name='L165'></a> font-family: monospace; <a id='L166' name='L166'></a> font-size: 110%; <a id='L167' name='L167'></a> background-color: inherit; <a id='L168' name='L168'></a> font-style: normal; <a id='L169' name='L169'></a> margin-left:0; <a id='L170' name='L170'></a> margin-right: 0; <a id='L171' name='L171'></a>} <a id='L172' name='L172'></a> <a id='L173' name='L173'></a>pre.example strong { <a id='L174' name='L174'></a> font: inherit; <a id='L175' name='L175'></a> border: 2px solid green; <a id='L176' name='L176'></a>} <a id='L177' name='L177'></a> <a id='L178' name='L178'></a>pre.example em { <a id='L179' name='L179'></a> font-size: 100%; <a id='L180' name='L180'></a> font-style: normal; <a id='L181' name='L181'></a> font-weight: bold; <a id='L182' name='L182'></a>} <a id='L183' name='L183'></a> <a id='L184' name='L184'></a>th { <a id='L185' name='L185'></a> font-style: normal; <a id='L186' name='L186'></a> font-weight: bold; <a id='L187' name='L187'></a> font-family: sans-serif; <a id='L188' name='L188'></a>} <a id='L189' name='L189'></a> <a id='L190' name='L190'></a>th { <a id='L191' name='L191'></a> text-align: center; <a id='L192' name='L192'></a>} <a id='L193' name='L193'></a> <a id='L194' name='L194'></a>dfn { <a id='L195' name='L195'></a> font-style: normal; <a id='L196' name='L196'></a>} <a id='L197' name='L197'></a> <a id='L198' name='L198'></a>.header, .menu { <a id='L199' name='L199'></a> display: none; <a id='L200' name='L200'></a>} <a id='L201' name='L201'></a> <a id='L202' name='L202'></a>--> <a id='L203' name='L203'></a></style> <a id='L204' name='L204'></a> <a id='L205' name='L205'></a> <a id='L206' name='L206'></a></head> <a id='L207' name='L207'></a> <a id='L208' name='L208'></a><body lang="ja_JP"> <a id='L209' name='L209'></a><h1 class="settitle" align="center">YACASL2 - CASL II 処理システム</h1> <a id='L210' name='L210'></a> <a id='L211' name='L211'></a> <a id='L212' name='L212'></a> <a id='L213' name='L213'></a> <a id='L214' name='L214'></a><span id="Top"></span><div class="header"> <a id='L215' name='L215'></a><p> <a id='L216' name='L216'></a>Next: <a href="#Overview" accesskey="n" rel="next">Overview</a>, Previous: <a href="dir.html#Top" accesskey="p" rel="prev">(dir)</a>, Up: <a href="dir.html#Top" accesskey="u" rel="up">(dir)</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L217' name='L217'></a></div> <a id='L218' name='L218'></a><h1 class="node-heading">Top</h1> <a id='L219' name='L219'></a> <a id='L220' name='L220'></a><table class="menu" border="0" cellspacing="0"> <a id='L221' name='L221'></a><tr><td align="left" valign="top">&bull; <a href="#Overview" accesskey="1">Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">YACASL2の概要 <a id='L222' name='L222'></a></td></tr> <a id='L223' name='L223'></a><tr><td align="left" valign="top">&bull; <a href="#Sample-usage" accesskey="2">Sample usage</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">YACASL2の使用例 <a id='L224' name='L224'></a></td></tr> <a id='L225' name='L225'></a><tr><td align="left" valign="top">&bull; <a href="#casl2-invocation" accesskey="3">casl2 invocation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">casl2の呼び出し <a id='L226' name='L226'></a></td></tr> <a id='L227' name='L227'></a><tr><td align="left" valign="top">&bull; <a href="#comet2-invocation" accesskey="4">comet2 invocation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">comet2の呼び出し <a id='L228' name='L228'></a></td></tr> <a id='L229' name='L229'></a><tr><td align="left" valign="top">&bull; <a href="#dumpword-invocation" accesskey="5">dumpword invocation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">dumpwordの呼び出し <a id='L230' name='L230'></a></td></tr> <a id='L231' name='L231'></a><tr><th colspan="3" align="left" valign="top"><pre class="menu-comment"> <a id='L232' name='L232'></a> <a id='L233' name='L233'></a></pre></th></tr><tr><th colspan="3" align="left" valign="top"><pre class="menu-comment"> &mdash; The Detailed Node Listing &mdash; <a id='L234' name='L234'></a> <a id='L235' name='L235'></a>YACASL2の使用例 <a id='L236' name='L236'></a> <a id='L237' name='L237'></a></pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Simple-output" accesskey="6">Simple output</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">実行結果の出力だけを表示 <a id='L238' name='L238'></a></td></tr> <a id='L239' name='L239'></a><tr><td align="left" valign="top">&bull; <a href="#Assemble-result" accesskey="7">Assemble result</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">アセンブル結果の確認 <a id='L240' name='L240'></a></td></tr> <a id='L241' name='L241'></a><tr><td align="left" valign="top">&bull; <a href="#Register-and-memory" accesskey="8">Register and memory</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">実行時のレジスタとメモリを表示 <a id='L242' name='L242'></a></td></tr> <a id='L243' name='L243'></a><tr><td align="left" valign="top">&bull; <a href="#Only-assemble" accesskey="9">Only assemble</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">アセンブルと実行を別に行う <a id='L244' name='L244'></a></td></tr> <a id='L245' name='L245'></a><tr><td align="left" valign="top">&bull; <a href="#Analyze-word">Analyze word</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">1語の解析 <a id='L246' name='L246'></a></td></tr> <a id='L247' name='L247'></a><tr><td align="left" valign="top">&bull; <a href="#Use-CASL2LIB">Use CASL2LIB</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">CASL2ライブラリの使用 <a id='L248' name='L248'></a></td></tr> <a id='L249' name='L249'></a><tr><th colspan="3" align="left" valign="top"><pre class="menu-comment"> <a id='L250' name='L250'></a> <a id='L251' name='L251'></a>実行時のレジスタとメモリを表示 <a id='L252' name='L252'></a> <a id='L253' name='L253'></a></pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Register-specify">Register specify</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">特定のレジスタを表示 <a id='L254' name='L254'></a></td></tr> <a id='L255' name='L255'></a><tr><td align="left" valign="top">&bull; <a href="#End-value">End value</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> <a id='L256' name='L256'></a></td></tr> <a id='L257' name='L257'></a><tr><td align="left" valign="top">&bull; <a href="#Step-count">Step count</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">プログラムのステップ数を表示 <a id='L258' name='L258'></a></td></tr> <a id='L259' name='L259'></a><tr><th colspan="3" align="left" valign="top"><pre class="menu-comment"> <a id='L260' name='L260'></a> <a id='L261' name='L261'></a></pre></th></tr></table> <a id='L262' name='L262'></a> <a id='L263' name='L263'></a><span id="SEC_Contents"></span> <a id='L264' name='L264'></a><h2 class="contents-heading">Table of Contents</h2> <a id='L265' name='L265'></a> <a id='L266' name='L266'></a><div class="contents"> <a id='L267' name='L267'></a><ul class="no-bullet"> <a id='L268' name='L268'></a><li><a id="toc-YACASL2noGai-Yao-" href="#Overview">1 YACASL2の概要</a></li> <a id='L269' name='L269'></a><li><a id="toc-YACASL2noShi-Yong-Li" href="#Sample-usage">2 YACASL2の使用例</a> <a id='L270' name='L270'></a><ul class="no-bullet"> <a id='L271' name='L271'></a> <li><a id="toc-Shi-Xing-Jie-Guo-noChu-Li-dakewoBiao-Shi" href="#Simple-output">2.1 実行結果の出力だけを表示</a></li> <a id='L272' name='L272'></a> <li><a id="toc-asenburuJie-Guo-noQue-Ren-" href="#Assemble-result">2.2 アセンブル結果の確認</a></li> <a id='L273' name='L273'></a> <li><a id="toc-Shi-Xing-Shi-norezisutatomemoriwoBiao-Shi" href="#Register-and-memory">2.3 実行時のレジスタとメモリを表示</a> <a id='L274' name='L274'></a> <ul class="no-bullet"> <a id='L275' name='L275'></a> <li><a id="toc-Te-Ding-norezisutawoBiao-Shi" href="#Register-specify">2.3.1 特定のレジスタを表示</a></li> <a id='L276' name='L276'></a> <li><a id="toc-puroguramuZhong-Liao-Shi-noZhi-woBiao-Shi" href="#End-value">2.3.2 プログラム終了時の値を表示</a></li> <a id='L277' name='L277'></a> <li><a id="toc-puroguramunosutetupuShu-woBiao-Shi" href="#Step-count">2.3.3 プログラムのステップ数を表示</a></li> <a id='L278' name='L278'></a> </ul></li> <a id='L279' name='L279'></a> <li><a id="toc-asenburutoShi-Xing-woBie-niXing-u" href="#Only-assemble">2.4 アセンブルと実行を別に行う</a></li> <a id='L280' name='L280'></a> <li><a id="toc-1Yu-noJie-Xi-" href="#Analyze-word">2.5 1語の解析</a></li> <a id='L281' name='L281'></a> <li><a id="toc-CASL2raiburarinoShi-Yong-" href="#Use-CASL2LIB">2.6 CASL2ライブラリの使用</a> <a id='L282' name='L282'></a> <ul class="no-bullet"> <a id='L283' name='L283'></a> <li><a id="toc-Shu-Zhi-woChu-Li-suru" href="#Shu-Zhi-woChu-Li-suru">2.6.1 数値を出力する</a></li> <a id='L284' name='L284'></a> </ul></li> <a id='L285' name='L285'></a></ul></li> <a id='L286' name='L286'></a><li><a id="toc-casl2noHu-biChu-si" href="#casl2-invocation">3 <code>casl2</code>の呼び出し</a> <a id='L287' name='L287'></a><ul class="no-bullet"> <a id='L288' name='L288'></a> <li><a id="toc-opusiyon" href="#opusiyon">オプション</a></li> <a id='L289' name='L289'></a></ul></li> <a id='L290' name='L290'></a><li><a id="toc-comet2noHu-biChu-si" href="#comet2-invocation">4 <code>comet2</code>の呼び出し</a> <a id='L291' name='L291'></a><ul class="no-bullet"> <a id='L292' name='L292'></a> <li><a id="toc-opusiyon-1" href="#opusiyon-1">オプション</a></li> <a id='L293' name='L293'></a></ul></li> <a id='L294' name='L294'></a><li><a id="toc-dumpwordnoHu-biChu-si" href="#dumpword-invocation">5 <code>dumpword</code>の呼び出し</a> <a id='L295' name='L295'></a><ul class="no-bullet"> <a id='L296' name='L296'></a> <li><a id="toc-Zhu-Yi-" href="#Zhu-Yi-">注意</a></li> <a id='L297' name='L297'></a> <li><a id="toc-opusiyon-2" href="#opusiyon-2">オプション</a></li> <a id='L298' name='L298'></a></ul></li> <a id='L299' name='L299'></a> <a id='L300' name='L300'></a></ul> <a id='L301' name='L301'></a></div> <a id='L302' name='L302'></a> <a id='L303' name='L303'></a> <a id='L304' name='L304'></a><hr> <a id='L305' name='L305'></a><span id="Overview"></span><div class="header"> <a id='L306' name='L306'></a><p> <a id='L307' name='L307'></a>Next: <a href="#Sample-usage" accesskey="n" rel="next">Sample usage</a>, Previous: <a href="#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L308' name='L308'></a></div> <a id='L309' name='L309'></a><span id="YACASL2noGai-Yao-"></span><h2 class="chapter">1 YACASL2の概要</h2> <a id='L310' name='L310'></a> <a id='L311' name='L311'></a><p>YACASL2は、UNIXやLinuxのコマンドラインインターフェイスで <a id='L312' name='L312'></a>動作するオープンソースのCASL II処理システムです。 <a id='L313' name='L313'></a>CASL IIは情報処理試験で用いられるアセンブラ言語で、 <a id='L314' name='L314'></a>次の資料により仕様が公開されています。 <a id='L315' name='L315'></a></p> <a id='L316' name='L316'></a><blockquote> <a id='L317' name='L317'></a><p><a href="https://www.jitec.ipa.go.jp/1_13download/shiken_yougo_ver4_2.pdf">情報処理技術者試験 情報処理安全確保支援士試験 試験で使用する情報技術に関する用語・プログラム言語など Ver 4.2</a>[PDFファイル] <a id='L318' name='L318'></a></p> <a id='L319' name='L319'></a><p>別紙 1 アセンブラ言語の仕様 <a id='L320' name='L320'></a></p></blockquote> <a id='L321' name='L321'></a> <a id='L322' name='L322'></a><p>YACASL2は、CASL IIアセンブラ言語で記述されたファイルをアセンブルし、 <a id='L323' name='L323'></a>仮想マシンCOMET II上で実行します。 <a id='L324' name='L324'></a>アセンブルと実行は、連続で行うこともできますし、 <a id='L325' name='L325'></a>アセンブル結果をファイルに保存してあとから実行することもできます。 <a id='L326' name='L326'></a>YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試験の問題を <a id='L327' name='L327'></a>はじめ各種参考書やサイトに記載されたCASL IIのプログラムを <a id='L328' name='L328'></a>そのままアセンブルして実行できます。 <a id='L329' name='L329'></a>また、本パッケージ中にCASL IIのサンプルプログラムが多数収録されています。 <a id='L330' name='L330'></a></p> <a id='L331' name='L331'></a><p>YACASL2は、「ふつうの処理系」として動作します。 <a id='L332' name='L332'></a>YACASL2の操作は、端末上のコマンドラインインターフェイス(CLI)で操作します。 <a id='L333' name='L333'></a>YACASL2は、次のような動作内容をすべてテキストで出力します。 <a id='L334' name='L334'></a></p> <a id='L335' name='L335'></a><ul> <a id='L336' name='L336'></a><li> ラベルとアドレスの対応 <a id='L337' name='L337'></a> <a id='L338' name='L338'></a></li><li> アセンブル結果 <a id='L339' name='L339'></a> <a id='L340' name='L340'></a></li><li> 実行時のレジスタの内容 <a id='L341' name='L341'></a> <a id='L342' name='L342'></a></li><li> 実行時のメモリの内容 <a id='L343' name='L343'></a></li></ul> <a id='L344' name='L344'></a> <a id='L345' name='L345'></a><p>YACASL2では、機械コードモニターを使い、動作中のCPUやメモリーを調べたりデバッグしたりすることもできます。 <a id='L346' name='L346'></a></p> <a id='L347' name='L347'></a><p>また、出力された動作内容は、GNU/Linuxのさまざまなコマンド、 <a id='L348' name='L348'></a>たとえば、<code>cat</code>、<code>less</code>、<code>grep</code>、<code>wc</code>などを使って解析できます。 <a id='L349' name='L349'></a></p> <a id='L350' name='L350'></a> <a id='L351' name='L351'></a> <a id='L352' name='L352'></a><hr> <a id='L353' name='L353'></a><span id="Sample-usage"></span><div class="header"> <a id='L354' name='L354'></a><p> <a id='L355' name='L355'></a>Next: <a href="#casl2-invocation" accesskey="n" rel="next">casl2 invocation</a>, Previous: <a href="#Overview" accesskey="p" rel="prev">Overview</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L356' name='L356'></a></div> <a id='L357' name='L357'></a><span id="YACASL2noShi-Yong-Li"></span><h2 class="chapter">2 YACASL2の使用例</h2> <a id='L358' name='L358'></a><p>YACASL2 は、テキストファイルに記述されたCASLプログラムを処理します。 <a id='L359' name='L359'></a>以下の例で用いられるCASLプログラムのファイルは、 <a id='L360' name='L360'></a>テキストエディタなどで作成するか、インストールしたディレクトリの <a id='L361' name='L361'></a>中にある<samp>as</samp>ディレクトリからコピーしてください。 <a id='L362' name='L362'></a></p> <a id='L363' name='L363'></a><table class="menu" border="0" cellspacing="0"> <a id='L364' name='L364'></a><tr><td align="left" valign="top">&bull; <a href="#Simple-output" accesskey="1">Simple output</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">実行結果の出力だけを表示 <a id='L365' name='L365'></a></td></tr> <a id='L366' name='L366'></a><tr><td align="left" valign="top">&bull; <a href="#Assemble-result" accesskey="2">Assemble result</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">アセンブル結果の確認 <a id='L367' name='L367'></a></td></tr> <a id='L368' name='L368'></a><tr><td align="left" valign="top">&bull; <a href="#Register-and-memory" accesskey="3">Register and memory</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">実行時のレジスタとメモリを表示 <a id='L369' name='L369'></a></td></tr> <a id='L370' name='L370'></a><tr><td align="left" valign="top">&bull; <a href="#Only-assemble" accesskey="4">Only assemble</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">アセンブルと実行を別に行う <a id='L371' name='L371'></a></td></tr> <a id='L372' name='L372'></a><tr><td align="left" valign="top">&bull; <a href="#Analyze-word" accesskey="5">Analyze word</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">1語の解析 <a id='L373' name='L373'></a></td></tr> <a id='L374' name='L374'></a><tr><td align="left" valign="top">&bull; <a href="#Use-CASL2LIB" accesskey="6">Use CASL2LIB</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">CASL2ライブラリの使用 <a id='L375' name='L375'></a></td></tr> <a id='L376' name='L376'></a></table> <a id='L377' name='L377'></a> <a id='L378' name='L378'></a><hr> <a id='L379' name='L379'></a><span id="Simple-output"></span><div class="header"> <a id='L380' name='L380'></a><p> <a id='L381' name='L381'></a>Next: <a href="#Assemble-result" accesskey="n" rel="next">Assemble result</a>, Previous: <a href="#Sample-usage" accesskey="p" rel="prev">Sample usage</a>, Up: <a href="#Sample-usage" accesskey="u" rel="up">Sample usage</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L382' name='L382'></a></div> <a id='L383' name='L383'></a><span id="Shi-Xing-Jie-Guo-noChu-Li-dakewoBiao-Shi"></span><h3 class="section">2.1 実行結果の出力だけを表示</h3> <a id='L384' name='L384'></a> <a id='L385' name='L385'></a><p>インストール時にコマンド実行の確認に使った<samp>hello.casl</samp>は、次のような内容です。 <a id='L386' name='L386'></a>CASL IIのマクロ命令OUTは、文字列を出力します。 <a id='L387' name='L387'></a></p> <a id='L388' name='L388'></a><div class="example"> <a id='L389' name='L389'></a><pre class="example">$ <kbd>cat hello.casl</kbd> <a id='L390' name='L390'></a>MAIN START <a id='L391' name='L391'></a> OUT OBUF,LEN <a id='L392' name='L392'></a> RET <a id='L393' name='L393'></a>OBUF DC 'Hello, World!' <a id='L394' name='L394'></a>LEN DC 13 <a id='L395' name='L395'></a> END <a id='L396' name='L396'></a></pre></div> <a id='L397' name='L397'></a> <a id='L398' name='L398'></a><p>次のコマンドを実行すると、CASL II のアセンブルと仮想マシン COMET II 上での実行が連続で行われ、文字列が出力されます。 <a id='L399' name='L399'></a></p> <a id='L400' name='L400'></a><div class="example"> <a id='L401' name='L401'></a><pre class="example">$ <kbd>casl2 hello.casl</kbd> <a id='L402' name='L402'></a>Hello, World! <a id='L403' name='L403'></a></pre></div> <a id='L404' name='L404'></a> <a id='L405' name='L405'></a><p><samp>addl.casl</samp>は、3と1の和を求めます。 <a id='L406' name='L406'></a></p> <a id='L407' name='L407'></a><div class="example"> <a id='L408' name='L408'></a><pre class="example">$ <kbd>cat addl.casl</kbd> <a id='L409' name='L409'></a>;;; ADDL r,adr <a id='L410' name='L410'></a>MAIN START <a id='L411' name='L411'></a> LD GR1,A <a id='L412' name='L412'></a> ADDL GR1,B <a id='L413' name='L413'></a> RET <a id='L414' name='L414'></a>A DC 3 <a id='L415' name='L415'></a>B DC 1 <a id='L416' name='L416'></a> END <a id='L417' name='L417'></a></pre></div> <a id='L418' name='L418'></a> <a id='L419' name='L419'></a><p>このプログラムには出力命令がないため、オプションなしで実行した場合には結果が出力されません。 <a id='L420' name='L420'></a></p> <a id='L421' name='L421'></a><div class="example"> <a id='L422' name='L422'></a><pre class="example">$ <kbd>casl2 addl.casl</kbd> <a id='L423' name='L423'></a>$ <a id='L424' name='L424'></a></pre></div> <a id='L425' name='L425'></a> <a id='L426' name='L426'></a><p>実行内容を確認するには、後述のようにCPU 内にあるレジスタやメモリの内容を表示するか、結果を出力するための処理を追加する必要があります。 <a id='L427' name='L427'></a></p> <a id='L428' name='L428'></a><hr> <a id='L429' name='L429'></a><span id="Assemble-result"></span><div class="header"> <a id='L430' name='L430'></a><p> <a id='L431' name='L431'></a>Next: <a href="#Register-and-memory" accesskey="n" rel="next">Register and memory</a>, Previous: <a href="#Simple-output" accesskey="p" rel="prev">Simple output</a>, Up: <a href="#Sample-usage" accesskey="u" rel="up">Sample usage</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L432' name='L432'></a></div> <a id='L433' name='L433'></a><span id="asenburuJie-Guo-noQue-Ren-"></span><h3 class="section">2.2 アセンブル結果の確認</h3> <a id='L434' name='L434'></a> <a id='L435' name='L435'></a><p>casl2の処理途中で行われるアセンブルの結果を表示するには、オプション<samp>-a</samp>を指定します。 <a id='L436' name='L436'></a>また、ラベルとアドレスの対応表を表示するには、オプション<samp>-l</samp>を指定します。 <a id='L437' name='L437'></a></p> <a id='L438' name='L438'></a><p>次のコマンドでは<samp>hello.casl</samp>の、ラベルとアドレスの対応表と、アセンブル結果と、実行結果が表示されます。 <a id='L439' name='L439'></a>OUTはアセンブラ命令で複数の機械語命令で構成されているため、命令行1行に対して、複数行のコードが生成されます。 <a id='L440' name='L440'></a></p> <a id='L441' name='L441'></a><div class="example"> <a id='L442' name='L442'></a><pre class="example">$ <kbd>casl2 -a -l hello.casl</kbd> <a id='L443' name='L443'></a> <a id='L444' name='L444'></a>Assemble hello.casl (0) <a id='L445' name='L445'></a> <a id='L446' name='L446'></a>Label:::: <a id='L447' name='L447'></a>MAIN.LEN ---&gt; #0020 <a id='L448' name='L448'></a>MAIN ---&gt; #0000 <a id='L449' name='L449'></a>MAIN.OBUF ---&gt; #0013 <a id='L450' name='L450'></a> <a id='L451' name='L451'></a>Assemble hello.casl (1) <a id='L452' name='L452'></a>hello.casl: 1:MAIN START <a id='L453' name='L453'></a>hello.casl: 2: OUT OBUF,LEN <a id='L454' name='L454'></a> #0000 #7001 <a id='L455' name='L455'></a> #0001 #0000 <a id='L456' name='L456'></a> #0002 #7002 <a id='L457' name='L457'></a> #0003 #0000 <a id='L458' name='L458'></a> #0004 #1210 <a id='L459' name='L459'></a> #0005 #0013 <a id='L460' name='L460'></a> #0006 #1220 <a id='L461' name='L461'></a> #0007 #0020 <a id='L462' name='L462'></a> #0008 #F000 <a id='L463' name='L463'></a> #0009 #0002 <a id='L464' name='L464'></a> #000A #1210 <a id='L465' name='L465'></a> #000B #0021 <a id='L466' name='L466'></a> #0021 #000A <a id='L467' name='L467'></a> #000C #1220 <a id='L468' name='L468'></a> #000D #0022 <a id='L469' name='L469'></a> #0022 #0001 <a id='L470' name='L470'></a> #000E #F000 <a id='L471' name='L471'></a> #000F #0002 <a id='L472' name='L472'></a> #0010 #7120 <a id='L473' name='L473'></a> #0011 #7110 <a id='L474' name='L474'></a>hello.casl: 3: RET <a id='L475' name='L475'></a> #0012 #8100 <a id='L476' name='L476'></a>hello.casl: 4:OBUF DC 'Hello, World!' <a id='L477' name='L477'></a> #0013 #0048 <a id='L478' name='L478'></a> #0014 #0065 <a id='L479' name='L479'></a> #0015 #006C <a id='L480' name='L480'></a> #0016 #006C <a id='L481' name='L481'></a> #0017 #006F <a id='L482' name='L482'></a> #0018 #002C <a id='L483' name='L483'></a> #0019 #0020 <a id='L484' name='L484'></a> #001A #0057 <a id='L485' name='L485'></a> #001B #006F <a id='L486' name='L486'></a> #001C #0072 <a id='L487' name='L487'></a> #001D #006C <a id='L488' name='L488'></a> #001E #0064 <a id='L489' name='L489'></a> #001F #0021 <a id='L490' name='L490'></a>hello.casl: 5:LEN DC 13 <a id='L491' name='L491'></a> #0020 #000D <a id='L492' name='L492'></a>hello.casl: 6: END <a id='L493' name='L493'></a>Hello, World! <a id='L494' name='L494'></a></pre></div> <a id='L495' name='L495'></a> <a id='L496' name='L496'></a><p><samp>addl.casl</samp>の、ラベルとアドレスの対応表と、アセンブル結果は、次のようになります。 <a id='L497' name='L497'></a></p> <a id='L498' name='L498'></a><div class="example"> <a id='L499' name='L499'></a><pre class="example">$ <kbd>casl2 -a -l addl.casl</kbd> <a id='L500' name='L500'></a> <a id='L501' name='L501'></a>Assemble addl.casl (0) <a id='L502' name='L502'></a> <a id='L503' name='L503'></a>Label:::: <a id='L504' name='L504'></a>MAIN ---&gt; #0000 <a id='L505' name='L505'></a>MAIN.A ---&gt; #0007 <a id='L506' name='L506'></a>MAIN.B ---&gt; #0008 <a id='L507' name='L507'></a>MAIN.C ---&gt; #0009 <a id='L508' name='L508'></a> <a id='L509' name='L509'></a>Assemble addl.casl (1) <a id='L510' name='L510'></a>addl.casl: 1:;;; ADDL r,adr <a id='L511' name='L511'></a>addl.casl: 2:MAIN START <a id='L512' name='L512'></a>addl.casl: 3: LD GR1,A <a id='L513' name='L513'></a> #0000 #1010 <a id='L514' name='L514'></a> #0001 #0007 <a id='L515' name='L515'></a>addl.casl: 4: ADDL GR1,B <a id='L516' name='L516'></a> #0002 #2210 <a id='L517' name='L517'></a> #0003 #0008 <a id='L518' name='L518'></a>addl.casl: 5: ST GR1,C <a id='L519' name='L519'></a> #0004 #1110 <a id='L520' name='L520'></a> #0005 #0009 <a id='L521' name='L521'></a>addl.casl: 6: RET <a id='L522' name='L522'></a> #0006 #8100 <a id='L523' name='L523'></a>addl.casl: 7:A DC 3 <a id='L524' name='L524'></a> #0007 #0003 <a id='L525' name='L525'></a>addl.casl: 8:B DC 2 <a id='L526' name='L526'></a> #0008 #0002 <a id='L527' name='L527'></a>addl.casl: 9:C DS 1 <a id='L528' name='L528'></a> #0009 #0000 <a id='L529' name='L529'></a>addl.casl: 10: END <a id='L530' name='L530'></a></pre></div> <a id='L531' name='L531'></a> <a id='L532' name='L532'></a><p>なお、オプション<samp>-A</samp>を指定すると、アセンブル結果が表示される時点で処理が終了します。 <a id='L533' name='L533'></a>仮想マシンCOMET IIでのプログラム実行はされません。 <a id='L534' name='L534'></a></p> <a id='L535' name='L535'></a><hr> <a id='L536' name='L536'></a><span id="Register-and-memory"></span><div class="header"> <a id='L537' name='L537'></a><p> <a id='L538' name='L538'></a>Next: <a href="#Only-assemble" accesskey="n" rel="next">Only assemble</a>, Previous: <a href="#Assemble-result" accesskey="p" rel="prev">Assemble result</a>, Up: <a href="#Sample-usage" accesskey="u" rel="up">Sample usage</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L539' name='L539'></a></div> <a id='L540' name='L540'></a><span id="Shi-Xing-Shi-norezisutatomemoriwoBiao-Shi"></span><h3 class="section">2.3 実行時のレジスタとメモリを表示</h3> <a id='L541' name='L541'></a> <a id='L542' name='L542'></a><p>YACASL2では実行中のCPUのレジスタとメモリの内容をそれぞれ、<samp>-t</samp>と<samp>-d</samp>を指定することで表示できます。 <a id='L543' name='L543'></a></p> <a id='L544' name='L544'></a><p>また、<samp>-M</samp>で、仮想マシンCOMET II のメモリ容量を語(16 ビット)単位で指定できます。 <a id='L545' name='L545'></a>小さいプログラムを実行するときは、メモリ容量を小さくすれば結果が見やすくなります。 <a id='L546' name='L546'></a></p> <a id='L547' name='L547'></a><table class="menu" border="0" cellspacing="0"> <a id='L548' name='L548'></a><tr><td align="left" valign="top">&bull; <a href="#Register-specify" accesskey="1">Register specify</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">特定のレジスタを表示 <a id='L549' name='L549'></a></td></tr> <a id='L550' name='L550'></a><tr><td align="left" valign="top">&bull; <a href="#End-value" accesskey="2">End value</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> <a id='L551' name='L551'></a></td></tr> <a id='L552' name='L552'></a><tr><td align="left" valign="top">&bull; <a href="#Step-count" accesskey="3">Step count</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">プログラムのステップ数を表示 <a id='L553' name='L553'></a></td></tr> <a id='L554' name='L554'></a></table> <a id='L555' name='L555'></a> <a id='L556' name='L556'></a><p><samp>addl.casl</samp>では、次のようにCPUのレジスタとメモリの内容を表示できます。 <a id='L557' name='L557'></a></p> <a id='L558' name='L558'></a><div class="example"> <a id='L559' name='L559'></a><pre class="example">$ <kbd>casl2 -t -d -M16 addl.casl | less</kbd> <a id='L560' name='L560'></a> <a id='L561' name='L561'></a>Assemble addl.casl (0) <a id='L562' name='L562'></a> <a id='L563' name='L563'></a>Assemble addl.casl (1) <a id='L564' name='L564'></a> <a id='L565' name='L565'></a>Executing machine codes <a id='L566' name='L566'></a>#0000: Register:::: <a id='L567' name='L567'></a>#0000: GR0: 0 = #0000 = 0000000000000000 <a id='L568' name='L568'></a>#0000: GR1: 0 = #0000 = 0000000000000000 <a id='L569' name='L569'></a>#0000: GR2: 0 = #0000 = 0000000000000000 <a id='L570' name='L570'></a>#0000: GR3: 0 = #0000 = 0000000000000000 <a id='L571' name='L571'></a>#0000: GR4: 0 = #0000 = 0000000000000000 <a id='L572' name='L572'></a>#0000: GR5: 0 = #0000 = 0000000000000000 <a id='L573' name='L573'></a>#0000: GR6: 0 = #0000 = 0000000000000000 <a id='L574' name='L574'></a>#0000: GR7: 0 = #0000 = 0000000000000000 <a id='L575' name='L575'></a>#0000: SP: 16 = #0010 = 0000000000010000 <a id='L576' name='L576'></a>#0000: PR: 0 = #0000 = 0000000000000000 <a id='L577' name='L577'></a>#0000: FR (OF SF ZF): 000 <a id='L578' name='L578'></a>#0000: Memory:::: <a id='L579' name='L579'></a>#0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F <a id='L580' name='L580'></a> ------------------------------------------------------------------------------------- <a id='L581' name='L581'></a>#0000: 0000: 1010 0007 2210 0008 1110 0009 8100 0003 0002 0000 0000 0000 0000 0000 0000 0000 <a id='L582' name='L582'></a> <a id='L583' name='L583'></a>#0002: Register:::: <a id='L584' name='L584'></a>#0002: GR0: 0 = #0000 = 0000000000000000 <a id='L585' name='L585'></a>#0002: GR1: 3 = #0003 = 0000000000000011 <a id='L586' name='L586'></a>#0002: GR2: 0 = #0000 = 0000000000000000 <a id='L587' name='L587'></a>#0002: GR3: 0 = #0000 = 0000000000000000 <a id='L588' name='L588'></a>#0002: GR4: 0 = #0000 = 0000000000000000 <a id='L589' name='L589'></a>#0002: GR5: 0 = #0000 = 0000000000000000 <a id='L590' name='L590'></a>#0002: GR6: 0 = #0000 = 0000000000000000 <a id='L591' name='L591'></a>#0002: GR7: 0 = #0000 = 0000000000000000 <a id='L592' name='L592'></a>#0002: SP: 16 = #0010 = 0000000000010000 <a id='L593' name='L593'></a>#0002: PR: 2 = #0002 = 0000000000000010 <a id='L594' name='L594'></a>#0002: FR (OF SF ZF): 000 <a id='L595' name='L595'></a>#0002: Memory:::: <a id='L596' name='L596'></a>#0002: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F <a id='L597' name='L597'></a> ------------------------------------------------------------------------------------- <a id='L598' name='L598'></a>#0002: 0000: 1010 0007 2210 0008 1110 0009 8100 0003 0002 0000 0000 0000 0000 0000 0000 0000 <a id='L599' name='L599'></a> <a id='L600' name='L600'></a>#0004: Register:::: <a id='L601' name='L601'></a>#0004: GR0: 0 = #0000 = 0000000000000000 <a id='L602' name='L602'></a>#0004: GR1: 5 = #0005 = 0000000000000101 <a id='L603' name='L603'></a>#0004: GR2: 0 = #0000 = 0000000000000000 <a id='L604' name='L604'></a>#0004: GR3: 0 = #0000 = 0000000000000000 <a id='L605' name='L605'></a>#0004: GR4: 0 = #0000 = 0000000000000000 <a id='L606' name='L606'></a>#0004: GR5: 0 = #0000 = 0000000000000000 <a id='L607' name='L607'></a>#0004: GR6: 0 = #0000 = 0000000000000000 <a id='L608' name='L608'></a>#0004: GR7: 0 = #0000 = 0000000000000000 <a id='L609' name='L609'></a>#0004: SP: 16 = #0010 = 0000000000010000 <a id='L610' name='L610'></a>#0004: PR: 4 = #0004 = 0000000000000100 <a id='L611' name='L611'></a>#0004: FR (OF SF ZF): 000 <a id='L612' name='L612'></a>#0004: Memory:::: <a id='L613' name='L613'></a>#0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F <a id='L614' name='L614'></a> ------------------------------------------------------------------------------------- <a id='L615' name='L615'></a>#0004: 0000: 1010 0007 2210 0008 1110 0009 8100 0003 0002 0000 0000 0000 0000 0000 0000 0000 <a id='L616' name='L616'></a> <a id='L617' name='L617'></a>#0006: Register:::: <a id='L618' name='L618'></a>#0006: GR0: 0 = #0000 = 0000000000000000 <a id='L619' name='L619'></a>#0006: GR1: 5 = #0005 = 0000000000000101 <a id='L620' name='L620'></a>#0006: GR2: 0 = #0000 = 0000000000000000 <a id='L621' name='L621'></a>#0006: GR3: 0 = #0000 = 0000000000000000 <a id='L622' name='L622'></a>#0006: GR4: 0 = #0000 = 0000000000000000 <a id='L623' name='L623'></a>#0006: GR5: 0 = #0000 = 0000000000000000 <a id='L624' name='L624'></a>#0006: GR6: 0 = #0000 = 0000000000000000 <a id='L625' name='L625'></a>#0006: GR7: 0 = #0000 = 0000000000000000 <a id='L626' name='L626'></a>#0006: SP: 16 = #0010 = 0000000000010000 <a id='L627' name='L627'></a>#0006: PR: 6 = #0006 = 0000000000000110 <a id='L628' name='L628'></a>#0006: FR (OF SF ZF): 000 <a id='L629' name='L629'></a>#0006: Memory:::: <a id='L630' name='L630'></a>#0006: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F <a id='L631' name='L631'></a> ------------------------------------------------------------------------------------- <a id='L632' name='L632'></a>#0006: 0000: 1010 0007 2210 0008 1110 0009 8100 0003 0002 0005 0000 0000 0000 0000 0000 0000 <a id='L633' name='L633'></a></pre></div> <a id='L634' name='L634'></a> <a id='L635' name='L635'></a><hr> <a id='L636' name='L636'></a><span id="Register-specify"></span><div class="header"> <a id='L637' name='L637'></a><p> <a id='L638' name='L638'></a>Next: <a href="#End-value" accesskey="n" rel="next">End value</a>, Previous: <a href="#Register-and-memory" accesskey="p" rel="prev">Register and memory</a>, Up: <a href="#Register-and-memory" accesskey="u" rel="up">Register and memory</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L639' name='L639'></a></div> <a id='L640' name='L640'></a><span id="Te-Ding-norezisutawoBiao-Shi"></span><h4 class="subsection">2.3.1 特定のレジスタを表示</h4> <a id='L641' name='L641'></a> <a id='L642' name='L642'></a><p><samp>addl.casl</samp>のレジスタやメモリの中で、実行中に値が変化しているのはGR1だけです。 <a id='L643' name='L643'></a>こうした場合は、<code>grep</code>を使って表示される内容を絞り込むことで動作を検証しやすくなります。 <a id='L644' name='L644'></a></p> <a id='L645' name='L645'></a><div class="example"> <a id='L646' name='L646'></a><pre class="example">$ <kbd>casl2 -t addl.casl | grep 'GR1:'</kbd> <a id='L647' name='L647'></a>#0000: GR1: 0 = #0000 = 0000000000000000 <a id='L648' name='L648'></a>#0002: GR1: 3 = #0003 = 0000000000000011 <a id='L649' name='L649'></a>#0004: GR1: 5 = #0005 = 0000000000000101 <a id='L650' name='L650'></a>#0006: GR1: 5 = #0005 = 0000000000000101 <a id='L651' name='L651'></a></pre></div> <a id='L652' name='L652'></a> <a id='L653' name='L653'></a><p>この内容を、先に出力したアセンブル結果と比較してください。 <a id='L654' name='L654'></a>次の表のように、PRとGR1、命令行が対応していることがわかります。 <a id='L655' name='L655'></a></p> <a id='L656' name='L656'></a><table> <a id='L657' name='L657'></a><tr><td width="30%">PR</td><td width="30%">GR1</td><td width="40%">命令行</td></tr> <a id='L658' name='L658'></a><tr><td width="30%">#0000</td><td width="30%">#0000</td><td width="40%">(なし)</td></tr> <a id='L659' name='L659'></a><tr><td width="30%">#0002</td><td width="30%">#0003</td><td width="40%"><code>LD GR1,A</code></td></tr> <a id='L660' name='L660'></a><tr><td width="30%">#0004</td><td width="30%">#0004</td><td width="40%"><code>ADDL GR1,B</code></td></tr> <a id='L661' name='L661'></a><tr><td width="30%">#0006</td><td width="30%">#0006</td><td width="40%"><code>ST GR1,C</code></td></tr> <a id='L662' name='L662'></a></table> <a id='L663' name='L663'></a> <a id='L664' name='L664'></a><hr> <a id='L665' name='L665'></a><span id="End-value"></span><div class="header"> <a id='L666' name='L666'></a><p> <a id='L667' name='L667'></a>Next: <a href="#Step-count" accesskey="n" rel="next">Step count</a>, Previous: <a href="#Register-specify" accesskey="p" rel="prev">Register specify</a>, Up: <a href="#Register-and-memory" accesskey="u" rel="up">Register and memory</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L668' name='L668'></a></div> <a id='L669' name='L669'></a><span id="puroguramuZhong-Liao-Shi-noZhi-woBiao-Shi"></span><h4 class="subsection">2.3.2 プログラム終了時の値を表示</h4> <a id='L670' name='L670'></a> <a id='L671' name='L671'></a><p><code>grep</code>と<code>tail</code>を組み合わせれば、プログラム終了時の値を表示できます。 <a id='L672' name='L672'></a></p> <a id='L673' name='L673'></a><p><samp>addl.casl</samp>でプログラム終了時のGR1の値を確認するには、次のようにします。 <a id='L674' name='L674'></a></p> <a id='L675' name='L675'></a><div class="example"> <a id='L676' name='L676'></a><pre class="example">$ <kbd>casl2 -t addl.casl | grep 'GR1:' | tail -1</kbd> <a id='L677' name='L677'></a>#0006: GR1: 5 = #0005 = 0000000000000101 <a id='L678' name='L678'></a></pre></div> <a id='L679' name='L679'></a> <a id='L680' name='L680'></a><p><samp>sum_10.casl</samp>は、1から10までの整数の和を求め、GR2に格納してからメモリにストア(書き込み)します。 <a id='L681' name='L681'></a></p> <a id='L682' name='L682'></a><div class="example"> <a id='L683' name='L683'></a><pre class="example">$ <kbd>cat sum_10.casl</kbd> <a id='L684' name='L684'></a>;;; sum_10.casl <a id='L685' name='L685'></a>;;; 1から10までの整数をすべて加算した値をメモリーに格納する <a id='L686' name='L686'></a>MAIN START <a id='L687' name='L687'></a> XOR GR2,GR2 ; GR2を初期化 <a id='L688' name='L688'></a> LD GR1,FST ; GR1に初項をメモリーから転送 <a id='L689' name='L689'></a>LOOP ADDL GR2,GR1 ; ループ先頭。GR2 &lt;- GR2 + GR1 <a id='L690' name='L690'></a> ADDL GR1,STEP ; GR1 &lt;- GR1 + 公差 <a id='L691' name='L691'></a> CPL GR1,LST ; GR1が末項より大きい場合は終了 <a id='L692' name='L692'></a> JPL FIN ; ↓ <a id='L693' name='L693'></a> JUMP LOOP ; ループ終端 <a id='L694' name='L694'></a>FIN ST GR2,RST ; GR2の結果をメモリーに転送 <a id='L695' name='L695'></a> RET <a id='L696' name='L696'></a>FST DC 1 ; 初項 <a id='L697' name='L697'></a>LST DC 10 ; 末項 <a id='L698' name='L698'></a>STEP DC 1 ; 公差 <a id='L699' name='L699'></a>RST DS 1 ; 結果 <a id='L700' name='L700'></a> END <a id='L701' name='L701'></a></pre></div> <a id='L702' name='L702'></a> <a id='L703' name='L703'></a><p><samp>sum_10.casl</samp>でプログラム終了時のGR2の値を確認するには、次のようにします。 <a id='L704' name='L704'></a></p> <a id='L705' name='L705'></a><div class="example"> <a id='L706' name='L706'></a><pre class="example">$ <kbd>casl2 -t sum_10.casl | grep 'GR2:' | tail -1</kbd> <a id='L707' name='L707'></a>#000E: GR2: 55 = #0037 = 0000000000110111 = '7' <a id='L708' name='L708'></a></pre></div> <a id='L709' name='L709'></a> <a id='L710' name='L710'></a><hr> <a id='L711' name='L711'></a><span id="Step-count"></span><div class="header"> <a id='L712' name='L712'></a><p> <a id='L713' name='L713'></a>Previous: <a href="#End-value" accesskey="p" rel="prev">End value</a>, Up: <a href="#Register-and-memory" accesskey="u" rel="up">Register and memory</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L714' name='L714'></a></div> <a id='L715' name='L715'></a><span id="puroguramunosutetupuShu-woBiao-Shi"></span><h4 class="subsection">2.3.3 プログラムのステップ数を表示</h4> <a id='L716' name='L716'></a> <a id='L717' name='L717'></a><p><code>grep</code>と<code>wc</code>を組み合わせれば、プログラムのステップ数を表示できます。 <a id='L718' name='L718'></a></p> <a id='L719' name='L719'></a><div class="example"> <a id='L720' name='L720'></a><pre class="example">$ <kbd>casl2 -t hello.casl | grep 'GR1:' | wc -l</kbd> <a id='L721' name='L721'></a>11 <a id='L722' name='L722'></a></pre></div> <a id='L723' name='L723'></a> <a id='L724' name='L724'></a><div class="example"> <a id='L725' name='L725'></a><pre class="example">$ <kbd>casl2 -t addl.casl | grep 'GR1:' | wc -l</kbd> <a id='L726' name='L726'></a>3 <a id='L727' name='L727'></a></pre></div> <a id='L728' name='L728'></a> <a id='L729' name='L729'></a><p><samp>sum_10.casl</samp>はプログラム内にループがあるため、ステップ数が大きくなります。 <a id='L730' name='L730'></a></p> <a id='L731' name='L731'></a><div class="example"> <a id='L732' name='L732'></a><pre class="example">$ <kbd>casl2 -t sum_10.casl | grep 'GR2:' | wc -l</kbd> <a id='L733' name='L733'></a>53 <a id='L734' name='L734'></a></pre></div> <a id='L735' name='L735'></a> <a id='L736' name='L736'></a><hr> <a id='L737' name='L737'></a><span id="Only-assemble"></span><div class="header"> <a id='L738' name='L738'></a><p> <a id='L739' name='L739'></a>Next: <a href="#Analyze-word" accesskey="n" rel="next">Analyze word</a>, Previous: <a href="#Register-and-memory" accesskey="p" rel="prev">Register and memory</a>, Up: <a href="#Sample-usage" accesskey="u" rel="up">Sample usage</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L740' name='L740'></a></div> <a id='L741' name='L741'></a><span id="asenburutoShi-Xing-woBie-niXing-u"></span><h3 class="section">2.4 アセンブルと実行を別に行う</h3> <a id='L742' name='L742'></a> <a id='L743' name='L743'></a><p><code>casl2</code>に<samp>-O</samp><samp>ファイル名</samp>を指定すると、オブジェクトファイルを作成できます。 <a id='L744' name='L744'></a></p> <a id='L745' name='L745'></a><div class="example"> <a id='L746' name='L746'></a><pre class="example">$ <kbd>casl2 -Ohello.o hello.casl</kbd> <a id='L747' name='L747'></a></pre></div> <a id='L748' name='L748'></a> <a id='L749' name='L749'></a><p>作成されたオブジェクトファイルの内容は、<code>od</code>を使って確認できます。 <a id='L750' name='L750'></a>テキストファイルではないため、<code>cat</code>などでは確認できません。 <a id='L751' name='L751'></a></p> <a id='L752' name='L752'></a><div class="example"> <a id='L753' name='L753'></a><pre class="example">$ <kbd>od -t x2 hello.o</kbd> <a id='L754' name='L754'></a>0000000 7001 0000 7002 0000 1210 0013 1220 0020 <a id='L755' name='L755'></a>0000020 f000 0002 1210 0021 1220 0022 f000 0002 <a id='L756' name='L756'></a>0000040 7120 7110 8100 0048 0065 006c 006c 006f <a id='L757' name='L757'></a>0000060 002c 0020 0057 006f 0072 006c 0064 0021 <a id='L758' name='L758'></a>0000100 000d 000a 0001 <a id='L759' name='L759'></a>0000106 <a id='L760' name='L760'></a></pre></div> <a id='L761' name='L761'></a> <a id='L762' name='L762'></a><p>オブジェクトファイルの実行には、<code>comet2</code>を使います。 <a id='L763' name='L763'></a></p> <a id='L764' name='L764'></a><div class="example"> <a id='L765' name='L765'></a><pre class="example">$ <kbd>comet2 hello.o</kbd> <a id='L766' name='L766'></a>Hello, World! <a id='L767' name='L767'></a></pre></div> <a id='L768' name='L768'></a> <a id='L769' name='L769'></a><hr> <a id='L770' name='L770'></a><span id="Analyze-word"></span><div class="header"> <a id='L771' name='L771'></a><p> <a id='L772' name='L772'></a>Next: <a href="#Use-CASL2LIB" accesskey="n" rel="next">Use CASL2LIB</a>, Previous: <a href="#Only-assemble" accesskey="p" rel="prev">Only assemble</a>, Up: <a href="#Sample-usage" accesskey="u" rel="up">Sample usage</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L773' name='L773'></a></div> <a id='L774' name='L774'></a><span id="g_t1Yu-noJie-Xi-"></span><h3 class="section">2.5 1語の解析</h3> <a id='L775' name='L775'></a> <a id='L776' name='L776'></a><p>CASL IIでは、1語(1 word、16ビット)を単位としてデータが処理されます。 <a id='L777' name='L777'></a><code>dumpword</code>は、指定した1語を10進数、16進数、2進数で表示します。 <a id='L778' name='L778'></a></p> <a id='L779' name='L779'></a><div class="example"> <a id='L780' name='L780'></a><pre class="example">$ <kbd>dumpword 72</kbd> <a id='L781' name='L781'></a> 72: 72 = #0048 = 0000000001001000 = 'H' <a id='L782' name='L782'></a></pre></div> <a id='L783' name='L783'></a> <a id='L784' name='L784'></a><hr> <a id='L785' name='L785'></a><span id="Use-CASL2LIB"></span><div class="header"> <a id='L786' name='L786'></a><p> <a id='L787' name='L787'></a>Previous: <a href="#Analyze-word" accesskey="p" rel="prev">Analyze word</a>, Up: <a href="#Sample-usage" accesskey="u" rel="up">Sample usage</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L788' name='L788'></a></div> <a id='L789' name='L789'></a><span id="CASL2raiburarinoShi-Yong-"></span><h3 class="section">2.6 CASL2ライブラリの使用</h3> <a id='L790' name='L790'></a> <a id='L791' name='L791'></a><p>YACASL2の<samp>as/casl2lib</samp>ディレクトリには、CASL IIで記述されたライブラリファイルが格納されています。 <a id='L792' name='L792'></a></p> <a id='L793' name='L793'></a><p>このフォルダには、たとえば次のようなプログラムが含まれています。 <a id='L794' name='L794'></a></p> <a id='L795' name='L795'></a><dl compact="compact"> <a id='L796' name='L796'></a><dt><samp>OUTL</samp></dt> <a id='L797' name='L797'></a><dd><p><samp>outl.casl</samp>。 <a id='L798' name='L798'></a>GR1に格納された値を、0以上65535以下の整数として出力します。 <a id='L799' name='L799'></a></p> <a id='L800' name='L800'></a></dd> <a id='L801' name='L801'></a><dt><samp>OUTA</samp></dt> <a id='L802' name='L802'></a><dd><p><samp>outa.casl</samp>。 <a id='L803' name='L803'></a>GR1に格納された値を、-32767以上32767以下の整数として出力します。 <a id='L804' name='L804'></a></p> <a id='L805' name='L805'></a></dd> <a id='L806' name='L806'></a><dt><samp>MULL</samp></dt> <a id='L807' name='L807'></a><dd><p><samp>mull.casl</samp>。 <a id='L808' name='L808'></a>GR1とGR2に格納された値を0以上65535以下の整数と見なし、積をGR3に格納します。 <a id='L809' name='L809'></a></p> <a id='L810' name='L810'></a></dd> <a id='L811' name='L811'></a><dt><samp>DIVL</samp></dt> <a id='L812' name='L812'></a><dd><p><samp>divl.casl</samp>。 <a id='L813' name='L813'></a>GR1とGR2に格納された値を0以上65535以下の整数と見なし、商をGR3、剰余をGR0に格納します。 <a id='L814' name='L814'></a></p></dd> <a id='L815' name='L815'></a></dl> <a id='L816' name='L816'></a> <a id='L817' name='L817'></a><span id="Shu-Zhi-woChu-Li-suru"></span><h4 class="subsection">2.6.1 数値を出力する</h4> <a id='L818' name='L818'></a> <a id='L819' name='L819'></a><p>3と1の和を求める<samp>addl.casl</samp>で演算結果を出力するには、まず<samp>addl.casl</samp>を編集します。 <a id='L820' name='L820'></a>CASL IIの<code>CALL</code>命令で<code>OUTL</code>を副プログラムとして呼び出します。 <a id='L821' name='L821'></a></p> <a id='L822' name='L822'></a><div class="example"> <a id='L823' name='L823'></a><pre class="example">$ <kbd>cat addl_outl.casl</kbd> <a id='L824' name='L824'></a>MAIN START <a id='L825' name='L825'></a> LD GR1,A <a id='L826' name='L826'></a> ADDL GR1,B <a id='L827' name='L827'></a> <em>CALL OUTL</em> <a id='L828' name='L828'></a> RET <a id='L829' name='L829'></a>A DC 3 <a id='L830' name='L830'></a>B DC 1 <a id='L831' name='L831'></a> END <a id='L832' name='L832'></a></pre></div> <a id='L833' name='L833'></a> <a id='L834' name='L834'></a><p>変更したら<code>casl2</code>を、複数のファイルを指定して実行します。 <a id='L835' name='L835'></a></p> <a id='L836' name='L836'></a><div class="example"> <a id='L837' name='L837'></a><pre class="example">$ <kbd>casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl</kbd> <a id='L838' name='L838'></a>4 <a id='L839' name='L839'></a></pre></div> <a id='L840' name='L840'></a> <a id='L841' name='L841'></a><hr> <a id='L842' name='L842'></a><span id="casl2-invocation"></span><div class="header"> <a id='L843' name='L843'></a><p> <a id='L844' name='L844'></a>Next: <a href="#comet2-invocation" accesskey="n" rel="next">comet2 invocation</a>, Previous: <a href="#Sample-usage" accesskey="p" rel="prev">Sample usage</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L845' name='L845'></a></div> <a id='L846' name='L846'></a><span id="casl2noHu-biChu-si"></span><h2 class="chapter">3 <code>casl2</code>の呼び出し</h2> <a id='L847' name='L847'></a> <a id='L848' name='L848'></a><span id="index-casl2-1"></span> <a id='L849' name='L849'></a><span id="index-casl2"></span> <a id='L850' name='L850'></a><span id="index-invoking"></span> <a id='L851' name='L851'></a><span id="index-options"></span> <a id='L852' name='L852'></a><span id="index-usage"></span> <a id='L853' name='L853'></a><span id="index-help"></span> <a id='L854' name='L854'></a> <a id='L855' name='L855'></a><p><code>casl2</code>は、引数として指定されたCASLファイルをアセンブルし、仮想マシンCOMET II上で実行します。 <a id='L856' name='L856'></a>CASLファイルは、アセンブラ言語CASL IIで記述されたテキストファイルです。 <a id='L857' name='L857'></a>引数が指定されない場合は、エラーメッセージを表示して終了します。 <a id='L858' name='L858'></a></p> <a id='L859' name='L859'></a><div class="example"> <a id='L860' name='L860'></a><pre class="example">$ <kbd>casl2 hello.casl</kbd> <a id='L861' name='L861'></a></pre></div> <a id='L862' name='L862'></a> <a id='L863' name='L863'></a><p>複数のCASLファイルを指定することで、副プログラムを呼び出すこともできます。 <a id='L864' name='L864'></a></p> <a id='L865' name='L865'></a><div class="example"> <a id='L866' name='L866'></a><pre class="example">$ <kbd>casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl</kbd> <a id='L867' name='L867'></a></pre></div> <a id='L868' name='L868'></a> <a id='L869' name='L869'></a><span id="opusiyon"></span><h3 class="unnumberedsec">オプション</h3> <a id='L870' name='L870'></a> <a id='L871' name='L871'></a><p><code>casl2</code>は、次のオプションを指定できます。 <a id='L872' name='L872'></a></p> <a id='L873' name='L873'></a><dl compact="compact"> <a id='L874' name='L874'></a><dt><samp>-s</samp></dt> <a id='L875' name='L875'></a><dt><samp>--source</samp></dt> <a id='L876' name='L876'></a><dd><p>CASLファイルの内容を表示します。 <a id='L877' name='L877'></a></p> <a id='L878' name='L878'></a></dd> <a id='L879' name='L879'></a><dt><samp>-l</samp></dt> <a id='L880' name='L880'></a><dt><samp>--label</samp></dt> <a id='L881' name='L881'></a><dd><p>ラベルの一覧を次の形式で表示します。 <a id='L882' name='L882'></a>表示後、ほかの作業を続行します。 <a id='L883' name='L883'></a></p> <a id='L884' name='L884'></a><div class="example"> <a id='L885' name='L885'></a><pre class="example">&lt;プログラム名&gt;.&lt;ラベル名&gt; ---&gt; &lt;アドレスの16進数表現&gt; <a id='L886' name='L886'></a></pre></div> <a id='L887' name='L887'></a> <a id='L888' name='L888'></a></dd> <a id='L889' name='L889'></a><dt><samp>-L</samp></dt> <a id='L890' name='L890'></a><dt><samp>--labelonly</samp></dt> <a id='L891' name='L891'></a><dd><p><samp>-l</samp>と同じ形式でラベルの一覧を表示します。 <a id='L892' name='L892'></a>表示後、ほかの作業は続行せず、終了します。 <a id='L893' name='L893'></a></p> <a id='L894' name='L894'></a></dd> <a id='L895' name='L895'></a><dt><samp>-a</samp></dt> <a id='L896' name='L896'></a><dt><samp>--assembledetail</samp></dt> <a id='L897' name='L897'></a><dd><p>アセンブル詳細結果を表示し、ほかの作業を続行します。 <a id='L898' name='L898'></a></p> <a id='L899' name='L899'></a></dd> <a id='L900' name='L900'></a><dt><samp>-A</samp></dt> <a id='L901' name='L901'></a><dt><samp>--assembledetailonly</samp></dt> <a id='L902' name='L902'></a><dd><p>アセンブル詳細結果を表示して終了します。 <a id='L903' name='L903'></a></p> <a id='L904' name='L904'></a></dd> <a id='L905' name='L905'></a><dt><samp>-o&lt;OBJECTFILE&gt;</samp></dt> <a id='L906' name='L906'></a><dt><samp>--assembleout&lt;OBJECTFILE&gt;</samp></dt> <a id='L907' name='L907'></a><dd><p>アセンブル結果をオブジェクトファイル<samp>&lt;OBJECTFILE&gt;</samp>に出力し、ほかの作業を続行します。 <a id='L908' name='L908'></a>出力されたオブジェクトファイルは、<code>comet2</code>で実行できます。 <a id='L909' name='L909'></a>オブジェクトファイルを指定しない場合、出力先は<samp>a.o</samp>です。 <a id='L910' name='L910'></a>オブジェクトファイルは1つだけ指定できます。 <a id='L911' name='L911'></a></p> <a id='L912' name='L912'></a></dd> <a id='L913' name='L913'></a><dt><samp>-O[&lt;OBJECTFILE&gt;]</samp></dt> <a id='L914' name='L914'></a><dt><samp>--assembleoutonly[&lt;OBJECTFILE&gt;]</samp></dt> <a id='L915' name='L915'></a><dd><p>アセンブル結果をオブジェクトファイル<samp>&lt;OBJECTFILE&gt;</samp>に出力し、終了します。 <a id='L916' name='L916'></a>出力されたオブジェクトファイルは、<code>comet2</code>で実行できます。 <a id='L917' name='L917'></a>オブジェクトファイルを指定しない場合、出力先は<samp>a.o</samp>です。 <a id='L918' name='L918'></a>オブジェクトファイルは1つだけ指定できます。 <a id='L919' name='L919'></a></p> <a id='L920' name='L920'></a></dd> <a id='L921' name='L921'></a><dt><samp>-t</samp></dt> <a id='L922' name='L922'></a><dt><samp>--trace</samp></dt> <a id='L923' name='L923'></a><dt><samp>--tracearithmetic</samp></dt> <a id='L924' name='L924'></a><dd><p>プログラム実行中のレジスタの値を次の形式で表示します。 <a id='L925' name='L925'></a></p> <a id='L926' name='L926'></a><div class="example"> <a id='L927' name='L927'></a><pre class="example">&lt;PR値の16進数表現&gt;: &lt;レジスタ&gt;: &lt;値の10進数表現&gt; = <a id='L928' name='L928'></a>&lt;値の16進数表現&gt; = &lt;値の2進数表現&gt;[ ='文字'] <a id='L929' name='L929'></a></pre></div> <a id='L930' name='L930'></a> <a id='L931' name='L931'></a><ul> <a id='L932' name='L932'></a><li> <code>&lt;PR値の16進数表現&gt;</code>と<code>&lt;レジスタ&gt;</code>、<code>&lt;値の16進数表現&gt;</code>は、4けたの16進数で表されます。 <a id='L933' name='L933'></a><code>&lt;PR値の16進数表現&gt;</code>と<code>&lt;値の16進数表現&gt;</code>には、先頭に<code>#</code>が付きます。 <a id='L934' name='L934'></a>範囲は<code>#0000</code>から<code>#FFFF</code>です <a id='L935' name='L935'></a> <a id='L936' name='L936'></a></li><li> <code>&lt;値の10進数表現&gt;</code>は符号の付いた10進数です。 <a id='L937' name='L937'></a>範囲は-32768から32767です。 <a id='L938' name='L938'></a> <a id='L939' name='L939'></a></li><li> <code>&lt;値の2進数表現&gt;</code>は、16けたの2進数で表されます。 <a id='L940' name='L940'></a>範囲は、<code>0000000000000000</code>から<code>1111111111111111</code>です <a id='L941' name='L941'></a> <a id='L942' name='L942'></a></li><li> <code>[ ='文字']</code>は、レジストリの値が「文字の組」の範囲に含まれる場合に表示されます。 <a id='L943' name='L943'></a></li></ul> <a id='L944' name='L944'></a> <a id='L945' name='L945'></a><p>表示されるレジスタには、次の種類があります。 <a id='L946' name='L946'></a></p> <a id='L947' name='L947'></a><dl compact="compact"> <a id='L948' name='L948'></a><dt><code>GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7</code></dt> <a id='L949' name='L949'></a><dd><p>汎用レジスタ <a id='L950' name='L950'></a></p> <a id='L951' name='L951'></a></dd> <a id='L952' name='L952'></a><dt><code>SP</code></dt> <a id='L953' name='L953'></a><dd><p>スタックポインタ <a id='L954' name='L954'></a></p> <a id='L955' name='L955'></a></dd> <a id='L956' name='L956'></a><dt><code>PR</code></dt> <a id='L957' name='L957'></a><dd><p>プログラムレジスタ <a id='L958' name='L958'></a></p> <a id='L959' name='L959'></a></dd> <a id='L960' name='L960'></a><dt><code>FR</code></dt> <a id='L961' name='L961'></a><dd><p>フラグレジスタ <a id='L962' name='L962'></a></p></dd> <a id='L963' name='L963'></a></dl> <a id='L964' name='L964'></a> <a id='L965' name='L965'></a><p>例えば、次のように表示されます。 <a id='L966' name='L966'></a></p> <a id='L967' name='L967'></a><div class="example"> <a id='L968' name='L968'></a><pre class="example">#0002: GR1: 3 = #0003 = 0000000000000011 <a id='L969' name='L969'></a></pre></div> <a id='L970' name='L970'></a> <a id='L971' name='L971'></a></dd> <a id='L972' name='L972'></a><dt><samp>-T</samp></dt> <a id='L973' name='L973'></a><dt><samp>--tracelogical</samp></dt> <a id='L974' name='L974'></a><dd><p><samp>-t</samp>と同じように、プログラム実行中のレジスタの値を表示します。 <a id='L975' name='L975'></a>ただし<samp>-t</samp>と異なり、<code>&lt;値の10進数表現&gt;</code>は符号の付かない10進数です。 <a id='L976' name='L976'></a>値の範囲は0から65535です。 <a id='L977' name='L977'></a></p> <a id='L978' name='L978'></a></dd> <a id='L979' name='L979'></a><dt><samp>-d</samp></dt> <a id='L980' name='L980'></a><dt><samp>--dump</samp></dt> <a id='L981' name='L981'></a><dd><p>メモリの内容をすべて表示します。 <a id='L982' name='L982'></a></p> <a id='L983' name='L983'></a></dd> <a id='L984' name='L984'></a><dt><samp>-M &lt;MEMORYSIZE&gt;</samp></dt> <a id='L985' name='L985'></a><dt><samp>--memorysize &lt;MEMORYSIZE&gt;</samp></dt> <a id='L986' name='L986'></a><dd><p>アセンブルおよび実行時のメモリサイズ<samp>&lt;MEMORYSIZE&gt;</samp>を0から65535の範囲で指定します。 <a id='L987' name='L987'></a>指定しない場合、512です。 <a id='L988' name='L988'></a></p> <a id='L989' name='L989'></a></dd> <a id='L990' name='L990'></a><dt><samp>-C &lt;CLOCKS&gt;</samp></dt> <a id='L991' name='L991'></a><dt><samp>--clocks &lt;CLOCKS&gt;</samp></dt> <a id='L992' name='L992'></a><dd><p>実行時のクロック周波数<samp>&lt;CLOCKS&gt;</samp>を0より大きい整数で指定します。 <a id='L993' name='L993'></a>指定しない場合、クロック周波数は5000000です。 <a id='L994' name='L994'></a></p> <a id='L995' name='L995'></a></dd> <a id='L996' name='L996'></a><dt><samp>-v</samp></dt> <a id='L997' name='L997'></a><dt><samp>--version</samp></dt> <a id='L998' name='L998'></a><dd><p><code>casl2</code>のバージョンを表示して終了します。 <a id='L999' name='L999'></a></p> <a id='L1000' name='L1000'></a></dd> <a id='L1001' name='L1001'></a><dt><samp>-h</samp></dt> <a id='L1002' name='L1002'></a><dt><samp>--help</samp></dt> <a id='L1003' name='L1003'></a><dd><p><code>casl2</code>の使用方法を表示して終了します。 <a id='L1004' name='L1004'></a></p></dd> <a id='L1005' name='L1005'></a></dl> <a id='L1006' name='L1006'></a> <a id='L1007' name='L1007'></a><hr> <a id='L1008' name='L1008'></a><span id="comet2-invocation"></span><div class="header"> <a id='L1009' name='L1009'></a><p> <a id='L1010' name='L1010'></a>Next: <a href="#dumpword-invocation" accesskey="n" rel="next">dumpword invocation</a>, Previous: <a href="#casl2-invocation" accesskey="p" rel="prev">casl2 invocation</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L1011' name='L1011'></a></div> <a id='L1012' name='L1012'></a><span id="comet2noHu-biChu-si"></span><h2 class="chapter">4 <code>comet2</code>の呼び出し</h2> <a id='L1013' name='L1013'></a> <a id='L1014' name='L1014'></a><span id="index-comet2-1"></span> <a id='L1015' name='L1015'></a><span id="index-comet2"></span> <a id='L1016' name='L1016'></a><span id="index-invoking-1"></span> <a id='L1017' name='L1017'></a><span id="index-options-1"></span> <a id='L1018' name='L1018'></a><span id="index-usage-1"></span> <a id='L1019' name='L1019'></a><span id="index-help-1"></span> <a id='L1020' name='L1020'></a> <a id='L1021' name='L1021'></a><p><code>comet2</code>は、引数として指定されたオブジェクトファイルを仮想マシンCOMET II上で実行します。 <a id='L1022' name='L1022'></a>オブジェクトファイルは、<code>casl</code>に<samp>-o</samp>または<samp>-O</samp>を指定して出力します。 <a id='L1023' name='L1023'></a></p> <a id='L1024' name='L1024'></a><div class="example"> <a id='L1025' name='L1025'></a><pre class="example">$ <kbd>comet2 hello.o</kbd> <a id='L1026' name='L1026'></a></pre></div> <a id='L1027' name='L1027'></a> <a id='L1028' name='L1028'></a><p>引数で指定できるオブジェクトファイルは1つだけです。 <a id='L1029' name='L1029'></a>引数が指定されない場合は、エラーメッセージを表示して終了します。 <a id='L1030' name='L1030'></a>複数の引数を指定した場合、2番目以降の引数は無視されます。 <a id='L1031' name='L1031'></a></p> <a id='L1032' name='L1032'></a><span id="opusiyon-1"></span><h3 class="unnumberedsec">オプション</h3> <a id='L1033' name='L1033'></a> <a id='L1034' name='L1034'></a><p><code>comet2</code>は、次のオプションを指定できます。 <a id='L1035' name='L1035'></a></p> <a id='L1036' name='L1036'></a><dl compact="compact"> <a id='L1037' name='L1037'></a><dt><samp>-t</samp></dt> <a id='L1038' name='L1038'></a><dt><samp>--trace</samp></dt> <a id='L1039' name='L1039'></a><dt><samp>--tracearithmetic</samp></dt> <a id='L1040' name='L1040'></a><dd><p>プログラム実行中のレジスタの値を次の形式で表示します。 <a id='L1041' name='L1041'></a><code>&lt;値の10進数表現&gt;</code>は符号の付いた10進数です。 <a id='L1042' name='L1042'></a>範囲は-32768から32767です。 <a id='L1043' name='L1043'></a></p> <a id='L1044' name='L1044'></a><div class="example"> <a id='L1045' name='L1045'></a><pre class="example">&lt;PR値の16進数表現&gt;: &lt;レジスタ&gt;: &lt;値の10進数表現&gt; = &lt;値の16進数表現&gt; = &lt;値の2進数表現&gt;[ ='文字'] <a id='L1046' name='L1046'></a></pre></div> <a id='L1047' name='L1047'></a> <a id='L1048' name='L1048'></a><ul> <a id='L1049' name='L1049'></a><li> <code>&lt;PR値の16進数表現&gt;</code>と<code>&lt;値の16進数表現&gt;</code>は、先頭に<code>#</code>が付いた4けたの16進数で表されます。 <a id='L1050' name='L1050'></a>範囲は、<code>#0000</code>から<code>#FFFF</code>です <a id='L1051' name='L1051'></a> <a id='L1052' name='L1052'></a></li><li> <code>&lt;値の2進数表現&gt;</code>は、16けたの2進数で表されます。 <a id='L1053' name='L1053'></a>範囲は、<code>0000000000000000</code>から<code>1111111111111111</code>です <a id='L1054' name='L1054'></a> <a id='L1055' name='L1055'></a></li><li> <code>[ ='文字']</code>は、レジストリの値が「文字の組」の範囲に含まれる場合に表示されます。 <a id='L1056' name='L1056'></a></li></ul> <a id='L1057' name='L1057'></a> <a id='L1058' name='L1058'></a><p>例えば、次のように表示されます。 <a id='L1059' name='L1059'></a></p> <a id='L1060' name='L1060'></a><div class="example"> <a id='L1061' name='L1061'></a><pre class="example">#0002: GR1: 3 = #0003 = 0000000000000011 <a id='L1062' name='L1062'></a></pre></div> <a id='L1063' name='L1063'></a> <a id='L1064' name='L1064'></a><p>表示されるレジスタには、次の種類があります。 <a id='L1065' name='L1065'></a></p> <a id='L1066' name='L1066'></a><dl compact="compact"> <a id='L1067' name='L1067'></a><dt><code>GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7</code></dt> <a id='L1068' name='L1068'></a><dd><p>汎用レジスタ <a id='L1069' name='L1069'></a></p> <a id='L1070' name='L1070'></a></dd> <a id='L1071' name='L1071'></a><dt><code>SP</code></dt> <a id='L1072' name='L1072'></a><dd><p>スタックポインタ <a id='L1073' name='L1073'></a></p> <a id='L1074' name='L1074'></a></dd> <a id='L1075' name='L1075'></a><dt><code>PR</code></dt> <a id='L1076' name='L1076'></a><dd><p>プログラムレジスタ <a id='L1077' name='L1077'></a></p> <a id='L1078' name='L1078'></a></dd> <a id='L1079' name='L1079'></a><dt><code>FR</code></dt> <a id='L1080' name='L1080'></a><dd><p>フラグレジスタ <a id='L1081' name='L1081'></a></p></dd> <a id='L1082' name='L1082'></a></dl> <a id='L1083' name='L1083'></a> <a id='L1084' name='L1084'></a></dd> <a id='L1085' name='L1085'></a><dt><samp>-T</samp></dt> <a id='L1086' name='L1086'></a><dt><samp>--tracelogical</samp></dt> <a id='L1087' name='L1087'></a><dd><p><samp>-t</samp>と同じように、プログラム実行中のレジスタの値を表示します。 <a id='L1088' name='L1088'></a>ただし、<samp>-t</samp>と異なり、<code>&lt;値の10進数表現&gt;</code>は符号の付かない10進数です。 <a id='L1089' name='L1089'></a>値の範囲は0から65535です。 <a id='L1090' name='L1090'></a></p> <a id='L1091' name='L1091'></a></dd> <a id='L1092' name='L1092'></a><dt><samp>-d</samp></dt> <a id='L1093' name='L1093'></a><dt><samp>--dump</samp></dt> <a id='L1094' name='L1094'></a><dd><p>メモリの内容をすべて表示します。 <a id='L1095' name='L1095'></a></p> <a id='L1096' name='L1096'></a></dd> <a id='L1097' name='L1097'></a><dt><samp>-M &lt;MEMORYSIZE&gt;</samp></dt> <a id='L1098' name='L1098'></a><dt><samp>--memorysize &lt;MEMORYSIZE&gt;</samp></dt> <a id='L1099' name='L1099'></a><dd><p>実行時のメモリサイズ<samp>&lt;MEMORYSIZE&gt;</samp>を0から65535の範囲で指定します。 <a id='L1100' name='L1100'></a>指定しない場合、512です。 <a id='L1101' name='L1101'></a></p> <a id='L1102' name='L1102'></a></dd> <a id='L1103' name='L1103'></a><dt><samp>-C &lt;CLOCKS&gt;</samp></dt> <a id='L1104' name='L1104'></a><dt><samp>--clocks &lt;CLOCKS&gt;</samp></dt> <a id='L1105' name='L1105'></a><dd><p>実行時のクロック周波数<samp>&lt;CLOCKS&gt;</samp>を0より大きい整数で指定します。 <a id='L1106' name='L1106'></a>指定しない場合、5000000です。 <a id='L1107' name='L1107'></a></p> <a id='L1108' name='L1108'></a></dd> <a id='L1109' name='L1109'></a><dt><samp>-v</samp></dt> <a id='L1110' name='L1110'></a><dt><samp>--version</samp></dt> <a id='L1111' name='L1111'></a><dd><p><code>comet2</code>のバージョンを表示して終了します。 <a id='L1112' name='L1112'></a></p> <a id='L1113' name='L1113'></a></dd> <a id='L1114' name='L1114'></a><dt><samp>-h</samp></dt> <a id='L1115' name='L1115'></a><dt><samp>--help</samp></dt> <a id='L1116' name='L1116'></a><dd><p><code>comet2</code>の使用方法を表示して終了します。 <a id='L1117' name='L1117'></a></p></dd> <a id='L1118' name='L1118'></a></dl> <a id='L1119' name='L1119'></a> <a id='L1120' name='L1120'></a><hr> <a id='L1121' name='L1121'></a><span id="dumpword-invocation"></span><div class="header"> <a id='L1122' name='L1122'></a><p> <a id='L1123' name='L1123'></a>Previous: <a href="#comet2-invocation" accesskey="p" rel="prev">comet2 invocation</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p> <a id='L1124' name='L1124'></a></div> <a id='L1125' name='L1125'></a><span id="dumpwordnoHu-biChu-si"></span><h2 class="chapter">5 <code>dumpword</code>の呼び出し</h2> <a id='L1126' name='L1126'></a> <a id='L1127' name='L1127'></a><span id="index-dumpword-1"></span> <a id='L1128' name='L1128'></a><span id="index-dumpword"></span> <a id='L1129' name='L1129'></a><span id="index-invoking-2"></span> <a id='L1130' name='L1130'></a><span id="index-options-2"></span> <a id='L1131' name='L1131'></a><span id="index-usage-2"></span> <a id='L1132' name='L1132'></a><span id="index-help-2"></span> <a id='L1133' name='L1133'></a> <a id='L1134' name='L1134'></a><p><code>dumpword</code>は引数として指定された数値を、整数、#0000から#FFFFまでの範囲の16進数、2進数で表示します。 <a id='L1135' name='L1135'></a>文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。 <a id='L1136' name='L1136'></a>引数は、10進数または先頭に「#」の付いた16進数で指定します。 <a id='L1137' name='L1137'></a>表示される整数は、オプションにより符号付きか符号なしかを指定します。 <a id='L1138' name='L1138'></a>オプションなしの場合は符号付きです。 <a id='L1139' name='L1139'></a>整数の範囲は、符号付きの場合は-32768以上32767以下、符号なしの場合は0以上65535以下です。 <a id='L1140' name='L1140'></a></p> <a id='L1141' name='L1141'></a><div class="example"> <a id='L1142' name='L1142'></a><pre class="example">$ <kbd>dumpword 10</kbd> <a id='L1143' name='L1143'></a> 10: 10 = #000A = 0000000000001010 = '\n' <a id='L1144' name='L1144'></a></pre></div> <a id='L1145' name='L1145'></a> <a id='L1146' name='L1146'></a><p>引数が指定されない場合は、使い方を表示して終了します。 <a id='L1147' name='L1147'></a>複数の引数を指定した場合、1つ目の引数だけが表示され、2つ目以降の引数は無視されます。 <a id='L1148' name='L1148'></a></p> <a id='L1149' name='L1149'></a><span id="Zhu-Yi-"></span><h3 class="unnumberedsec">注意</h3> <a id='L1150' name='L1150'></a> <a id='L1151' name='L1151'></a><p>マイナスの数や16進数はシェルの仕様により、そのままでは指定できません。 <a id='L1152' name='L1152'></a></p> <a id='L1153' name='L1153'></a><p>マイナスの数を指定するときは、次のように<samp>--</samp>を付けます。 <a id='L1154' name='L1154'></a></p> <a id='L1155' name='L1155'></a><div class="example"> <a id='L1156' name='L1156'></a><pre class="example">$ <kbd>dumpword -- -72</kbd> <a id='L1157' name='L1157'></a> -72: -72 = #FFB8 = 1111111110111000 <a id='L1158' name='L1158'></a></pre></div> <a id='L1159' name='L1159'></a> <a id='L1160' name='L1160'></a><p>先頭に「#」を付けて16進数を指定するときは、次のように「&rsquo;」で囲みます。 <a id='L1161' name='L1161'></a></p> <a id='L1162' name='L1162'></a><div class="example"> <a id='L1163' name='L1163'></a><pre class="example">$ <kbd>dumpword '#0048'</kbd> <a id='L1164' name='L1164'></a> #0048: 72 = #0048 = 0000000001001000 = 'H' <a id='L1165' name='L1165'></a></pre></div> <a id='L1166' name='L1166'></a> <a id='L1167' name='L1167'></a><span id="opusiyon-2"></span><h3 class="unnumberedsec">オプション</h3> <a id='L1168' name='L1168'></a> <a id='L1169' name='L1169'></a><p><code>dumpword</code>は、次のオプションを指定できます。 <a id='L1170' name='L1170'></a></p> <a id='L1171' name='L1171'></a><dl compact="compact"> <a id='L1172' name='L1172'></a><dt><samp>-a</samp></dt> <a id='L1173' name='L1173'></a><dt><samp>--arithmetic</samp></dt> <a id='L1174' name='L1174'></a><dd><p>出力される整数の範囲を-32,768以上32,767以下にします。 <a id='L1175' name='L1175'></a>オプションなしの場合と同じです。 <a id='L1176' name='L1176'></a></p> <a id='L1177' name='L1177'></a></dd> <a id='L1178' name='L1178'></a><dt><samp>-l</samp></dt> <a id='L1179' name='L1179'></a><dt><samp>--logical</samp></dt> <a id='L1180' name='L1180'></a><dd><p>出力される整数の範囲を0以上65,535以下にします。 <a id='L1181' name='L1181'></a></p> <a id='L1182' name='L1182'></a></dd> <a id='L1183' name='L1183'></a><dt><samp>-v</samp></dt> <a id='L1184' name='L1184'></a><dt><samp>--version</samp></dt> <a id='L1185' name='L1185'></a><dd><p><code>dumpword</code>のバージョンを表示して終了します。 <a id='L1186' name='L1186'></a></p> <a id='L1187' name='L1187'></a></dd> <a id='L1188' name='L1188'></a><dt><samp>-h</samp></dt> <a id='L1189' name='L1189'></a><dt><samp>--help</samp></dt> <a id='L1190' name='L1190'></a><dd><p><code>dumpword</code>の使用方法を表示して終了します。 <a id='L1191' name='L1191'></a></p></dd> <a id='L1192' name='L1192'></a></dl> <a id='L1193' name='L1193'></a> <a id='L1194' name='L1194'></a><hr> <a id='L1195' name='L1195'></a> <a id='L1196' name='L1196'></a> <a id='L1197' name='L1197'></a> <a id='L1198' name='L1198'></a></body> <a id='L1199' name='L1199'></a></html> </pre> <hr /> <a id='BOTTOM' name='BOTTOM'></a> <em class='comment'>/* [<][>][^][v]<a href='#TOP'>[top]</a>[bottom]<a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</em> </body> </html>