diff options
Diffstat (limited to 'docs/opcodes/opcode-7b-unop.html')
-rw-r--r-- | docs/opcodes/opcode-7b-unop.html | 108 |
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 & 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 <unop> is double or long, also B+1 must be a + valid register index in the current stackframe. + </li> + <li> + If the output type of <unop> 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 <unop> is performed according to the semantics + specified in table XXX. + </li> + <li> + The result is stored in register vA, that is, vA'=<unop> 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> |