<!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"> Local variable handling </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="#bfixup"><b>bfixup</b></a></td><td> <a href="#bload"><b>bload</b></a></td><td> <a href="#bstore"><b>bstore</b></a></td><td> <a href="#dfixup"><b>dfixup</b></a></td></tr><tr><td> <a href="#ffixup"><b>ffixup</b></a></td><td> <a href="#iload"><b>iload</b></a></td><td> <a href="#iload_<n>"><b>iload_<n></b></a></td><td> <a href="#istore"><b>istore</b></a></td></tr><tr><td> <a href="#istore_<n>"><b>istore_<n></b></a></td><td> <a href="#maddr"><b>maddr</b></a></td><td> <a href="#mk_local_1"><b>mk_local_1</b></a></td><td> <a href="#mk_local_2"><b>mk_local_2</b></a></td></tr><tr><td> <a href="#mk_local_3"><b>mk_local_3</b></a></td><td> <a href="#mk_local_n"><b>mk_local_n</b></a></td><td> <a href="#mload"><b>mload</b></a></td><td> <a href="#mstore"><b>mstore</b></a></td></tr><tr><td> <a href="#pload"><b>pload</b></a></td><td> <a href="#pload_<n>"><b>pload_<n></b></a></td><td> <a href="#pstore"><b>pstore</b></a></td><td> <a href="#pstore_<n>"><b>pstore_<n></b></a></td></tr><tr><td> <a href="#sfixup"><b>sfixup</b></a></td><td> <a href="#waddr"><b>waddr</b></a></td><td> </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="bfixup"> <font color="#FFFFFF" size="+5"> bfixup</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Fix up <code>int8</code> variable</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>bfixup</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>bfixup</i></td></tr><tr><td align="center" width="100"><i>N[4]</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>{bfixup}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>bfixup</i> = 25 (0x19)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Retrieve the contents of position <i>N</i> in the local variable frame, truncate the value to 8 bits and write it back to the same variable. The destination is aligned at the start of the stack word that contains the variable.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction is used to align <code>int8</code> and <code>uint8</code> values that were passed as arguments to the current method.<p> The result is guaranteed to be aligned on the start of a stack word so that <i>waddr M</i> will push the correct address of the byte.<p> This instruction is not normally required on little-endian platforms, but it is definitely required on big-endian platforms.<p> The contents of an <code>int8</code> argument can be fetched using <i>waddr N, bread</i> once <i>bfixup</i> has been used to align its contents.</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="bload"> <font color="#FFFFFF" size="+5"> bload</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Load <code>uint8</code> variable onto the stack</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>bload</i></td></tr><tr><td align="center" width="100"><i>N[1]</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>{bload}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>bload</i> = 250 (0xFA)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., value</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Load the <code>uint8</code> variable from position <i>N</i> in the local variable frame and push its <i>value</i> onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction is a quicker variant of <i>waddr N, bread</i>.<p> This instruction can also be used to load <code>bool</code> values 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="bstore"> <font color="#FFFFFF" size="+5"> bstore</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Store the top of stack into <code>uint8</code> variable</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>bstore</i></td></tr><tr><td align="center" width="100"><i>N[1]</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>{bstore}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>bstore</i> = 251 (0xFB)<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">Pop <i>value</i> from the stack as type <code>int32</code> and store it at position <i>N</i> in the local variable frame, truncated to the type <code>uint8</code>. </td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction is a quicker variant of <i>waddr N, bwrite_r</i>.<p> This instruction can also be used to store <code>bool</code> values from 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="dfixup"> <font color="#FFFFFF" size="+5"> dfixup</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Fix up <code>float64</code> variable</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>dfixup</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>dfixup</i></td></tr><tr><td align="center" width="100"><i>N[4]</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>{dfixup}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>dfixup</i> = 28 (0x1C)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Retrieve the contents of position <i>N</i> in the local variable frame as type <code>native float</code>, truncate the value to <code>float64</code> and write it back to the same variable. The destination is aligned at the start of the stack word that contains the variable.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction is used to convert <code>native float</code> values that were passed as arguments to the current method into the <code>float64</code> for internal local variable access.<p> The result is guaranteed to be aligned on the start of a stack word so that <i>waddr M</i> will push the correct address of the <code>float64</code> value.<p> The contents of a <code>float64</code> argument can be fetched using <i>waddr N, dread</i> once <i>dfixup</i> has been used to convert its contents.</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="ffixup"> <font color="#FFFFFF" size="+5"> ffixup</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Fix up <code>float32</code> variable</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>ffixup</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>ffixup</i></td></tr><tr><td align="center" width="100"><i>N[4]</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>{ffixup}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>ffixup</i> = 27 (0x1B)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Retrieve the contents of position <i>N</i> in the local variable frame as type <code>native float</code>, truncate the value to <code>float32</code> and write it back to the same variable. The destination is aligned at the start of the stack word that contains the variable.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction is used to convert <code>native float</code> values that were passed as arguments to the current method into the <code>float32</code> for internal local variable access.<p> The result is guaranteed to be aligned on the start of a stack word so that <i>waddr M</i> will push the correct address of the <code>float32</code> value.<p> The contents of a <code>float32</code> argument can be fetched using <i>waddr N, fread</i> once <i>ffixup</i> has been used to convert its contents.</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="iload"> <font color="#FFFFFF" size="+5"> iload</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Load <code>int32</code> variable onto the stack</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>iload</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>iload</i></td></tr><tr><td align="center" width="100"><i>N[4]</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>{iload}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>iload</i> = 5 (0x05)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., value</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Load the <code>int32</code> variable from position <i>N</i> in the local variable frame and push its <i>value</i> onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction can also be used to load variables of type <code>uint32</code> 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="iload_<n>"> <font color="#FFFFFF" size="+5"> iload_<n></font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Load <code>int32</code> variable <i>n</i> onto the stack</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>iload_<n></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>{iload_<n>}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>iload_0</i> = 1 (0x01)<br><i>iload_1</i> = 2 (0x02)<br><i>iload_2</i> = 3 (0x03)<br><i>iload_3</i> = 4 (0x04)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., value</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Load the <code>int32</code> variable from position <i>n</i> in the local variable frame and push its <i>value</i> onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">These instructions can also be used to load variables of type <code>uint32</code> 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="istore"> <font color="#FFFFFF" size="+5"> istore</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Store the top of stack into <code>int32</code> variable</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>istore</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>istore</i></td></tr><tr><td align="center" width="100"><i>N[4]</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>{istore}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>istore</i> = 15 (0x0F)<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">Pop <i>value</i> from the stack as type <code>int32</code> and store it at position <i>N</i> in the local variable frame. </td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction can also be used to store to variables 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="istore_<n>"> <font color="#FFFFFF" size="+5"> istore_<n></font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Store the top of stack into <code>int32</code> variable <i>n</i></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>istore_<n></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>{istore_<n>}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>istore_0</i> = 11 (0x0B)<br><i>istore_1</i> = 12 (0x0C)<br><i>istore_2</i> = 13 (0x0D)<br><i>istore_3</i> = 14 (0x0E)<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">Pop <i>value</i> from the stack as type <code>int32</code> and store it at position <i>n</i> in the local variable frame. </td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">These instructions can also be used to store to variables 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="maddr"> <font color="#FFFFFF" size="+5"> maddr</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Load the address of a stack word onto the stack</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>maddr</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>maddr</i></td></tr><tr><td align="center" width="100"><i>N[4]</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>{maddr}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>maddr</i> = 24 (0x18)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., pointer</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Set <i>pointer</i> to the address of the word at <i>N</i> positions down the stack. Push <i>pointer</i> onto the stack as type <code>ptr</code>. <i>N == 1</i> indicates the address of the top-most stack word prior to the operation. </td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction is typically used to get the address of a managed value on the stack, so that the value can be manipulated with pointer operations.</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="mk_local_1"> <font color="#FFFFFF" size="+5"> mk_local_1</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Make one local variable slot</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>mk_local_1</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>{mk_local_1}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>mk_local_1</i> = 29 (0x1D)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., zero</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Push a single zeroed word onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction is used to allocate local variable space at the start of a method.</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="mk_local_2"> <font color="#FFFFFF" size="+5"> mk_local_2</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Make two local variable slots</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>mk_local_2</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>{mk_local_2}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>mk_local_2</i> = 30 (0x1E)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., zero1, zero2</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Push two zeroed words onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction is used to allocate local variable space at the start of a method.</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="mk_local_3"> <font color="#FFFFFF" size="+5"> mk_local_3</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Make three local variable slots</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>mk_local_3</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>{mk_local_3}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>mk_local_3</i> = 31 (0x1F)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., zero1, zero2, zero3</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Push three zeroed words onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction is used to allocate local variable space at the start of a method.</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="mk_local_n"> <font color="#FFFFFF" size="+5"> mk_local_n</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Make <i>N</i> local variable slots</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>mk_local_n</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>mk_local_n</i></td></tr><tr><td align="center" width="100"><i>N[4]</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>{mk_local_n}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>mk_local_n</i> = 32 (0x20)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., zero1, ..., zeroN</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Push <i>N</i> zeroed words onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction is used to allocate local variable space at the start of a method.</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="mload"> <font color="#FFFFFF" size="+5"> mload</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Load multiple stack words from a variable onto the stack</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>mload</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr><tr><td align="center" width="100"><i>M[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>mload</i></td></tr><tr><td align="center" width="100"><i>N[4]</i></td></tr><tr><td align="center" width="100"><i>M[4]</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>{mload}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr><tr><td align="center" width="100"><i>M</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>mload</i> = 21 (0x15)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., value1, ..., valueM</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Load the <i>M</i> stack words from position <i>N</i> in the local variable frame and push them 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="mstore"> <font color="#FFFFFF" size="+5"> mstore</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Store multiple stack words from the stack to a variable</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>mstore</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr><tr><td align="center" width="100"><i>M[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>mstore</i></td></tr><tr><td align="center" width="100"><i>N[4]</i></td></tr><tr><td align="center" width="100"><i>M[4]</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>{mstore}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr><tr><td align="center" width="100"><i>M</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>mstore</i> = 22 (0x16)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., value1, ..., valueM</i> => <i>...</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Pop the <i>M</i> stack words from the top of the stack and store them at position <i>N</i> in the local variable frame.</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="pload"> <font color="#FFFFFF" size="+5"> pload</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Load <code>ptr</code> variable onto the stack</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>pload</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>pload</i></td></tr><tr><td align="center" width="100"><i>N[4]</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>{pload}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>pload</i> = 10 (0x0A)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., value</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Load the <code>ptr</code> variable from position <i>N</i> in the local variable frame and push its <i>value</i> onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction must not be confused with <i>iload</i>. Values of type <code>int32</code> and <code>ptr</code> do not necessarily occupy the same amount of space in a stack word on all platforms.</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="pload_<n>"> <font color="#FFFFFF" size="+5"> pload_<n></font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Load <code>ptr</code> variable <i>n</i> onto the stack</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>pload_<n></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>{pload_<n>}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>pload_0</i> = 6 (0x06)<br><i>pload_1</i> = 7 (0x07)<br><i>pload_2</i> = 8 (0x08)<br><i>pload_3</i> = 9 (0x09)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., value</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Load the <code>ptr</code> variable from position <i>n</i> in the local variable frame and push its <i>value</i> onto the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">These instructions must not be confused with the <i>iload_<n></i> instructions. Values of type <code>int32</code> and <code>ptr</code> do not necessarily occupy the same amount of space in a stack word on all platforms.</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="pstore"> <font color="#FFFFFF" size="+5"> pstore</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Store the top of stack into <code>ptr</code> variable</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>pstore</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>pstore</i></td></tr><tr><td align="center" width="100"><i>N[4]</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>{pstore}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>pstore</i> = 20 (0x14)<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">Pop <i>value</i> from the stack as type <code>ptr</code> and store it at position <i>N</i> in the local variable frame. </td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instructions must not be confused with <i>istore</i>. Values of type <code>int32</code> and <code>ptr</code> do not necessarily occupy the same amount of space in a stack word on all platforms.</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="pstore_<n>"> <font color="#FFFFFF" size="+5"> pstore_<n></font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Store the top of stack into <code>ptr</code> variable <i>n</i></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>pstore_<n></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>{pstore_<n>}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>pstore_0</i> = 16 (0x10)<br><i>pstore_1</i> = 17 (0x11)<br><i>pstore_2</i> = 18 (0x12)<br><i>pstore_3</i> = 19 (0x13)<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">Pop <i>value</i> from the stack as type <code>ptr</code> and store it at position <i>n</i> in the local variable frame. </td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">These instructions must not be confused with the <i>istore_<n></i> instructions. Values of type <code>int32</code> and <code>ptr</code> do not necessarily occupy the same amount of space in a stack word on all platforms.</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="sfixup"> <font color="#FFFFFF" size="+5"> sfixup</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Fix up <code>int16</code> variable</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>sfixup</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>sfixup</i></td></tr><tr><td align="center" width="100"><i>N[4]</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>{sfixup}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>sfixup</i> = 26 (0x1A)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Retrieve the contents of position <i>N</i> in the local variable frame, truncate the value to 16 bits and write it back to the same variable. The destination is aligned at the start of the stack word that contains the variable.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction is used to align <code>int16</code> and <code>uint16</code> values that were passed as arguments to the current method.<p> The result is guaranteed to be aligned on the start of a stack word so that <i>waddr M</i> will push the correct address of the 16 bit value.<p> This instruction is not normally required on little-endian platforms, but it is definitely required on big-endian platforms.<p> The contents of an <code>int16</code> argument can be fetched using <i>waddr N, sread</i> once <i>sfixup</i> has been used to align its contents.</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="waddr"> <font color="#FFFFFF" size="+5"> waddr</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Load the address of a variable onto the stack</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>waddr</i></td></tr><tr><td align="center" width="100"><i>N[1]</i></td></tr></table></td><td><table border="1" cellpadding="6" cellspacing="0"><tr><td align="center" width="100"><i>wide</i></td></tr><tr><td align="center" width="100"><i>waddr</i></td></tr><tr><td align="center" width="100"><i>N[4]</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>{waddr}</i></td></tr><tr><td align="center" width="100"><i>N</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>waddr</i> = 23 (0x17)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., pointer</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Set <i>pointer</i> to the address of the word at position <i>N</i> in the local variable frame. Push <i>pointer</i> onto the stack as type <code>ptr</code>.</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>