| <!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> |