<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>.:: The Converted Virtual Machine Instruction Set ::.</title> </head> <body BGCOLOR="#DbDbDb" text="#000000" LINK="#0C0C0C" VLINK="#070707" ALINK="#007007"> <h1 align="center"> Arithmetic operators </h1><br><hr><p> <table border="0" align="center" width="80%"> <tr><td> <!--LEFT BLOCK--> <table border="0" bordercolor="#CDCDCD" align="left" cellspacing="3" cellpadding="5" cols="4"> <tr> <td> <a href="#ckfinite"><b>ckfinite</b></a></td><td> <a href="#fadd"><b>fadd</b></a></td><td> <a href="#fdiv"><b>fdiv</b></a></td><td> <a href="#fmul"><b>fmul</b></a></td></tr><tr><td> <a href="#fneg"><b>fneg</b></a></td><td> <a href="#frem"><b>frem</b></a></td><td> <a href="#fsub"><b>fsub</b></a></td><td> <a href="#iadd"><b>iadd</b></a></td></tr><tr><td> <a href="#iadd_ovf"><b>iadd_ovf</b></a></td><td> <a href="#iadd_ovf_un"><b>iadd_ovf_un</b></a></td><td> <a href="#idiv"><b>idiv</b></a></td><td> <a href="#idiv_un"><b>idiv_un</b></a></td></tr><tr><td> <a href="#imul"><b>imul</b></a></td><td> <a href="#imul_ovf"><b>imul_ovf</b></a></td><td> <a href="#imul_ovf_un"><b>imul_ovf_un</b></a></td><td> <a href="#ineg"><b>ineg</b></a></td></tr><tr><td> <a href="#irem"><b>irem</b></a></td><td> <a href="#irem_un"><b>irem_un</b></a></td><td> <a href="#isub"><b>isub</b></a></td><td> <a href="#isub_ovf"><b>isub_ovf</b></a></td></tr><tr><td> <a href="#isub_ovf_un"><b>isub_ovf_un</b></a></td><td> <a href="#ladd"><b>ladd</b></a></td><td> <a href="#ladd_ovf"><b>ladd_ovf</b></a></td><td> <a href="#ladd_ovf_un"><b>ladd_ovf_un</b></a></td></tr><tr><td> <a href="#ldiv"><b>ldiv</b></a></td><td> <a href="#ldiv_un"><b>ldiv_un</b></a></td><td> <a href="#lmul"><b>lmul</b></a></td><td> <a href="#lmul_ovf"><b>lmul_ovf</b></a></td></tr><tr><td> <a href="#lmul_ovf_un"><b>lmul_ovf_un</b></a></td><td> <a href="#lneg"><b>lneg</b></a></td><td> <a href="#lrem"><b>lrem</b></a></td><td> <a href="#lrem_un"><b>lrem_un</b></a></td></tr><tr><td> <a href="#lsub"><b>lsub</b></a></td><td> <a href="#lsub_ovf"><b>lsub_ovf</b></a></td><td> <a href="#lsub_ovf_un"><b>lsub_ovf_un</b></a></td><td> </td></tr></table></td></tr></table><p><hr><p><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="ckfinite"> <font color="#FFFFFF" size="+5"> ckfinite</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Check <code>native float</code> for finite</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>prefix</i></td></tr><tr><td align="center" width="100"><i>ckfinite</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{ckfinite}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>ckfinite</i> = 255, 59 (0xFF, 0x3B)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value</i> => <i>...</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>value</i> is popped from the stack as type <code>native float</code>. If <i>value</i> is not finite (i.e. it is NaN, positive infinity, or negative infinity), then <code>System.ArithmeticException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.ArithmeticException</code> -- Raised if <i>value</i> is not finite.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="fadd"> <font color="#FFFFFF" size="+5"> fadd</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Add <code>native float</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>fadd</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{fadd}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>fadd</i> = 95 (0x5F)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>native float</code>. The <code>native float</code> <i>result</i> is <i>value1 + value2</i>. The <i>result</i> is pushed onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">Values of type <code>native float</code> typically occupy multiple stack slots. The exact number of slots is machine-dependent, as is the precision of the <code>native float</code> type.<p> When we say that <i>value1</i> and <i>value2</i> are popped, we assume that the correct number of stack slots for the machine are popped. Similarly when <i>result</i> is pushed.<p> To perform strict 32-bit floating point addition, use <i>fadd</i> followed by <i>f2f</i>. To perform strict 64-bit floating point addition, use <i>fadd</i> followed by <i>f2d</i>.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="fdiv"> <font color="#FFFFFF" size="+5"> fdiv</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Divide <code>native float</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>fdiv</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{fdiv}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>fdiv</i> = 98 (0x62)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>native float</code>. The <code>native float</code> <i>result</i> is <i>value1 / value2</i>. The <i>result</i> is pushed onto the stack.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="fmul"> <font color="#FFFFFF" size="+5"> fmul</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Multiply <code>native float</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>fmul</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{fmul}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>fmul</i> = 97 (0x61)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>native float</code>. The <code>native float</code> <i>result</i> is <i>value1 * value2</i>. The <i>result</i> is pushed onto the stack.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="fneg"> <font color="#FFFFFF" size="+5"> fneg</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Negate <code>native float</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>fneg</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{fneg}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>fneg</i> = 100 (0x64)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>value</i> is popped from the stack as type <code>native float</code>. The <code>native float</code> <i>result</i> is <i>-value</i>. The <i>result</i> is pushed onto the stack.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="frem"> <font color="#FFFFFF" size="+5"> frem</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Remainder <code>native float</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>frem</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{frem}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>frem</i> = 99 (0x63)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>native float</code>. The <code>native float</code> <i>result</i> is <i>value1 % value2</i>. The <i>result</i> is pushed onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The remainder operation is similar to the C <code>fmod</code> function, not IEEE remainder.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="fsub"> <font color="#FFFFFF" size="+5"> fsub</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Subtract <code>native float</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>fsub</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{fsub}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>fsub</i> = 96 (0x60)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>native float</code>. The <code>native float</code> <i>result</i> is <i>value1 - value2</i>. The <i>result</i> is pushed onto the stack.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="iadd"> <font color="#FFFFFF" size="+5"> iadd</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Add <code>int32</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>iadd</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{iadd}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>iadd</i> = 67 (0x43)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int32</code>. The <code>int32</code> <i>result</i> is <i>value1 + value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 32 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type <code>int32</code>. If overflow occurs, then the sign of the result may not be the same as the sign of the mathematical sum of the two values.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>iadd</i> instruction can also be used to add values of type <code>uint32</code>.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="iadd_ovf"> <font color="#FFFFFF" size="+5"> iadd_ovf</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Add <code>int32</code> with overflow detection</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>iadd_ovf</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{iadd_ovf}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>iadd_ovf</i> = 68 (0x44)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int32</code>. The <code>int32</code> <i>result</i> is <i>value1 + value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 32 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type <code>int32</code>. If overflow occurs, then <code>System.OverflowException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.OverflowException</code> -- Raised if the true mathemetical result is too large to be represented as a value of type <code>int32</code>.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="iadd_ovf_un"> <font color="#FFFFFF" size="+5"> iadd_ovf_un</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Add <code>uint32</code> with overflow detection</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>iadd_ovf_un</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{iadd_ovf_un}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>iadd_ovf_un</i> = 69 (0x45)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>uint32</code>. The <code>uint32</code> <i>result</i> is <i>value1 + value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 32 low-order bits of the true mathematical result in a sufficiently wide unsigned format, represented as a value of type <code>uint32</code>. If overflow occurs, then <code>System.OverflowException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.OverflowException</code> -- Raised if the true mathemetical result is too large to be represented as a value of type <code>uint32</code>.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="idiv"> <font color="#FFFFFF" size="+5"> idiv</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Divide <code>int32</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>idiv</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{idiv}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>idiv</i> = 76 (0x4C)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int32</code>. The <code>int32</code> <i>result</i> is <i>value1 / value2</i>. The <i>result</i> is pushed onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.DivideByZeroException</code> -- Raised if <i>value2</i> is zero.</font><br><code>System.ArithmeticException</code> -- Raised if <i>value1</i> is -1 and <i>value2</i> is -2147483648.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="idiv_un"> <font color="#FFFFFF" size="+5"> idiv_un</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Divide <code>uint32</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>idiv_un</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{idiv_un}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>idiv_un</i> = 77 (0x4D)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>uint32</code>. The <code>uint32</code> <i>result</i> is <i>value1 / value2</i>. The <i>result</i> is pushed onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.DivideByZeroException</code> -- Raised if <i>value2</i> is zero.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="imul"> <font color="#FFFFFF" size="+5"> imul</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Multiply <code>int32</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>imul</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{imul}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>imul</i> = 73 (0x49)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int32</code>. The <code>int32</code> <i>result</i> is <i>value1 * value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 32 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type <code>int32</code>. If overflow occurs, then the sign of the result may not be the same as the sign of the mathematical multiplication of the two values.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>imul</i> instruction can also be used to multiply values of type <code>uint32</code>.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="imul_ovf"> <font color="#FFFFFF" size="+5"> imul_ovf</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Multiply <code>int32</code> with overflow detection</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>imul_ovf</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{imul_ovf}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>imul_ovf</i> = 74 (0x4A)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int32</code>. The <code>int32</code> <i>result</i> is <i>value1 * value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 32 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type <code>int32</code>. If overflow occurs, then <code>System.OverflowException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.OverflowException</code> -- Raised if the true mathemetical result is too large to be represented as a value of type <code>int32</code>.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="imul_ovf_un"> <font color="#FFFFFF" size="+5"> imul_ovf_un</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Multiply <code>uint32</code> with overflow detection</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>imul_ovf_un</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{imul_ovf_un}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>imul_ovf_un</i> = 75 (0x4B)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>uint32</code>. The <code>uint32</code> <i>result</i> is <i>value1 * value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 32 low-order bits of the true mathematical result in a sufficiently wide unsigned format, represented as a value of type <code>uint32</code>. If overflow occurs, then <code>System.OverflowException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.OverflowException</code> -- Raised if the true mathemetical result is too large to be represented as a value of type <code>uint32</code>.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="ineg"> <font color="#FFFFFF" size="+5"> ineg</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Negate <code>int32</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>ineg</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{ineg}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>ineg</i> = 80 (0x50)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>value</i> is popped from the stack as type <code>int32</code>. The <code>int32</code> <i>result</i> is <i>-value</i>. The <i>result</i> is pushed onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">To perform negation with overflow detection, use <i>isub_ovf</i> with the first argument set to 0 and the second argument set to <i>value</i>.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="irem"> <font color="#FFFFFF" size="+5"> irem</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Remainder <code>int32</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>irem</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{irem}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>irem</i> = 78 (0x4E)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int32</code>. The <code>int32</code> <i>result</i> is <i>value1 % value2</i>. The <i>result</i> is pushed onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.DivideByZeroException</code> -- Raised if <i>value2</i> is zero.</font><br><code>System.ArithmeticException</code> -- Raised if <i>value1</i> is -1 and <i>value2</i> is -2147483648.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="irem_un"> <font color="#FFFFFF" size="+5"> irem_un</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Remainder <code>uint32</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>irem_un</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{irem_un}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>irem_un</i> = 79 (0x4F)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>uint32</code>. The <code>uint32</code> <i>result</i> is <i>value1 % value2</i>. The <i>result</i> is pushed onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.DivideByZeroException</code> -- Raised if <i>value2</i> is zero.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="isub"> <font color="#FFFFFF" size="+5"> isub</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Subtract <code>int32</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>isub</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{isub}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>isub</i> = 70 (0x46)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int32</code>. The <code>int32</code> <i>result</i> is <i>value1 - value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 32 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type <code>int32</code>. If overflow occurs, then the sign of the result may not be the same as the sign of the mathematical difference of the two values.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>isub</i> instruction can also be used to subtract values of type <code>uint32</code>.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="isub_ovf"> <font color="#FFFFFF" size="+5"> isub_ovf</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Subtract <code>int32</code> with overflow detection</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>isub_ovf</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{isub_ovf}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>isub_ovf</i> = 71 (0x47)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int32</code>. The <code>int32</code> <i>result</i> is <i>value1 - value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 32 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type <code>int32</code>. If overflow occurs, then <code>System.OverflowException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.OverflowException</code> -- Raised if the true mathemetical result is too large to be represented as a value of type <code>int32</code>.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="isub_ovf_un"> <font color="#FFFFFF" size="+5"> isub_ovf_un</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Subtract <code>uint32</code> with overflow detection</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>isub_ovf_un</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{isub_ovf_un}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>isub_ovf_un</i> = 72 (0x48)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>uint32</code>. The <code>uint32</code> <i>result</i> is <i>value1 - value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 32 low-order bits of the true mathematical result in a sufficiently wide unsigned format, represented as a value of type <code>uint32</code>. If overflow occurs, then <code>System.OverflowException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.OverflowException</code> -- Raised if the true mathemetical result is too large to be represented as a value of type <code>uint32</code>.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="ladd"> <font color="#FFFFFF" size="+5"> ladd</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Add <code>int64</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>ladd</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{ladd}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>ladd</i> = 81 (0x51)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int64</code>. The <code>int64</code> <i>result</i> is <i>value1 + value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 64 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type <code>int64</code>. If overflow occurs, then the sign of the result may not be the same as the sign of the mathematical sum of the two values.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>ladd</i> instruction can also be used to add values of type <code>uint64</code>.<p> Values of type <code>int64</code> typically occupy 2 stack slots on 32-bit machines and 1 stack slot on 64-bit machines, although this is layout not fixed. When we say that <i>value1</i> and <i>value2</i> are popped, we assume that the correct number of stack slots for the machine are popped. Similarly when <i>result</i> is pushed.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="ladd_ovf"> <font color="#FFFFFF" size="+5"> ladd_ovf</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Add <code>int64</code> with overflow detection</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>ladd_ovf</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{ladd_ovf}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>ladd_ovf</i> = 82 (0x52)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int64</code>. The <code>int64</code> <i>result</i> is <i>value1 + value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 64 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type <code>int64</code>. If overflow occurs, then <code>System.OverflowException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.OverflowException</code> -- Raised if the true mathemetical result is too large to be represented as a value of type <code>int64</code>.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="ladd_ovf_un"> <font color="#FFFFFF" size="+5"> ladd_ovf_un</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Add <code>uint64</code> with overflow detection</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>ladd_ovf_un</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{ladd_ovf_un}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>ladd_ovf_un</i> = 83 (0x53)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>uint64</code>. The <code>uint64</code> <i>result</i> is <i>value1 + value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 64 low-order bits of the true mathematical result in a sufficiently wide unsignedcomplement format, represented as a value of type <code>uint64</code>. If overflow occurs, then <code>System.OverflowException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.OverflowException</code> -- Raised if the true mathemetical result is too large to be represented as a value of type <code>uint64</code>.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="ldiv"> <font color="#FFFFFF" size="+5"> ldiv</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Divide <code>int64</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>ldiv</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{ldiv}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>ldiv</i> = 90 (0x5A)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int64</code>. The <code>int64</code> <i>result</i> is <i>value1 / value2</i>. The <i>result</i> is pushed onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.DivideByZeroException</code> -- Raised if <i>value2</i> is zero.</font><br><code>System.ArithmeticException</code> -- Raised if <i>value1</i> is -1 and <i>value2</i> is -9223372036854775808. </font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="ldiv_un"> <font color="#FFFFFF" size="+5"> ldiv_un</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Divide <code>uint64</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>ldiv_un</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{ldiv_un}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>ldiv_un</i> = 91 (0x5B)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>uint64</code>. The <code>uint64</code> <i>result</i> is <i>value1 / value2</i>. The <i>result</i> is pushed onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.DivideByZeroException</code> -- Raised if <i>value2</i> is zero.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="lmul"> <font color="#FFFFFF" size="+5"> lmul</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Multiply <code>int64</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>lmul</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{lmul}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>lmul</i> = 87 (0x57)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int64</code>. The <code>int64</code> <i>result</i> is <i>value1 * value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 64 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type <code>int64</code>. If overflow occurs, then the sign of the result may not be the same as the sign of the mathematical multiplication of the two values.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>lmul</i> instruction can also be used to multiply values of type <code>uint64</code>.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="lmul_ovf"> <font color="#FFFFFF" size="+5"> lmul_ovf</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Multiply <code>int64</code> with overflow detection</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>lmul_ovf</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{lmul_ovf}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>lmul_ovf</i> = 88 (0x58)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int64</code>. The <code>int64</code> <i>result</i> is <i>value1 * value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 64 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type <code>int64</code>. If overflow occurs, then <code>System.OverflowException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.OverflowException</code> -- Raised if the true mathemetical result is too large to be represented as a value of type <code>int64</code>.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="lmul_ovf_un"> <font color="#FFFFFF" size="+5"> lmul_ovf_un</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Multiply <code>uint64</code> with overflow detection</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>lmul_ovf_un</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{lmul_ovf_un}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>lmul_ovf_un</i> = 89 (0x59)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>uint64</code>. The <code>uint64</code> <i>result</i> is <i>value1 * value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 64 low-order bits of the true mathematical result in a sufficiently wide unsignedcomplement format, represented as a value of type <code>uint64</code>. If overflow occurs, then <code>System.OverflowException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.OverflowException</code> -- Raised if the true mathemetical result is too large to be represented as a value of type <code>uint64</code>.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="lneg"> <font color="#FFFFFF" size="+5"> lneg</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Negate <code>int64</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>lneg</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{lneg}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>lneg</i> = 94 (0x5E)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>value</i> is popped from the stack as type <code>int64</code>. The <code>int64</code> <i>result</i> is <i>-value</i>. The <i>result</i> is pushed onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">To perform negation with overflow detection, use <i>lsub_ovf</i> with the first argument set to 0 and the second argument set to <i>value</i>.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="lrem"> <font color="#FFFFFF" size="+5"> lrem</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Remainder <code>int64</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>lrem</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{lrem}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>lrem</i> = 92 (0x5C)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int64</code>. The <code>int64</code> <i>result</i> is <i>value1 % value2</i>. The <i>result</i> is pushed onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.DivideByZeroException</code> -- Raised if <i>value2</i> is zero.</font><br><code>System.ArithmeticException</code> -- Raised if <i>value1</i> is -1 and <i>value2</i> is -9223372036854775808. </font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="lrem_un"> <font color="#FFFFFF" size="+5"> lrem_un</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Remainder <code>uint64</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>lrem_un</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{lrem_un}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>lrem_un</i> = 93 (0x5D)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>uint64</code>. The <code>uint64</code> <i>result</i> is <i>value1 % value2</i>. The <i>result</i> is pushed onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.DivideByZeroException</code> -- Raised if <i>value2</i> is zero.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="lsub"> <font color="#FFFFFF" size="+5"> lsub</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Subtract <code>int64</code></td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>lsub</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{lsub}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>lsub</i> = 84 (0x54)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int64</code>. The <code>int64</code> <i>result</i> is <i>value1 - value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 64 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type <code>int64</code>. If overflow occurs, then the sign of the result may not be the same as the sign of the mathematical difference of the two values.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>lsub</i> instruction can also be used to subtract values of type <code>uint64</code>.</td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="lsub_ovf"> <font color="#FFFFFF" size="+5"> lsub_ovf</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Subtract <code>int64</code> with overflow detection</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>lsub_ovf</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{lsub_ovf}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>lsub_ovf</i> = 85 (0x55)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>int64</code>. The <code>int64</code> <i>result</i> is <i>value1 - value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 64 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type <code>int64</code>. If overflow occurs, then <code>System.OverflowException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.OverflowException</code> -- Raised if the true mathemetical result is too large to be represented as a value of type <code>int64</code>.</font><br></td></tr></table><br><br><table cellpadding="5" cellspacing="0" bordercolor="#000000" border=" 1" align="center" width="80%"> <tr bgcolor="#7F7F7F" border="2"><td border="0" width="30%"> <a name="lsub_ovf_un"> <font color="#FFFFFF" size="+5"> lsub_ovf_un</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Subtract <code>uint64</code> with overflow detection</td></tr><tr border="0"><td border="0"> · <b>Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>lsub_ovf_un</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Direct Format </b></td><td border="0"><table border="0" bordercolor="#AAAAAA" cellpadding="6" cellspacing="0"><tr><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>{lsub_ovf_un}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>lsub_ovf_un</i> = 86 (0x56)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, value2</i> => <i>..., result</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Both <i>value1</i> and <i>value2</i> are popped from the stack as type <code>uint64</code>. The <code>uint64</code> <i>result</i> is <i>value1 - value2</i>. The <i>result</i> is pushed onto the stack.<p> The result is the 64 low-order bits of the true mathematical result in a sufficiently wide unsignedcomplement format, represented as a value of type <code>uint64</code>. If overflow occurs, then <code>System.OverflowException</code> is thrown.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.OverflowException</code> -- Raised if the true mathemetical result is too large to be represented as a value of type <code>uint64</code>.</font><br></td></tr></table><br><br><p align="center"> <font size="-2">Copyright © Southern Storm Software Pty Ltd 2002 <br> Licensed under GNU FDL </font></p></body></html>