1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 2 3<html> 4 5<head> 6<title>if-<test>z</title> 7<link rel=stylesheet href="opcode.css"> 8</head> 9 10<body> 11 12<h1>if-<test>z</h1> 13 14<h2>Purpose</h2> 15 16<p> 17Branch to the given destination if the given register's value compares with 0 18as specified. 19</p> 20<p> 21 Note: The branch offset may not be 0. (A spin loop may be legally constructed 22 either by branching around a backward goto or by including a nop as a target 23 before the branch.) 24</p> 25 26<h2>Details</h2> 27 28<table class="instruc"> 29<thead> 30<tr> 31 <th>Op & Format</th> 32 <th>Mnemonic / Syntax</th> 33 <th>Arguments</th> 34</tr> 35</thead> 36<tbody> 37<tr> 38 <td>38..3d 21t</td> 39 <td>if-<i>test</i>z vAA, +BBBB<br/> 40 38: if-eqz<br/> 41 39: if-nez<br/> 42 3a: if-ltz<br/> 43 3b: if-gez<br/> 44 3c: if-gtz<br/> 45 3d: if-lez<br/> 46 </td> 47 <td><code>A:</code> register to test (8 bits)<br/> 48 <code>B:</code> signed branch offset (16 bits)</td> 49</tr> 50</tbody> 51</table> 52 53<h2>Constraints</h2> 54 55<ul> 56 <li> 57 A must be a valid register index for the current stackframe. 58 </li> 59 <li> 60 Register vA must not contain a reference value. 61 </li> 62 <li> 63 Register vA must not be part of a register pair. 64 </li> 65 <li> 66 Register vA must not contain a floating point value (???). 67 </li> 68 <li> 69 B must not be 0. 70 </li> 71</ul> 72 73<h2>Behavior</h2> 74 75<ul> 76 <li> 77 The value of register vA is compared to zero according to the <test> 78 condition. Two results are possible: 79 <ul> 80 <li> 81 The condition holds. The value of B is used as a signed offset to the 82 address of the if-<test>z instruction. Execution continues at the 83 resulting address. 84 </li> 85 <li> 86 The condition does not hold. Execution continues at the instruction 87 following the if-<test>z instruction. 88 </li> 89 </ul> 90 </li> 91</ul> 92 93<h2>Exceptions</h2> 94 95<p> 96None. 97</p> 98 99</body> 100</html> 101