<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>if-<test>z</title> <link rel=stylesheet href="opcode.css"> </head> <body> <h1>if-<test>z</h1> <h2>Purpose</h2> <p> Branch to the given destination if the given register's value compares with 0 as specified. </p> <p> Note: The branch offset may not be 0. (A spin loop may be legally constructed either by branching around a backward goto or by including a nop as a target before the branch.) </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>38..3d 21t</td> <td>if-<i>test</i>z vAA, +BBBB<br/> 38: if-eqz<br/> 39: if-nez<br/> 3a: if-ltz<br/> 3b: if-gez<br/> 3c: if-gtz<br/> 3d: if-lez<br/> </td> <td><code>A:</code> register to test (8 bits)<br/> <code>B:</code> signed branch offset (16 bits)</td> </tr> </tbody> </table> <h2>Constraints</h2> <ul> <li> A must be a valid register index for the current stackframe. </li> <li> Register vA must not contain a reference value. </li> <li> Register vA must not be part of a register pair. </li> <li> Register vA must not contain a floating point value (???). </li> <li> B must not be 0. </li> </ul> <h2>Behavior</h2> <ul> <li> The value of register vA is compared to zero according to the <test> condition. Two results are possible: <ul> <li> The condition holds. The value of B is used as a signed offset to the address of the if-<test>z instruction. Execution continues at the resulting address. </li> <li> The condition does not hold. Execution continues at the instruction following the if-<test>z instruction. </li> </ul> </li> </ul> <h2>Exceptions</h2> <p> None. </p> </body> </html>