<!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"> Call management instructions </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="#call"><b>call</b></a></td><td> <a href="#call_ctor"><b>call_ctor</b></a></td><td> <a href="#call_interface"><b>call_interface</b></a></td><td> <a href="#call_native"><b>call_native</b></a></td></tr><tr><td> <a href="#call_native_raw"><b>call_native_raw</b></a></td><td> <a href="#call_native_void"><b>call_native_void</b></a></td><td> <a href="#call_native_void_raw"><b>call_native_void_raw</b></a></td><td> <a href="#call_virtual"><b>call_virtual</b></a></td></tr><tr><td> <a href="#cctor_once"><b>cctor_once</b></a></td><td> <a href="#ldftn"><b>ldftn</b></a></td><td> <a href="#ldinterfftn"><b>ldinterfftn</b></a></td><td> <a href="#ldvirtftn"><b>ldvirtftn</b></a></td></tr><tr><td> <a href="#pack_varargs"><b>pack_varargs</b></a></td><td> <a href="#push_thread"><b>push_thread</b></a></td><td> <a href="#push_thread_raw"><b>push_thread_raw</b></a></td><td> <a href="#pushdown"><b>pushdown</b></a></td></tr><tr><td> <a href="#return"><b>return</b></a></td><td> <a href="#return_1"><b>return_1</b></a></td><td> <a href="#return_2"><b>return_2</b></a></td><td> <a href="#return_n"><b>return_n</b></a></td></tr><tr><td> <a href="#set_num_args"><b>set_num_args</b></a></td><td> <a href="#tail_call"><b>tail_call</b></a></td><td> <a href="#waddr_native_<n>"><b>waddr_native_<n></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="call"> <font color="#FFFFFF" size="+5"> call</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Call a method</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>call</i></td></tr><tr><td align="center" width="100"><i>mptr</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>{call}</i></td></tr><tr><td align="center" width="100"><i>mptr</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>call</i> = 206 (0xCE)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>call</i> instruction effects a method call to <i>mptr</i>. The call proceeds as follows: <ul> <li>The method is converted into CVM bytecode. If this is not possible, then <code>System.Security.VerificationException</code> will be thrown.</li> <li>A new call frame is allocated.</li> <li>The current method, program counter, frame pointer, and exception frame height are saved into the call frame.</li> <li>The program counter is set to the first instruction in the method <i>mptr</i>.</li> <li>The current method is set to <i>mptr</i>.</li> </ul> </td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>mptr</i> value is a 32-bit or 64-bit method pointer reference.<p> The <i>call</i> instruction does not set up a new frame pointer. The <i>set_num_args</i> instruction is used to set up local variable frames at the start of the new method's code. The <i>return*</i> instructions are responsible for popping the method arguments from the stack at method exit.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.Security.VerificationException</code> -- Raised if the method could not be translated into CVM bytecode.</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="call_ctor"> <font color="#FFFFFF" size="+5"> call_ctor</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Call a constructor</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>call_ctor</i></td></tr><tr><td align="center" width="100"><i>mptr</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>{call_ctor}</i></td></tr><tr><td align="center" width="100"><i>mptr</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>call_ctor</i> = 207 (0xCF)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>call_ctor</i> instruction effects a method call to the constructor identified by <i>mptr</i>.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">Constructors in the CVM system have two entry points: one which creates a block of memory and then initializes it; and the other which initializes a pre-allocated block. The particular entry point is chosen based on the constructor's usage in the original CIL bytecode: <ul> <li>If the CIL bytecode invoked the constructor method using <i>newobj</i>, then <i>call_ctor</i> should be used.</li> <li>If the CIL bytecode invoked a parent class's constructor method directly using the IL <i>call</i> instruction, then <i>call</i> should be used.</li> </ul> See the description of the <i>call</i> instruction for a full account of frame handling, argument handling, etc.</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="call_interface"> <font color="#FFFFFF" size="+5"> call_interface</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Call an interface method</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>call_interface</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><tr><td align="center" width="100"><i>cptr</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>call_interface</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><tr><td align="center" width="100"><i>cptr</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>{call_interface}</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><tr><td align="center" width="100"><i>cptr</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>call_interface</i> = 213 (0xD5)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>call_interface</i> instruction effects an interface method call. The value <i>N</i> indicates the position of the <code>this</code> pointer on the stack: 1 indicates the top of stack, 2 indicates the stack word just below the top-most stack word, etc. The value <i>M</i> is the offset into the interface's vtable for the method. The value <i>cptr</i> indicates the interface class pointer.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">See the description of the <i>call</i> instruction for a full account of frame handling, argument handling, etc.<p> The <i>cptr</i> value is a native pointer that may be either 32 or 64 bits in size, depending upon the platform.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.NullReferenceException</code> -- Raised if the <code>this</code> pointer is <code>null</code>.</font><br><code>System.Security.VerificationException</code> -- Raised if the method could not be translated into CVM bytecode.</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="call_native"> <font color="#FFFFFF" size="+5"> call_native</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Call a native function that has a return value</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>call_native</i></td></tr><tr><td align="center" width="100"><i>function</i></td></tr><tr><td align="center" width="100"><i>cif</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>{call_native}</i></td></tr><tr><td align="center" width="100"><i>function</i></td></tr><tr><td align="center" width="100"><i>cif</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>call_native</i> = 208 (0xD0)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., address</i> => <i>...</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>call_native</i> instruction effects a native function call to <i>function</i>, using <i>cif</i> to define the format of the function arguments and return value. The return value is stored at <i>address</i>. The arguments are assumed to have already been stored into the "native argument buffer" using the <i>waddr_native*</i> instructions.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">Both <i>function</i> and <i>cif</i> are native pointers, which may be either 32 or 64 bits in size, depending upon the platform.<p> Native function calls occur in CIL "InternalCall" and "PInvoke" methods. For each such method, the CVM translation process creates a CVM stub method that transfers the arguments on the CVM stack to the native argument buffer, makes the native call, and then puts the function's return value back onto the CVM stack prior to exiting.</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="call_native_raw"> <font color="#FFFFFF" size="+5"> call_native_raw</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Call a native function that has a return value, using a raw call</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>call_native_raw</i></td></tr><tr><td align="center" width="100"><i>function</i></td></tr><tr><td align="center" width="100"><i>cif</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>{call_native_raw}</i></td></tr><tr><td align="center" width="100"><i>function</i></td></tr><tr><td align="center" width="100"><i>cif</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>call_native_raw</i> = 210 (0xD2)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., avalue, rvalue</i> => <i>...</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>call_native_raw</i> instruction effects a native function call to <i>function</i>, using <i>cif</i> to define the format of the function arguments and return value. The arguments are stored on the stack beginning at <i>avalue</i>. The return value is stored at <i>rvalue</i>.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction differs from <i>call_native</i> in the manner in which the call is performed. This instruction uses a "raw" call, which is only applicable on some platforms. The arguments are passed on the stack, instead of in a separate native argument buffer.</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="call_native_void"> <font color="#FFFFFF" size="+5"> call_native_void</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Call a native function with no return value</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>call_native_void</i></td></tr><tr><td align="center" width="100"><i>function</i></td></tr><tr><td align="center" width="100"><i>cif</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>{call_native_void}</i></td></tr><tr><td align="center" width="100"><i>function</i></td></tr><tr><td align="center" width="100"><i>cif</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>call_native_void</i> = 209 (0xD1)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>call_native_void</i> instruction is identical to <i>call_native</i>, except that the native function is assumed not to have a return value.</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="call_native_void_raw"> <font color="#FFFFFF" size="+5"> call_native_void_raw</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Call a native function with no return value using a raw call</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>call_native_void_raw</i></td></tr><tr><td align="center" width="100"><i>function</i></td></tr><tr><td align="center" width="100"><i>cif</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>{call_native_void_raw}</i></td></tr><tr><td align="center" width="100"><i>function</i></td></tr><tr><td align="center" width="100"><i>cif</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>call_native_void_raw</i> = 211 (0xD3)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., avalue</i> => <i>...</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>call_native_void_raw</i> instruction is identical to <i>call_native_raw</i>, except that the native function is assumed not to have a return value.</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="call_virtual"> <font color="#FFFFFF" size="+5"> call_virtual</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Call a virtual method</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>call_virtual</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>call_virtual</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>{call_virtual}</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>call_virtual</i> = 212 (0xD4)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>call_virtual</i> instruction effects a virtual method call. The value <i>N</i> indicates the position of the <code>this</code> pointer on the stack: 1 indicates the top of stack, 2 indicates the stack word just below the top-most stack word, etc. The value <i>M</i> is the offset into the object's vtable for the method.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">See the description of the <i>call</i> instruction for a full account of frame handling, argument handling, etc.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Exceptions </b></td><td border="0"><code>System.NullReferenceException</code> -- Raised if the <code>this</code> pointer is <code>null</code>.</font><br><code>System.Security.VerificationException</code> -- Raised if the method could not be translated into CVM bytecode.</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="cctor_once"> <font color="#FFFFFF" size="+5"> cctor_once</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Block the current method from being executed more than once</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>cctor_once</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>{cctor_once}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>cctor_once</i> = 223 (0xDF)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>cctor_once</i> instruction is typically the first instruction in a static constructor. If this is the first time that the static constructor has been called, then the method will continue. Otherwise, the effect will be the same as for <i>return</i>.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction permits CVM bytecode to call static constructors from anywhere in the system, without having to worry about whether it has already been called. This instruction will also prevent recursive static constructor calls from looping indefinitely.</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="ldftn"> <font color="#FFFFFF" size="+5"> ldftn</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 function method 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>prefix</i></td></tr><tr><td align="center" width="100"><i>ldftn</i></td></tr><tr><td align="center" width="100"><i>method</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>{ltftn}</i></td></tr><tr><td align="center" width="100"><i>method</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>ldftn</i> = 255, 23 (0xFF, 0x17)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>...</i> => <i>..., method</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Push <i>method</i> onto the stack as a <code>ptr</code> value.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>method</i> value may be either 32 or 64 bits in size, depending upon the platform.</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="ldinterfftn"> <font color="#FFFFFF" size="+5"> ldinterfftn</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 an interface function method 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>prefix</i></td></tr><tr><td align="center" width="100"><i>ldinterfftn</i></td></tr><tr><td align="center" width="100"><i>index[4]</i></td></tr><tr><td align="center" width="100"><i>class</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>{ltinterfftn}</i></td></tr><tr><td align="center" width="100"><i>index</i></td></tr><tr><td align="center" width="100"><i>class</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>ldinterfftn</i> = 255, 25 (0xFF, 0x19)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., object</i> => <i>..., address</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Pop <i>object</i> from the stack as type <code>ptr</code> and locate the virtual method at <i>index</i> within the object's interface vtable for the interface <i>class</i>. The address of this method is pushed onto the stack as type <code>ptr</code>.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>class</i> value may be either 32 or 64 bits in size, depending upon the platform.</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="ldvirtftn"> <font color="#FFFFFF" size="+5"> ldvirtftn</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 virtual function method 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>prefix</i></td></tr><tr><td align="center" width="100"><i>ldvirtftn</i></td></tr><tr><td align="center" width="100"><i>index[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>{ltvirtftn}</i></td></tr><tr><td align="center" width="100"><i>index</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>ldvirtftn</i> = 255, 24 (0xFF, 0x18)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., object</i> => <i>..., address</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Pop <i>object</i> from the stack as type <code>ptr</code> and locate the virtual method at <i>index</i> within the object's vtable. The address of this method is pushed onto the stack as type <code>ptr</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="pack_varargs"> <font color="#FFFFFF" size="+5"> pack_varargs</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Pack a set of arguments for a vararg method call</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>pack_varargs</i></td></tr><tr><td align="center" width="100"><i>first[4] </i></td></tr><tr><td align="center" width="100"><i>num[4]</i></td></tr><tr><td align="center" width="100"><i>signature</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>{pack_varargs}</i></td></tr><tr><td align="center" width="100"><i>first</i></td></tr><tr><td align="center" width="100"><i>num</i></td></tr><tr><td align="center" width="100"><i>signature</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>pack_varargs</i> = 255, 26 (0xFF, 0x1A)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., arg1, ..., argN</i> => <i>..., array</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Pop <i>N</i> words from the stack and pack them into an array of type <code>System.Object</code>. The <i>first</i> value is the index of the first parameter in <i>signature</i> that corresponds to a word on the stack. The <i>num</i> value is the number of logical arguments to be packed. The final <i>array</i> is pushed onto the stack as type <code>ptr</code>. </td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>signature</i> value may be either 32 or 64 bits in size, depending upon the platform, and will usually include a sentinel marker at position <i>first - 1</i>. The <i>signature</i> may not have a sentinel marker if <i>num</i> is zero.<p> This instruction is used to pack the arguments for a call to a <code>vararg</code> method. The method itself will receive a single argument containing a pointer to the array.</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="push_thread"> <font color="#FFFFFF" size="+5"> push_thread</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Push the thread identifier onto the native argument 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>push_thread</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>{push_thread}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>push_thread</i> = 220 (0xDC)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Pushes an identifier for the current thread onto the native argument stack. This is only used for "InternalCall" methods. "PInvoke" methods should use <i>waddr_native_m1</i> instead. </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="push_thread_raw"> <font color="#FFFFFF" size="+5"> push_thread_raw</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Push the thread identifier onto the native argument stack as a raw value</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>push_thread_raw</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>{push_thread_raw}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>push_thread_raw</i> = 221 (0xDD)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Pushes an identifier for the current thread onto the native argument stack. This is only used for "InternalCall" methods. This instruction differs from <i>push_thread</i> in that it is intended for use with <i>call_native_raw</i> instead of <i>call_native</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="pushdown"> <font color="#FFFFFF" size="+5"> pushdown</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Push the <code>ptr</code> value at the top of stack down and duplicate it twice</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>pushdown</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>{pushdown}</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>pushdown</i> = 222 (0xDE)<br></td></tr><tr border="0"><td border="0"> · <b>Stack</b></td><td border="0"><i>..., val1, ..., valN, value</i> => <i>..., value, value, val1, ..., valN</i></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">The <i>value</i> at the top of the stack is popped, pushed down <i>N</i> stack words, and duplicated twice.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This instruction is used in combination with <i>new</i> to construct a block of memory for a new object. The block is allocated, and then pushed down. The lowest duplicated <i>value</i> becomes the return value for the constructor method. The other duplicated <i>value</i> becomes the <code>this</code> argument for the constructor 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="return"> <font color="#FFFFFF" size="+5"> return</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Return from the current method with no return value</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>return</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>{return}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>return</i> = 214 (0xD6)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Return control to the method that called the current method, as follows: <ul> <li>Set the top of stack pointer to the frame pointer.</li> <li>Pop the top-most call frame from the call frame stack.</li> <li>Retrieve the method pointer, progrm counter, exception frame height, and the frame pointer from the call frame.</li> </ul> </td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>set_num_args</i> instruction has previously set the frame pointer to the address of the first argument. When <i>return</i> is executed, the first step above will pop all of the arguments.</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="return_1"> <font color="#FFFFFF" size="+5"> return_1</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Return from the current method with a single stack word as a return value</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>return_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>{return_1}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>return_1</i> = 215 (0xD7)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Return control to the method that called the current method, as follows: <ul> <li>Copy the top-most word on the stack to the position indicated by the frame pointer, and then set the top of stack pointer to point just after the copy.</li> <li>Pop the top-most call frame from the call frame stack.</li> <li>Retrieve the method pointer, progrm counter, exception frame height, and the frame pointer from the call frame.</li> </ul> </td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>set_num_args</i> instruction has previously set the frame pointer to the address of the first argument. When <i>return_1</i> is executed, the first step above will pop all of the arguments, with the single-word return value left in their place.</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="return_2"> <font color="#FFFFFF" size="+5"> return_2</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Return from the current method with two stack words as the return value</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>return_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>{return_2}</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>return_2</i> = 216 (0xD8)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Return control to the method that called the current method, as follows: <ul> <li>Copy the two top-most words on the stack to the position indicated by the frame pointer, and then set the top of stack pointer to point just after the two copied words.</li> <li>Pop the top-most call frame from the call frame stack.</li> <li>Retrieve the method pointer, progrm counter, exception frame height, and the frame pointer from the call frame.</li> </ul> </td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>set_num_args</i> instruction has previously set the frame pointer to the address of the first argument. When <i>return_2</i> is executed, the first step above will pop all of the arguments, with the double-word return value left in their place.</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="return_n"> <font color="#FFFFFF" size="+5"> return_n</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Return from the current method with <i>n</i> stack words as the return value</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>return_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>{return_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>return_n</i> = 217 (0xD9)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Return control to the method that called the current method, as follows: <ul> <li>Copy the <i>n</i> top-most words on the stack to the position indicated by the frame pointer, and then set the top of stack pointer to point just after the <i>n</i> copied words.</li> <li>Pop the top-most call frame from the call frame stack.</li> <li>Retrieve the method pointer, progrm counter, exception frame height, and the frame pointer from the call frame.</li> </ul> </td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">The <i>set_num_args</i> instruction has previously set the frame pointer to the address of the first argument. When <i>return_n</i> is executed, the first step above will pop all of the arguments, with the <i>n</i>-word return value left in their place.</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="set_num_args"> <font color="#FFFFFF" size="+5"> set_num_args</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Set the number of arguments for the current method</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>set_num_args</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>set_num_args</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>{set_num_args}</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>set_num_args</i> = 66 (0x42)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Set the frame pointer for the current method to the address of the <i>N</i>'th word down the stack.</td></tr><tr border="0"><td border="0" valign="top"> · <b>Notes </b></td><td border="0">This is typically the first instruction in a method, which sets up 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="tail_call"> <font color="#FFFFFF" size="+5"> tail_call</font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Call a method using tail call semantics</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>tail_call</i></td></tr><tr><td align="center" width="100"><i>mptr</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>{tail_call}</i></td></tr><tr><td align="center" width="100"><i>mptr</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>tail_call</i> = 255, 22 (0xFF, 0x16)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">This instruction is identical to <i>call</i>, except that it performs a tail-optimized call to the method identified by <i>mptr</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="waddr_native_<n>"> <font color="#FFFFFF" size="+5"> waddr_native_<n></font></a></td><td align="right" border="0"> </td></tr><tr border="1"><td border="0"> · <b>Operation</b></td><td border="0">Set position <i>n</i> of the native argument buffer to the address of a local 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>waddr_native_<n></i></td></tr><tr><td align="center" width="100"><i>V[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_native_<n></i></td></tr><tr><td align="center" width="100"><i>V[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_native_<n>}</i></td></tr><tr><td align="center" width="100"><i>V</i></td></tr></table></td></tr></table></td></tr><tr border="0"><td border="0"> · <b>Forms </b></td><td border="0"><i>waddr_native_m1</i> = 241 (0xF1)<br><i>waddr_native_0</i> = 242 (0xF2)<br><i>waddr_native_1</i> = 243 (0xF3)<br><i>waddr_native_2</i> = 244 (0xF4)<br><i>waddr_native_3</i> = 245 (0xF5)<br><i>waddr_native_4</i> = 246 (0xF6)<br><i>waddr_native_5</i> = 247 (0xF7)<br><i>waddr_native_6</i> = 248 (0xF8)<br><i>waddr_native_7</i> = 249 (0xF9)<br></td></tr><tr border="0"><td border="0" valign="top"> · <b>Description </b></td><td border="0">Set position <i>n</i> of the native argument buffer to the address of local variable <i>V</i>. For an "InternalCall" method, 0 is the first argument. For a "PInvoke" method, -1 (<i>m1</i>) is the first argument.</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>