📄 instructions2.doc124.html
字号:
<html><head><title>VM Spec </title></head><body BGCOLOR=#eeeeff text=#000000 LINK=#0000ff VLINK=#000077 ALINK=#ff0000> <a href="VMSpecTOC.doc.html">Contents</a> | <a href="Instructions2.doc123.html">Prev</a> | <a href="Instructions2.doc125.html">Next</a> | <a href="Mnemonics.doc.html">Index</a><hr><br> <a name="ixor"></a><h2>ixor</h2><a name="ixor.Operation"></a><b>Operation</b><br><a name="69144"></a>Boolean XOR <code>int</code><p><Table Border="3"><tr><td><a name="69143"></a> <i>ixor</i><td><a name="87568"></a> </Table><Table><tr><td></Table><p><a name="ixor.Forms"></a><b>Forms</b><br><a name="69145"></a><i>ixor</i> = 130 (0x82)<p><a name="ixor.Stack"></a><b>Stack</b><br><a name="69146"></a>..., <i>value1</i><em>, </em><i>value2</i> <img src="chars/arrwdbrt.gif"> ..., <i>result</i><p><a name="ixor.Description"></a><b>Description</b><br><a name="69147"></a>Both <i>value1</i> and <i>value2</i> must both be of type <code>int</code>. They are popped from the operand stack. An <code>int</code> <i>result</i> is calculated by taking the bitwise exclusive OR of <i>value1</i> and <i>value2</i>. The <i>result</i> is pushed onto the operand stack.<p><a name="69154"></a><a href="Instructions2.doc.html#"></a><a href="Instructions2.doc.html#">jsr jsr</a><p><a name="ixor.Operation"></a><b>Operation</b><br><a name="69164"></a>Jump subroutine<p><Table Border="3"><tr><td><a name="69159"></a> <i>jsr</i><td><a name="87568"></a> <tr><td><a name="69161"></a> <i>branchbyte1</i><td><a name="87568"></a> <tr><td><a name="69163"></a> <i>branchbyte2</i><td><a name="87568"></a> </Table><Table><tr><td></Table><p><a name="ixor.Forms"></a><b>Forms</b><br><a name="69165"></a><i>jsr</i> = 168 (0xa8)<p><a name="ixor.Stack"></a><b>Stack</b><br><a name="69166"></a>... <img src="chars/arrwdbrt.gif"> ..., <i>address</i><p><a name="ixor.Description"></a><b>Description</b><br><a name="69167"></a>The <i>address</i> of the opcode of the instruction immediately following this <i>jsr</i> instruction is pushed onto the operand stack as a value of type <code>returnAddress</code>. The unsigned <i>branchbyte1</i> and <i>branchbyte2</i> are used to construct a signed 16-bit offset, where the offset is (<i>branchbyte1</i> << 8) | <i>branchbyte2</i>. Execution proceeds at that offset from the address of this <i>jsr</i> instruction. The target address must be that of an opcode of an instruction within the method that contains this <i>jsr </i>instruction.<p><a name="ixor.Notes"></a><b>Notes</b><br><a name="69168"></a>The <i>jsr</i> instruction is used with the <i>ret</i> instruction in the implementation of the <code>finally</code> clauses of the Java language (see <a href="Compiling.doc.html#13789">Section 7.13, "Compiling finally"</a>). Note that <i>jsr</i> pushes the address onto the stack and <i>ret</i> gets it out of a local variable. This asymmetry is intentional.<p><hr><!-- This inserts footnotes--><p><a href="VMSpecTOC.doc.html">Contents</a> | <a href="Instructions2.doc123.html">Prev</a> | <a href="Instructions2.doc125.html">Next</a> | <a href="Mnemonics.doc.html">Index</a><p><font size=-1>Java Virtual Machine Specification (HTML generated by dkramer on February 25, 1997)<br><i><a href="Copyright.doc.html">Copyright © 1996 Sun Microsystems, Inc.</a>All rights reserved</i><br>Please send any comments or corrections to <a href="mailto:doug.kramer@sun.com">doug.kramer@sun.com</a></font></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -