Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > e441500a897ed4c9cf25863f9476175c > files > 44

pnet-0.5.0-1mdk.ppc.rpm


	<!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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#call"><b>call</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#call_ctor"><b>call_ctor</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#call_interface"><b>call_interface</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#call_native"><b>call_native</b></a></td></tr><tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#call_native_raw"><b>call_native_raw</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#call_native_void"><b>call_native_void</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#call_native_void_raw"><b>call_native_void_raw</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#call_virtual"><b>call_virtual</b></a></td></tr><tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#cctor_once"><b>cctor_once</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#ldftn"><b>ldftn</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#ldinterfftn"><b>ldinterfftn</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#ldvirtftn"><b>ldvirtftn</b></a></td></tr><tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#pack_varargs"><b>pack_varargs</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#push_thread"><b>push_thread</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#push_thread_raw"><b>push_thread_raw</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#pushdown"><b>pushdown</b></a></td></tr><tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#return"><b>return</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#return_1"><b>return_1</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#return_2"><b>return_2</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#return_n"><b>return_n</b></a></td></tr><tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#set_num_args"><b>set_num_args</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#tail_call"><b>tail_call</b></a></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<a href="#waddr_native_&lt;n&gt;"><b>waddr_native_&lt;n&gt;</b></a></td><td>&nbsp;</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"> 
&nbsp;call</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<b>Operation</b></td><td border="0">Call a method</td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>call</i> = 206 (0xCE)<br></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;call_ctor</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<b>Operation</b></td><td border="0">Call a constructor</td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>call_ctor</i> = 207 (0xCF)<br></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;call_interface</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<b>Operation</b></td><td border="0">Call an interface method</td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>call_interface</i> = 213 (0xD5)<br></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;call_native</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<b>Operation</b></td><td border="0">Call a native function that has a return value</td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>call_native</i> = 208 (0xD0)<br></td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<b>Stack</b></td><td border="0"><i>..., address</i>&nbsp;=&gt;&nbsp;<i>...</i></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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 &quot;native argument buffer&quot;
using the <i>waddr_native*</i> instructions.</td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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 &quot;InternalCall&quot; and &quot;PInvoke&quot;
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"> 
&nbsp;call_native_raw</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>call_native_raw</i> = 210 (0xD2)<br></td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<b>Stack</b></td><td border="0"><i>..., avalue, rvalue</i>&nbsp;=&gt;&nbsp;<i>...</i></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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 &quot;raw&quot; 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"> 
&nbsp;call_native_void</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<b>Operation</b></td><td border="0">Call a native function with no return value</td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;call_native_void_raw</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>call_native_void_raw</i> = 211 (0xD3)<br></td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<b>Stack</b></td><td border="0"><i>..., avalue</i>&nbsp;=&gt;&nbsp;<i>...</i></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;call_virtual</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<b>Operation</b></td><td border="0">Call a virtual method</td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>call_virtual</i> = 212 (0xD4)<br></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;cctor_once</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>cctor_once</i> = 223 (0xDF)<br></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;ldftn</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>ldftn</i> = 255, 23 (0xFF, 0x17)<br></td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<b>Stack</b></td><td border="0"><i>...</i>&nbsp;=&gt;&nbsp;<i>..., method</i></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;ldinterfftn</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>ldinterfftn</i> = 255, 25 (0xFF, 0x19)<br></td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<b>Stack</b></td><td border="0"><i>..., object</i>&nbsp;=&gt;&nbsp;<i>..., address</i></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;ldvirtftn</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>ldvirtftn</i> = 255, 24 (0xFF, 0x18)<br></td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<b>Stack</b></td><td border="0"><i>..., object</i>&nbsp;=&gt;&nbsp;<i>..., address</i></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;pack_varargs</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>pack_varargs</i> = 255, 26 (0xFF, 0x1A)<br></td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<b>Stack</b></td><td border="0"><i>..., arg1, ..., argN</i>&nbsp;=&gt;&nbsp;<i>..., array</i></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;push_thread</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<b>Operation</b></td><td border="0">Push the thread identifier onto the native
argument stack</td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>push_thread</i> = 220 (0xDC)<br></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<b>Description </b></td><td border="0">Pushes an identifier for the current thread onto
the native argument stack.  This is only used for &quot;InternalCall&quot;
methods.  &quot;PInvoke&quot; 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"> 
&nbsp;push_thread_raw</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;
		&nbsp;&middot;&nbsp;<b>Description </b></td><td border="0">Pushes an identifier for the current thread onto
the native argument stack.  This is only used for &quot;InternalCall&quot;
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"> 
&nbsp;pushdown</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>pushdown</i> = 222 (0xDE)<br></td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<b>Stack</b></td><td border="0"><i>..., val1, ..., valN, value</i>&nbsp;=&gt;&nbsp;<i>..., value, value, val1, ..., valN</i></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;return</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<b>Operation</b></td><td border="0">Return from the current method with no return value</td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>return</i> = 214 (0xD6)<br></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;return_1</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>return_1</i> = 215 (0xD7)<br></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;return_2</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>return_2</i> = 216 (0xD8)<br></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;return_n</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<b>Forms </b></td><td border="0"><i>return_n</i> = 217 (0xD9)<br></td></tr><tr border="0"><td border="0" valign="top">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;set_num_args</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<b>Operation</b></td><td border="0">Set the number of arguments for the current method</td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;
		&nbsp;&middot;&nbsp;<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">&nbsp;
		&nbsp;&middot;&nbsp;<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"> 
&nbsp;tail_call</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<b>Operation</b></td><td border="0">Call a method using tail call semantics</td></tr><tr border="0"><td border="0">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;
		&nbsp;&middot;&nbsp;<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_&lt;n&gt;">
<font color="#FFFFFF" size="+5"> 
&nbsp;waddr_native_&lt;n&gt;</font></a></td><td align="right" border="0">&nbsp;</td></tr><tr border="1"><td border="0">&nbsp;&nbsp;&middot;
		&nbsp;<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">&nbsp;&nbsp;&middot;&nbsp;
		<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_&lt;n&gt;</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_&lt;n&gt;</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">&nbsp;&nbsp;&middot;&nbsp;
		<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_&lt;n&gt;}</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">&nbsp;&nbsp;&middot;&nbsp;
		<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">&nbsp;
		&nbsp;&middot;&nbsp;<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 &quot;InternalCall&quot;
method, 0 is the first argument.  For a &quot;PInvoke&quot; method,
-1 (<i>m1</i>) is the first argument.</td></tr></table><br><br><p align="center"> <font size="-2">Copyright &copy; Southern 
	Storm Software Pty Ltd 2002 <br> Licensed under GNU FDL </font></p></body></html>