summaryrefslogtreecommitdiff
path: root/docs/opcodes/opcode-7b-unop.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/opcodes/opcode-7b-unop.html')
-rw-r--r--docs/opcodes/opcode-7b-unop.html108
1 files changed, 108 insertions, 0 deletions
diff --git a/docs/opcodes/opcode-7b-unop.html b/docs/opcodes/opcode-7b-unop.html
new file mode 100644
index 0000000..8b06092
--- /dev/null
+++ b/docs/opcodes/opcode-7b-unop.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html>
+
+<head>
+<title>unop</title>
+<link rel=stylesheet href="opcode.css">
+</head>
+
+<body>
+
+<h1>unop</h1>
+
+<h2>Purpose</h2>
+
+<p>
+Perform the identified unary operation on the source register, storing the
+result in the destination register.
+</p>
+
+<h2>Details</h2>
+
+<table class="instruc">
+<thead>
+<tr>
+ <th>Op &amp; Format</th>
+ <th>Mnemonic / Syntax</th>
+ <th>Arguments</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>7b..8f 12x</td>
+ <td><i>unop</i> vA, vB<br/>
+ 7b: neg-int<br/>
+ 7c: not-int<br/>
+ 7d: neg-long<br/>
+ 7e: not-long<br/>
+ 7f: neg-float<br/>
+ 80: neg-double<br/>
+ 81: int-to-long<br/>
+ 82: int-to-float<br/>
+ 83: int-to-double<br/>
+ 84: long-to-int<br/>
+ 85: long-to-float<br/>
+ 86: long-to-double<br/>
+ 87: float-to-int<br/>
+ 88: float-to-long<br/>
+ 89: float-to-double<br/>
+ 8a: double-to-int<br/>
+ 8b: double-to-long<br/>
+ 8c: double-to-float<br/>
+ 8d: int-to-byte<br/>
+ 8e: int-to-char<br/>
+ 8f: int-to-short
+ </td>
+ <td><code>A:</code> destination register or pair (4 bits)<br/>
+ <code>B:</code> source register or pair (4 bits)</td>
+</tr>
+</tbody>
+</table>
+
+<h2>Constraints</h2>
+
+<ul>
+ <li>
+ Both A and B must be valid register indices for the current stackframe.
+ </li>
+ <li>
+ If the input type of &lt;unop&gt; is double or long, also B+1 must be a
+ valid register index in the current stackframe.
+ </li>
+ <li>
+ If the output type of &lt;unop&gt; is double or long, also A+1 must be a
+ valid register index in the current stackframe.
+ </li>
+ <li>
+ The type of register vB must match the source type of the instruction (this
+ probably needs more detail).
+ </li>
+</ul>
+
+<h2>Behavior</h2>
+
+<ul>
+ <li>
+ The given operation &lt;unop&gt; is performed according to the semantics
+ specified in table XXX.
+ </li>
+ <li>
+ The result is stored in register vA, that is, vA'=&lt;unop&gt; vB.
+ </li>
+ <li>
+ It gets a bit messy if we want to describe all the combinations of input and
+ output with and without pairs here. Probably it's better to split it up.
+ </li>
+</ul>
+
+<h2>Exceptions</h2>
+
+<ul>
+ <li>
+ ArithmeticException if an arithmetic error occurs during the instruction.
+ </li>
+</ul>
+
+</body>
+</html>