|
|
|
@ -80,7 +80,7 @@ opcodes.
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CAssembly::initialise</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CAssembly::initialise</span></span>:<br/>Final C - <a href="5-fnc.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">code_generator</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">, </span><span class="constant-syntax">INVOKE_OPCODE_MTID</span><span class="plain-syntax">, </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::assembly</span></a><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">, </span><span class="constant-syntax">INVOKE_OPCODE_MTID</span><span class="plain-syntax">, </span><a href="5-cas.html#SP3" class="function-link"><span class="function-syntax">CAssembly::assembly</span></a><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
|
|
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CAssembly::initialise_data</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">CAssembly::initialise_data</span></span>:<br/>Final C - <a href="5-fnc.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">code_generation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gen</span><span class="plain-syntax">) {</span>
|
|
|
|
@ -96,76 +96,141 @@ opcodes.
|
|
|
|
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CAssembly::assembly</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">CAssembly::assembly</span></span>:<br/><a href="5-cas.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">code_generator</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">, </span><span class="reserved-syntax">code_generation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gen</span><span class="plain-syntax">,</span>
|
|
|
|
|
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">C_supported_opcode</span><span class="plain-syntax"> {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_OPERANDS_IN_INTER_ASSEMBLY</span><span class="plain-syntax">];</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">vararg_operand</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">speculative</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
|
|
|
|
<span class="plain-syntax">} </span><span class="reserved-syntax">C_supported_opcode</span><span class="plain-syntax">;</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="reserved-syntax">C_supported_opcode</span><span class="plain-syntax"> *</span><span class="function-syntax">CAssembly::new_opcode</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">CAssembly::new_opcode</span></span>:<br/><a href="5-cas.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">code_generation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s1</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">va</span><span class="plain-syntax">) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">C_supported_opcode</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">C_supported_opcode</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">opc</span><span class="plain-syntax">-></span><span class="element-syntax">speculative</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">opc</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><16; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">opc</span><span class="plain-syntax">-></span><span class="element-syntax">store_this_operand</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">s1</span><span class="plain-syntax"> >= </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">opc</span><span class="plain-syntax">-></span><span class="element-syntax">store_this_operand</span><span class="plain-syntax">[</span><span class="identifier-syntax">s1</span><span class="plain-syntax">] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">s2</span><span class="plain-syntax"> >= </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">opc</span><span class="plain-syntax">-></span><span class="element-syntax">store_this_operand</span><span class="plain-syntax">[</span><span class="identifier-syntax">s2</span><span class="plain-syntax">] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">opc</span><span class="plain-syntax">-></span><span class="element-syntax">vararg_operand</span><span class="plain-syntax"> = </span><span class="identifier-syntax">va</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">C_supported_opcodes</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::write_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">C_supported_opcodes</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">opc</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">opc</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
|
|
|
|
|
|
<span class="reserved-syntax">C_supported_opcode</span><span class="plain-syntax"> *</span><span class="function-syntax">CAssembly::find_opcode</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">CAssembly::find_opcode</span></span>:<br/><a href="5-cas.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">code_generation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">C_supported_opcodes</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">C_supported_opcodes</span><span class="plain-syntax">) = </span><span class="identifier-syntax">Dictionaries::new</span><span class="plain-syntax">(256, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cas.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Stock with the basics</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">C_supported_opcode</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opc</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Dictionaries::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">C_supported_opcodes</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</span><span class="plain-syntax">)) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">opc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dictionaries::read_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">C_supported_opcodes</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">opc</span><span class="plain-syntax"> = </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">opc</span><span class="plain-syntax">-></span><span class="element-syntax">speculative</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">STDERR</span><span class="plain-syntax">, </span><span class="string-syntax">"Speculative %S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"zap"</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">opc</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
|
</pre>
|
|
|
|
|
<ul class="endnotetexts"><li>The structure C_supported_opcode is accessed in 5/com and here.</li></ul>
|
|
|
|
|
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>§2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Stock with the basics</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@read_gprop"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@write_gprop"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@acos"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@add"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@aload"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@aloadb"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@aloads"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@asin"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@atan"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@binarysearch"</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@call"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@ceil"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@copy"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@cos"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@div"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@exp"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@fadd"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@fdiv"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@floor"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@fmod"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@fmul"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@fsub"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@ftonumn"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@ftonumz"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@gestalt"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@glk"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@hasundo"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@jeq"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@jfeq"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@jfge"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@jflt"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@jisinf"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@jisnan"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@jleu"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@jnz"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@jz"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@log"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@malloc"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@mcopy"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@mfree"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@mod"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@mul"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@neg"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@nop"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@numtof"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@pow"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@quit"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@random"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@restart"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@restore"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@restoreundo"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@return"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@save"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@saveundo"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@setiosys"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@setrandom"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@shiftl"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@sin"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@sqrt"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@streamchar"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@streamnum"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@streamunichar"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@sub"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@tan"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@ushiftr"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::new_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@verify"</span><span class="plain-syntax">, -1, -1, -1);</span>
|
|
|
|
|
</pre>
|
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="5-cas.html#SP2">§2</a>.</li></ul>
|
|
|
|
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CAssembly::assembly</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">CAssembly::assembly</span></span>:<br/><a href="5-cas.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">code_generator</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">, </span><span class="reserved-syntax">code_generation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gen</span><span class="plain-syntax">,</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">operand_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> **</span><span class="identifier-syntax">operands</span><span class="plain-syntax">,</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">label</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">label_sense</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">void_context</span><span class="plain-syntax">) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax"> = </span><a href="2-cg.html#SP12" class="function-link"><span class="function-syntax">CodeGen::current</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">);</span>
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">C_supported_opcode</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opc</span><span class="plain-syntax"> = </span><a href="5-cas.html#SP2" class="function-link"><span class="function-syntax">CAssembly::find_opcode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">opcode</span><span class="plain-syntax">);</span>
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">vararg_operands_from</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">vararg_operands_to</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">hacky_extras</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_OPERANDS_IN_INTER_ASSEMBLY</span><span class="plain-syntax">];</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><16; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">opc</span><span class="plain-syntax">-></span><span class="element-syntax">vararg_operand</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">vararg_operands_from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">opc</span><span class="plain-syntax">-></span><span class="element-syntax">vararg_operand</span><span class="plain-syntax">; </span><span class="identifier-syntax">vararg_operands_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">operand_count</span><span class="plain-syntax">-1; }</span>
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@read_gprop"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[4] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">hacky_extras</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@read_gprop"</span><span class="plain-syntax">)) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">hacky_extras</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">objdata</span><span class="plain-syntax">.</span><span class="element-syntax">value_property_holders_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@write_gprop"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">hacky_extras</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@write_gprop"</span><span class="plain-syntax">)) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">hacky_extras</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">objdata</span><span class="plain-syntax">.</span><span class="element-syntax">value_property_holders_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@acos"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@add"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@aload"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@aloadb"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@aloads"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@asin"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@atan"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@binarysearch"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[8] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@ceil"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@call"</span><span class="plain-syntax">)) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">vararg_operands_from</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">; </span><span class="identifier-syntax">vararg_operands_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">operand_count</span><span class="plain-syntax">-1;</span>
|
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@copy"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@cos"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@div"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@exp"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@fadd"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@fdiv"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@floor"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@fmod"</span><span class="plain-syntax">)) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[4] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@fmul"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@fsub"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@ftonumn"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@ftonumz"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@gestalt"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@glk"</span><span class="plain-syntax">)) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">vararg_operands_from</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">; </span><span class="identifier-syntax">vararg_operands_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">operand_count</span><span class="plain-syntax">-1;</span>
|
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@hasundo"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@log"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@mod"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@mul"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@neg"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@numtof"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@pow"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@random"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@restoreundo"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@saveundo"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@shiftl"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@sin"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@sqrt"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@sub"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@tan"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@xfunction"</span><span class="plain-syntax">)) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">vararg_operands_from</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">; </span><span class="identifier-syntax">vararg_operands_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">operand_count</span><span class="plain-syntax">-1;</span>
|
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pushed_result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">num</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@return"</span><span class="plain-syntax">)) {</span>
|
|
|
|
@ -177,13 +242,13 @@ opcodes.
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">num</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">opc</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="identifier-syntax">opc</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">operand_count</span><span class="plain-syntax">; </span><span class="identifier-syntax">opc</span><span class="plain-syntax">++) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">opc</span><span class="plain-syntax"> > </span><span class="identifier-syntax">num</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", "</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">operand</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="identifier-syntax">operand</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">operand_count</span><span class="plain-syntax">; </span><span class="identifier-syntax">operand</span><span class="plain-syntax">++) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">operand</span><span class="plain-syntax"> > </span><span class="identifier-syntax">num</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", "</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">write_to</span><span class="plain-syntax">)</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">write_to</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[</span><span class="identifier-syntax">opc</span><span class="plain-syntax">-1]);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[</span><span class="identifier-syntax">operand</span><span class="plain-syntax">-1]);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[</span><span class="identifier-syntax">opc</span><span class="plain-syntax">]) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">opc</span><span class="plain-syntax">-></span><span class="element-syntax">store_this_operand</span><span class="plain-syntax">[</span><span class="identifier-syntax">operand</span><span class="plain-syntax">]) {</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">write_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"i7_mgl_sp"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&(proc->state.tmp)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">write_to</span><span class="plain-syntax">); </span><span class="identifier-syntax">pushed_result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; }</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">write_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"0"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"NULL"</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">write_to</span><span class="plain-syntax">);</span>
|
|
|
|
@ -206,7 +271,7 @@ opcodes.
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">void_context</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">";\n"</span><span class="plain-syntax">);</span>
|
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
|
</pre>
|
|
|
|
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
|
|
|
|
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
|
|
|
|
|
|
|
|
|
<pre class="Extracts-displayed-code all-displayed-code code-font">
|
|
|
|
|
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">glulx_provides_gprop</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">p</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">val</span><span class="Extracts-plain-syntax">,</span>
|
|
|
|
@ -297,7 +362,7 @@ opcodes.
|
|
|
|
|
<span class="Extracts-plain-syntax">}</span>
|
|
|
|
|
</pre>
|
|
|
|
|
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
|
|
|
|
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
|
|
|
|
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
|
|
|
|
|
|
|
|
|
<pre class="Extracts-displayed-code all-displayed-code code-font">
|
|
|
|
|
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">glulx_accelfunc</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">x</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">y</span><span class="Extracts-plain-syntax">);</span>
|
|
|
|
|