|
|
|
@@ -1,4 +1,6 @@
|
|
|
|
export function getAsmOpcode(opcode) {
|
|
|
|
import {AssemblyInstructionInfo} from '../base';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export function getAsmOpcode(opcode: string | undefined): AssemblyInstructionInfo | undefined {
|
|
|
|
if (!opcode) return;
|
|
|
|
if (!opcode) return;
|
|
|
|
switch (opcode.toUpperCase()) {
|
|
|
|
switch (opcode.toUpperCase()) {
|
|
|
|
case 'AALOAD':
|
|
|
|
case 'AALOAD':
|
|
|
|
@@ -142,25 +144,25 @@ export function getAsmOpcode(opcode) {
|
|
|
|
case 'D2F':
|
|
|
|
case 'D2F':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.d2f`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.d2f`,
|
|
|
|
html: `<p>Instruction d2f: Convert double to float</p><p>Format: d2f</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.d2f.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>) resulting in <span class="emphasis"><em>value</em></span>'. Then <span class="emphasis"><em>value</em></span>' is converted to a <code class="literal">float</code> <span class="emphasis"><em>result</em></span> using the round to nearest rounding policy (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8" title="2.8. Floating-Point Arithmetic">§2.8</a>). The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction d2f: Convert double to float</p><p>Format: d2f</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.d2f.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack and converted to a <code class="literal">float</code> <span class="emphasis"><em>result</em></span> using the round to nearest rounding policy (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8" title="2.8. Floating-Point Arithmetic">§2.8</a>). The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Convert double to float`,
|
|
|
|
tooltip: `Convert double to float`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'D2I':
|
|
|
|
case 'D2I':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.d2i`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.d2i`,
|
|
|
|
html: `<p>Instruction d2i: Convert double to int</p><p>Format: d2i</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.d2i.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>) resulting in <span class="emphasis"><em>value</em></span>'. Then <span class="emphasis"><em>value</em></span>' is converted to an <code class="literal">int</code> <span class="emphasis"><em>result</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack: </p>`,
|
|
|
|
html: `<p>Instruction d2i: Convert double to int</p><p>Format: d2i</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.d2i.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack and converted to an <code class="literal">int</code> <span class="emphasis"><em>result</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack: </p>`,
|
|
|
|
tooltip: `Convert double to int`,
|
|
|
|
tooltip: `Convert double to int`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'D2L':
|
|
|
|
case 'D2L':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.d2l`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.d2l`,
|
|
|
|
html: `<p>Instruction d2l: Convert double to long</p><p>Format: d2l</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.d2l.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>) resulting in <span class="emphasis"><em>value</em></span>'. Then <span class="emphasis"><em>value</em></span>' is converted to a <code class="literal">long</code>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack: </p>`,
|
|
|
|
html: `<p>Instruction d2l: Convert double to long</p><p>Format: d2l</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.d2l.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack and converted to a <code class="literal">long</code>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack: </p>`,
|
|
|
|
tooltip: `Convert double to long`,
|
|
|
|
tooltip: `Convert double to long`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DADD':
|
|
|
|
case 'DADD':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dadd`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dadd`,
|
|
|
|
html: `<p>Instruction dadd: Add double</p><p>Format: dadd</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.dadd.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. The <code class="literal">double</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span>' + <span class="emphasis"><em>value2</em></span>'. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction dadd: Add double</p><p>Format: dadd</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.dadd.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack. The <code class="literal">double</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span> + <span class="emphasis"><em>value2</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Add double`,
|
|
|
|
tooltip: `Add double`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DALOAD':
|
|
|
|
case 'DALOAD':
|
|
|
|
@@ -172,19 +174,19 @@ export function getAsmOpcode(opcode) {
|
|
|
|
case 'DASTORE':
|
|
|
|
case 'DASTORE':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dastore`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dastore`,
|
|
|
|
html: `<p>Instruction dastore: Store into double array </p><p>Format: dastore</p><p>Operand Stack: ..., <span class="emphasis"><em>arrayref</em></span>, <span class="emphasis"><em>index</em></span>, <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.dastore.desc-100"></a> The <span class="emphasis"><em>arrayref</em></span> must be of type <code class="literal">reference</code> and must refer to an array whose components are of type <code class="literal">double</code>. The <span class="emphasis"><em>index</em></span> must be of type <code class="literal">int</code>, and value must be of type <code class="literal">double</code>. The <span class="emphasis"><em>arrayref</em></span>, <span class="emphasis"><em>index</em></span>, and <span class="emphasis"><em>value</em></span> are popped from the operand stack. The <code class="literal">double</code> <span class="emphasis"><em>value</em></span> undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>', which is stored as the component of the array indexed by <span class="emphasis"><em>index</em></span>. </p>`,
|
|
|
|
html: `<p>Instruction dastore: Store into double array </p><p>Format: dastore</p><p>Operand Stack: ..., <span class="emphasis"><em>arrayref</em></span>, <span class="emphasis"><em>index</em></span>, <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.dastore.desc-100"></a> The <span class="emphasis"><em>arrayref</em></span> must be of type <code class="literal">reference</code> and must refer to an array whose components are of type <code class="literal">double</code>. The <span class="emphasis"><em>index</em></span> must be of type <code class="literal">int</code>, and value must be of type <code class="literal">double</code>. The <span class="emphasis"><em>arrayref</em></span>, <span class="emphasis"><em>index</em></span>, and <span class="emphasis"><em>value</em></span> are popped from the operand stack. The <code class="literal">double</code> <span class="emphasis"><em>value</em></span> is stored as the component of the array indexed by <span class="emphasis"><em>index</em></span>. </p>`,
|
|
|
|
tooltip: `Store into double array `,
|
|
|
|
tooltip: `Store into double array `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DCMPG':
|
|
|
|
case 'DCMPG':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dcmp_op`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dcmp_op`,
|
|
|
|
html: `<p>Instruction dcmpg: Compare double</p><p>Format: dcmp[op]</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.dcmp_op.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. A floating-point comparison is performed: </p>`,
|
|
|
|
html: `<p>Instruction dcmpg: Compare double</p><p>Format: dcmp[op]</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.dcmp_op.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack and a floating-point comparison is performed: </p>`,
|
|
|
|
tooltip: `Compare double`,
|
|
|
|
tooltip: `Compare double`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DCMPL':
|
|
|
|
case 'DCMPL':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dcmp_op`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dcmp_op`,
|
|
|
|
html: `<p>Instruction dcmpl: Compare double</p><p>Format: dcmp[op]</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.dcmp_op.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. A floating-point comparison is performed: </p>`,
|
|
|
|
html: `<p>Instruction dcmpl: Compare double</p><p>Format: dcmp[op]</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.dcmp_op.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack and a floating-point comparison is performed: </p>`,
|
|
|
|
tooltip: `Compare double`,
|
|
|
|
tooltip: `Compare double`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DCONST_0':
|
|
|
|
case 'DCONST_0':
|
|
|
|
@@ -202,7 +204,7 @@ export function getAsmOpcode(opcode) {
|
|
|
|
case 'DDIV':
|
|
|
|
case 'DDIV':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.ddiv`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.ddiv`,
|
|
|
|
html: `<p>Instruction ddiv: Divide double</p><p>Format: ddiv</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.ddiv.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. The <code class="literal">double</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span>' / <span class="emphasis"><em>value2</em></span>'. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction ddiv: Divide double</p><p>Format: ddiv</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.ddiv.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack. The <code class="literal">double</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span> / <span class="emphasis"><em>value2</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Divide double`,
|
|
|
|
tooltip: `Divide double`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DLOAD':
|
|
|
|
case 'DLOAD':
|
|
|
|
@@ -238,61 +240,61 @@ export function getAsmOpcode(opcode) {
|
|
|
|
case 'DMUL':
|
|
|
|
case 'DMUL':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dmul`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dmul`,
|
|
|
|
html: `<p>Instruction dmul: Multiply double</p><p>Format: dmul</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.dmul.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. The <code class="literal">double</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span>' * <span class="emphasis"><em>value2</em></span>'. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction dmul: Multiply double</p><p>Format: dmul</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.dmul.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack. The <code class="literal">double</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span> * <span class="emphasis"><em>value2</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Multiply double`,
|
|
|
|
tooltip: `Multiply double`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DNEG':
|
|
|
|
case 'DNEG':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dneg`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dneg`,
|
|
|
|
html: `<p>Instruction dneg: Negate double</p><p>Format: dneg</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.dneg.desc-100"></a> The value must be of type <code class="literal">double</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The <code class="literal">double</code> <span class="emphasis"><em>result</em></span> is the arithmetic negation of <span class="emphasis"><em>value</em></span>'. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction dneg: Negate double</p><p>Format: dneg</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.dneg.desc-100"></a> The value must be of type <code class="literal">double</code>. It is popped from the operand stack. The <code class="literal">double</code> <span class="emphasis"><em>result</em></span> is the arithmetic negation of <span class="emphasis"><em>value</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Negate double`,
|
|
|
|
tooltip: `Negate double`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DREM':
|
|
|
|
case 'DREM':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.drem`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.drem`,
|
|
|
|
html: `<p>Instruction drem: Remainder double</p><p>Format: drem</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.drem.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. The <code class="literal">double</code> <span class="emphasis"><em>result</em></span> is calculated and pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction drem: Remainder double</p><p>Format: drem</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.drem.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack. The <code class="literal">double</code> <span class="emphasis"><em>result</em></span> is calculated and pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Remainder double`,
|
|
|
|
tooltip: `Remainder double`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DRETURN':
|
|
|
|
case 'DRETURN':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dreturn`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dreturn`,
|
|
|
|
html: `<p>Instruction dreturn: Return double from method </p><p>Format: dreturn</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> [empty]</p><p><a name="jvms-6.5.dreturn.desc-100"></a> The current method must have return type <code class="literal">double</code>. The <span class="emphasis"><em>value</em></span> must be of type <code class="literal">double</code>. If the current method is a <code class="literal">synchronized</code> method, the monitor entered or reentered on invocation of the method is updated and possibly exited as if by execution of a <span class="emphasis"><em>monitorexit</em></span> instruction (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.monitorexit" title="monitorexit">§<span class="emphasis"><em>monitorexit</em></span></a>) in the current thread. If no exception is thrown, <span class="emphasis"><em>value</em></span> is popped from the operand stack of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>) and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The <span class="emphasis"><em>value</em></span>' is pushed onto the operand stack of the frame of the invoker. Any other values on the operand stack of the current method are discarded. </p>`,
|
|
|
|
html: `<p>Instruction dreturn: Return double from method </p><p>Format: dreturn</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> [empty]</p><p><a name="jvms-6.5.dreturn.desc-100"></a> The current method must have return type <code class="literal">double</code>. The <span class="emphasis"><em>value</em></span> must be of type <code class="literal">double</code>. If the current method is a <code class="literal">synchronized</code> method, the monitor entered or reentered on invocation of the method is updated and possibly exited as if by execution of a <span class="emphasis"><em>monitorexit</em></span> instruction (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.monitorexit" title="monitorexit">§<span class="emphasis"><em>monitorexit</em></span></a>) in the current thread. If no exception is thrown, <span class="emphasis"><em>value</em></span> is popped from the operand stack of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>) and pushed onto the operand stack of the frame of the invoker. Any other values on the operand stack of the current method are discarded. </p>`,
|
|
|
|
tooltip: `Return double from method `,
|
|
|
|
tooltip: `Return double from method `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DSTORE':
|
|
|
|
case 'DSTORE':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dstore`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dstore`,
|
|
|
|
html: `<p>Instruction dstore: Store double into local variable </p><p>Format: dstore index</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.dstore.desc-100"></a> The <span class="emphasis"><em>index</em></span> is an unsigned byte. Both <span class="emphasis"><em>index</em></span> and <span class="emphasis"><em>index</em></span>+1 must be indices into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The local variables at <span class="emphasis"><em>index</em></span> and <span class="emphasis"><em>index</em></span>+1 are set to <span class="emphasis"><em>value</em></span>'. </p>`,
|
|
|
|
html: `<p>Instruction dstore: Store double into local variable </p><p>Format: dstore index</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.dstore.desc-100"></a> The <span class="emphasis"><em>index</em></span> is an unsigned byte. Both <span class="emphasis"><em>index</em></span> and <span class="emphasis"><em>index</em></span>+1 must be indices into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack. The local variables at <span class="emphasis"><em>index</em></span> and <span class="emphasis"><em>index</em></span>+1 are set to <span class="emphasis"><em>value</em></span>. </p>`,
|
|
|
|
tooltip: `Store double into local variable `,
|
|
|
|
tooltip: `Store double into local variable `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DSTORE_0':
|
|
|
|
case 'DSTORE_0':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dstore_n`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dstore_n`,
|
|
|
|
html: `<p>Instruction dstore_0: Store double into local variable </p><p>Format: dstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.dstore_n.desc-100"></a> Both <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 must be indices into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The local variables at <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 are set to <span class="emphasis"><em>value</em></span>'. </p>`,
|
|
|
|
html: `<p>Instruction dstore_0: Store double into local variable </p><p>Format: dstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.dstore_n.desc-100"></a> Both <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 must be indices into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack. The local variables at <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 are set to <span class="emphasis"><em>value</em></span>. </p>`,
|
|
|
|
tooltip: `Store double into local variable `,
|
|
|
|
tooltip: `Store double into local variable `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DSTORE_1':
|
|
|
|
case 'DSTORE_1':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dstore_n`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dstore_n`,
|
|
|
|
html: `<p>Instruction dstore_1: Store double into local variable </p><p>Format: dstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.dstore_n.desc-100"></a> Both <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 must be indices into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The local variables at <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 are set to <span class="emphasis"><em>value</em></span>'. </p>`,
|
|
|
|
html: `<p>Instruction dstore_1: Store double into local variable </p><p>Format: dstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.dstore_n.desc-100"></a> Both <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 must be indices into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack. The local variables at <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 are set to <span class="emphasis"><em>value</em></span>. </p>`,
|
|
|
|
tooltip: `Store double into local variable `,
|
|
|
|
tooltip: `Store double into local variable `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DSTORE_2':
|
|
|
|
case 'DSTORE_2':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dstore_n`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dstore_n`,
|
|
|
|
html: `<p>Instruction dstore_2: Store double into local variable </p><p>Format: dstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.dstore_n.desc-100"></a> Both <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 must be indices into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The local variables at <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 are set to <span class="emphasis"><em>value</em></span>'. </p>`,
|
|
|
|
html: `<p>Instruction dstore_2: Store double into local variable </p><p>Format: dstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.dstore_n.desc-100"></a> Both <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 must be indices into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack. The local variables at <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 are set to <span class="emphasis"><em>value</em></span>. </p>`,
|
|
|
|
tooltip: `Store double into local variable `,
|
|
|
|
tooltip: `Store double into local variable `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DSTORE_3':
|
|
|
|
case 'DSTORE_3':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dstore_n`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dstore_n`,
|
|
|
|
html: `<p>Instruction dstore_3: Store double into local variable </p><p>Format: dstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.dstore_n.desc-100"></a> Both <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 must be indices into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The local variables at <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 are set to <span class="emphasis"><em>value</em></span>'. </p>`,
|
|
|
|
html: `<p>Instruction dstore_3: Store double into local variable </p><p>Format: dstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.dstore_n.desc-100"></a> Both <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 must be indices into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">double</code>. It is popped from the operand stack. The local variables at <<span class="emphasis"><em>n</em></span>> and <<span class="emphasis"><em>n</em></span>>+1 are set to <span class="emphasis"><em>value</em></span>. </p>`,
|
|
|
|
tooltip: `Store double into local variable `,
|
|
|
|
tooltip: `Store double into local variable `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DSUB':
|
|
|
|
case 'DSUB':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dsub`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.dsub`,
|
|
|
|
html: `<p>Instruction dsub: Subtract double</p><p>Format: dsub</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.dsub.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. The <code class="literal">double</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span>' - <span class="emphasis"><em>value2</em></span>'. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction dsub: Subtract double</p><p>Format: dsub</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.dsub.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">double</code>. The values are popped from the operand stack. The <code class="literal">double</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span> - <span class="emphasis"><em>value2</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Subtract double`,
|
|
|
|
tooltip: `Subtract double`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'DUP':
|
|
|
|
case 'DUP':
|
|
|
|
@@ -334,25 +336,25 @@ export function getAsmOpcode(opcode) {
|
|
|
|
case 'F2D':
|
|
|
|
case 'F2D':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.f2d`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.f2d`,
|
|
|
|
html: `<p>Instruction f2d: Convert float to double</p><p>Format: f2d</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.f2d.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. Then <span class="emphasis"><em>value</em></span>' is converted to a <code class="literal">double</code> <span class="emphasis"><em>result</em></span>. This <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction f2d: Convert float to double</p><p>Format: f2d</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.f2d.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack and converted to a <code class="literal">double</code> <span class="emphasis"><em>result</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Convert float to double`,
|
|
|
|
tooltip: `Convert float to double`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'F2I':
|
|
|
|
case 'F2I':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.f2i`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.f2i`,
|
|
|
|
html: `<p>Instruction f2i: Convert float to int</p><p>Format: f2i</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.f2i.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. Then <span class="emphasis"><em>value</em></span>' is converted to an <code class="literal">int</code> <span class="emphasis"><em>result</em></span>. This <span class="emphasis"><em>result</em></span> is pushed onto the operand stack: </p>`,
|
|
|
|
html: `<p>Instruction f2i: Convert float to int</p><p>Format: f2i</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.f2i.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack and converted to an <code class="literal">int</code> <span class="emphasis"><em>result</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack: </p>`,
|
|
|
|
tooltip: `Convert float to int`,
|
|
|
|
tooltip: `Convert float to int`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'F2L':
|
|
|
|
case 'F2L':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.f2l`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.f2l`,
|
|
|
|
html: `<p>Instruction f2l: Convert float to long</p><p>Format: f2l</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.f2l.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. Then <span class="emphasis"><em>value</em></span>' is converted to a <code class="literal">long</code> <span class="emphasis"><em>result</em></span>. This <span class="emphasis"><em>result</em></span> is pushed onto the operand stack: </p>`,
|
|
|
|
html: `<p>Instruction f2l: Convert float to long</p><p>Format: f2l</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.f2l.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack and converted to a <code class="literal">long</code> <span class="emphasis"><em>result</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack: </p>`,
|
|
|
|
tooltip: `Convert float to long`,
|
|
|
|
tooltip: `Convert float to long`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FADD':
|
|
|
|
case 'FADD':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fadd`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fadd`,
|
|
|
|
html: `<p>Instruction fadd: Add float</p><p>Format: fadd</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fadd.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. The <code class="literal">float</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span>' + <span class="emphasis"><em>value2</em></span>'. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction fadd: Add float</p><p>Format: fadd</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fadd.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack. The <code class="literal">float</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span> + <span class="emphasis"><em>value2</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Add float`,
|
|
|
|
tooltip: `Add float`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FALOAD':
|
|
|
|
case 'FALOAD':
|
|
|
|
@@ -364,19 +366,19 @@ export function getAsmOpcode(opcode) {
|
|
|
|
case 'FASTORE':
|
|
|
|
case 'FASTORE':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fastore`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fastore`,
|
|
|
|
html: `<p>Instruction fastore: Store into float array </p><p>Format: fastore</p><p>Operand Stack: ..., <span class="emphasis"><em>arrayref</em></span>, <span class="emphasis"><em>index</em></span>, <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.fastore.desc-100"></a> The <span class="emphasis"><em>arrayref</em></span> must be of type <code class="literal">reference</code> and must refer to an array whose components are of type <code class="literal">float</code>. The <span class="emphasis"><em>index</em></span> must be of type <code class="literal">int</code>, and the <span class="emphasis"><em>value</em></span> must be of type <code class="literal">float</code>. The <span class="emphasis"><em>arrayref</em></span>, <span class="emphasis"><em>index</em></span>, and <span class="emphasis"><em>value</em></span> are popped from the operand stack. The <code class="literal">float</code> <span class="emphasis"><em>value</em></span> undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>', and <span class="emphasis"><em>value</em></span>' is stored as the component of the array indexed by <span class="emphasis"><em>index</em></span>. </p>`,
|
|
|
|
html: `<p>Instruction fastore: Store into float array </p><p>Format: fastore</p><p>Operand Stack: ..., <span class="emphasis"><em>arrayref</em></span>, <span class="emphasis"><em>index</em></span>, <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.fastore.desc-100"></a> The <span class="emphasis"><em>arrayref</em></span> must be of type <code class="literal">reference</code> and must refer to an array whose components are of type <code class="literal">float</code>. The <span class="emphasis"><em>index</em></span> must be of type <code class="literal">int</code>, and the <span class="emphasis"><em>value</em></span> must be of type <code class="literal">float</code>. The <span class="emphasis"><em>arrayref</em></span>, <span class="emphasis"><em>index</em></span>, and <span class="emphasis"><em>value</em></span> are popped from the operand stack. The <code class="literal">float</code> <span class="emphasis"><em>value</em></span> is stored as the component of the array indexed by <span class="emphasis"><em>index</em></span>. </p>`,
|
|
|
|
tooltip: `Store into float array `,
|
|
|
|
tooltip: `Store into float array `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FCMPG':
|
|
|
|
case 'FCMPG':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fcmp_op`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fcmp_op`,
|
|
|
|
html: `<p>Instruction fcmpg: Compare float</p><p>Format: fcmp[op]</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fcmp_op.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. A floating-point comparison is performed: </p>`,
|
|
|
|
html: `<p>Instruction fcmpg: Compare float</p><p>Format: fcmp[op]</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fcmp_op.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack and a floating-point comparison is performed: </p>`,
|
|
|
|
tooltip: `Compare float`,
|
|
|
|
tooltip: `Compare float`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FCMPL':
|
|
|
|
case 'FCMPL':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fcmp_op`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fcmp_op`,
|
|
|
|
html: `<p>Instruction fcmpl: Compare float</p><p>Format: fcmp[op]</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fcmp_op.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. A floating-point comparison is performed: </p>`,
|
|
|
|
html: `<p>Instruction fcmpl: Compare float</p><p>Format: fcmp[op]</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fcmp_op.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack and a floating-point comparison is performed: </p>`,
|
|
|
|
tooltip: `Compare float`,
|
|
|
|
tooltip: `Compare float`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FCONST_0, 1':
|
|
|
|
case 'FCONST_0, 1':
|
|
|
|
@@ -394,7 +396,7 @@ export function getAsmOpcode(opcode) {
|
|
|
|
case 'FDIV':
|
|
|
|
case 'FDIV':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fdiv`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fdiv`,
|
|
|
|
html: `<p>Instruction fdiv: Divide float</p><p>Format: fdiv</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fdiv.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. The <code class="literal">float</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span>' / <span class="emphasis"><em>value2</em></span>'. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction fdiv: Divide float</p><p>Format: fdiv</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fdiv.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack. The <code class="literal">float</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span> / <span class="emphasis"><em>value2</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Divide float`,
|
|
|
|
tooltip: `Divide float`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FLOAD':
|
|
|
|
case 'FLOAD':
|
|
|
|
@@ -430,61 +432,61 @@ export function getAsmOpcode(opcode) {
|
|
|
|
case 'FMUL':
|
|
|
|
case 'FMUL':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fmul`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fmul`,
|
|
|
|
html: `<p>Instruction fmul: Multiply float</p><p>Format: fmul</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fmul.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. The <code class="literal">float</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span>' * <span class="emphasis"><em>value2</em></span>'. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction fmul: Multiply float</p><p>Format: fmul</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fmul.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack. The <code class="literal">float</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span> * <span class="emphasis"><em>value2</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Multiply float`,
|
|
|
|
tooltip: `Multiply float`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FNEG':
|
|
|
|
case 'FNEG':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fneg`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fneg`,
|
|
|
|
html: `<p>Instruction fneg: Negate float</p><p>Format: fneg</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fneg.desc-100"></a> The <span class="emphasis"><em>value</em></span> must be of type <code class="literal">float</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The <code class="literal">float</code> <span class="emphasis"><em>result</em></span> is the arithmetic negation of <span class="emphasis"><em>value</em></span>'. This <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction fneg: Negate float</p><p>Format: fneg</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fneg.desc-100"></a> The <span class="emphasis"><em>value</em></span> must be of type <code class="literal">float</code>. It is popped from the operand stack. The <code class="literal">float</code> <span class="emphasis"><em>result</em></span> is the arithmetic negation of <span class="emphasis"><em>value</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Negate float`,
|
|
|
|
tooltip: `Negate float`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FREM':
|
|
|
|
case 'FREM':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.frem`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.frem`,
|
|
|
|
html: `<p>Instruction frem: Remainder float</p><p>Format: frem</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.frem.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. The <code class="literal">float</code> <span class="emphasis"><em>result</em></span> is calculated and pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction frem: Remainder float</p><p>Format: frem</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.frem.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack. The <code class="literal">float</code> <span class="emphasis"><em>result</em></span> is calculated and pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Remainder float`,
|
|
|
|
tooltip: `Remainder float`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FRETURN':
|
|
|
|
case 'FRETURN':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.freturn`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.freturn`,
|
|
|
|
html: `<p>Instruction freturn: Return float from method </p><p>Format: freturn</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> [empty]</p><p><a name="jvms-6.5.freturn.desc-100"></a> The current method must have return type <code class="literal">float</code>. The <span class="emphasis"><em>value</em></span> must be of type <code class="literal">float</code>. If the current method is a <code class="literal">synchronized</code> method, the monitor entered or reentered on invocation of the method is updated and possibly exited as if by execution of a <span class="emphasis"><em>monitorexit</em></span> instruction (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.monitorexit" title="monitorexit">§<span class="emphasis"><em>monitorexit</em></span></a>) in the current thread. If no exception is thrown, <span class="emphasis"><em>value</em></span> is popped from the operand stack of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>) and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The <span class="emphasis"><em>value</em></span>' is pushed onto the operand stack of the frame of the invoker. Any other values on the operand stack of the current method are discarded. </p>`,
|
|
|
|
html: `<p>Instruction freturn: Return float from method </p><p>Format: freturn</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> [empty]</p><p><a name="jvms-6.5.freturn.desc-100"></a> The current method must have return type <code class="literal">float</code>. The <span class="emphasis"><em>value</em></span> must be of type <code class="literal">float</code>. If the current method is a <code class="literal">synchronized</code> method, the monitor entered or reentered on invocation of the method is updated and possibly exited as if by execution of a <span class="emphasis"><em>monitorexit</em></span> instruction (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.monitorexit" title="monitorexit">§<span class="emphasis"><em>monitorexit</em></span></a>) in the current thread. If no exception is thrown, <span class="emphasis"><em>value</em></span> is popped from the operand stack of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>) and pushed onto the operand stack of the frame of the invoker. Any other values on the operand stack of the current method are discarded. </p>`,
|
|
|
|
tooltip: `Return float from method `,
|
|
|
|
tooltip: `Return float from method `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FSTORE':
|
|
|
|
case 'FSTORE':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fstore`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fstore`,
|
|
|
|
html: `<p>Instruction fstore: Store float into local variable </p><p>Format: fstore index</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.fstore.desc-100"></a> The <span class="emphasis"><em>index</em></span> is an unsigned byte that must be an index into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The value of the local variable at <span class="emphasis"><em>index</em></span> is set to <span class="emphasis"><em>value</em></span>'. </p>`,
|
|
|
|
html: `<p>Instruction fstore: Store float into local variable </p><p>Format: fstore index</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.fstore.desc-100"></a> The <span class="emphasis"><em>index</em></span> is an unsigned byte that must be an index into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack, and the value of the local variable at <span class="emphasis"><em>index</em></span> is set to <span class="emphasis"><em>value</em></span>. </p>`,
|
|
|
|
tooltip: `Store float into local variable `,
|
|
|
|
tooltip: `Store float into local variable `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FSTORE_0':
|
|
|
|
case 'FSTORE_0':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fstore_n`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fstore_n`,
|
|
|
|
html: `<p>Instruction fstore_0: Store float into local variable </p><p>Format: fstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.fstore_n.desc-100"></a> The <<span class="emphasis"><em>n</em></span>> must be an index into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The value of the local variable at <<span class="emphasis"><em>n</em></span>> is set to <span class="emphasis"><em>value</em></span>'. </p>`,
|
|
|
|
html: `<p>Instruction fstore_0: Store float into local variable </p><p>Format: fstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.fstore_n.desc-100"></a> The <<span class="emphasis"><em>n</em></span>> must be an index into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack, and the value of the local variable at <<span class="emphasis"><em>n</em></span>> is set to <span class="emphasis"><em>value</em></span>. </p>`,
|
|
|
|
tooltip: `Store float into local variable `,
|
|
|
|
tooltip: `Store float into local variable `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FSTORE_1':
|
|
|
|
case 'FSTORE_1':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fstore_n`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fstore_n`,
|
|
|
|
html: `<p>Instruction fstore_1: Store float into local variable </p><p>Format: fstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.fstore_n.desc-100"></a> The <<span class="emphasis"><em>n</em></span>> must be an index into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The value of the local variable at <<span class="emphasis"><em>n</em></span>> is set to <span class="emphasis"><em>value</em></span>'. </p>`,
|
|
|
|
html: `<p>Instruction fstore_1: Store float into local variable </p><p>Format: fstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.fstore_n.desc-100"></a> The <<span class="emphasis"><em>n</em></span>> must be an index into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack, and the value of the local variable at <<span class="emphasis"><em>n</em></span>> is set to <span class="emphasis"><em>value</em></span>. </p>`,
|
|
|
|
tooltip: `Store float into local variable `,
|
|
|
|
tooltip: `Store float into local variable `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FSTORE_2':
|
|
|
|
case 'FSTORE_2':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fstore_n`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fstore_n`,
|
|
|
|
html: `<p>Instruction fstore_2: Store float into local variable </p><p>Format: fstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.fstore_n.desc-100"></a> The <<span class="emphasis"><em>n</em></span>> must be an index into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The value of the local variable at <<span class="emphasis"><em>n</em></span>> is set to <span class="emphasis"><em>value</em></span>'. </p>`,
|
|
|
|
html: `<p>Instruction fstore_2: Store float into local variable </p><p>Format: fstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.fstore_n.desc-100"></a> The <<span class="emphasis"><em>n</em></span>> must be an index into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack, and the value of the local variable at <<span class="emphasis"><em>n</em></span>> is set to <span class="emphasis"><em>value</em></span>. </p>`,
|
|
|
|
tooltip: `Store float into local variable `,
|
|
|
|
tooltip: `Store float into local variable `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FSTORE_3':
|
|
|
|
case 'FSTORE_3':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fstore_n`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fstore_n`,
|
|
|
|
html: `<p>Instruction fstore_3: Store float into local variable </p><p>Format: fstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.fstore_n.desc-100"></a> The <<span class="emphasis"><em>n</em></span>> must be an index into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack and undergoes value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value</em></span>'. The value of the local variable at <<span class="emphasis"><em>n</em></span>> is set to <span class="emphasis"><em>value</em></span>'. </p>`,
|
|
|
|
html: `<p>Instruction fstore_3: Store float into local variable </p><p>Format: fstore_[n]</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ...</p><p><a name="jvms-6.5.fstore_n.desc-100"></a> The <<span class="emphasis"><em>n</em></span>> must be an index into the local variable array of the current frame (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.6" title="2.6. Frames">§2.6</a>). The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">float</code>. It is popped from the operand stack, and the value of the local variable at <<span class="emphasis"><em>n</em></span>> is set to <span class="emphasis"><em>value</em></span>. </p>`,
|
|
|
|
tooltip: `Store float into local variable `,
|
|
|
|
tooltip: `Store float into local variable `,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'FSUB':
|
|
|
|
case 'FSUB':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fsub`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.fsub`,
|
|
|
|
html: `<p>Instruction fsub: Subtract float</p><p>Format: fsub</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fsub.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack and undergo value set conversion (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8.3" title="2.8.3. Value Set Conversion">§2.8.3</a>), resulting in <span class="emphasis"><em>value1</em></span>' and <span class="emphasis"><em>value2</em></span>'. The <code class="literal">float</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span>' - <span class="emphasis"><em>value2</em></span>'. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction fsub: Subtract float</p><p>Format: fsub</p><p>Operand Stack: ..., <span class="emphasis"><em>value1</em></span>, <span class="emphasis"><em>value2</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.fsub.desc-100"></a> Both <span class="emphasis"><em>value1</em></span> and <span class="emphasis"><em>value2</em></span> must be of type <code class="literal">float</code>. The values are popped from the operand stack. The <code class="literal">float</code> <span class="emphasis"><em>result</em></span> is <span class="emphasis"><em>value1</em></span> - <span class="emphasis"><em>value2</em></span>. The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Subtract float`,
|
|
|
|
tooltip: `Subtract float`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'GETFIELD':
|
|
|
|
case 'GETFIELD':
|
|
|
|
@@ -532,7 +534,7 @@ export function getAsmOpcode(opcode) {
|
|
|
|
case 'I2F':
|
|
|
|
case 'I2F':
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.i2f`,
|
|
|
|
url: `https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-6.html#jvms-6.5.i2f`,
|
|
|
|
html: `<p>Instruction i2f: Convert int to float</p><p>Format: i2f</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.i2f.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">int</code>. It is popped from the operand stack and converted to the <code class="literal">float</code> <span class="emphasis"><em>result</em></span> using the round to nearest rounding policy (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8" title="2.8. Floating-Point Arithmetic">§2.8</a>). The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
html: `<p>Instruction i2f: Convert int to float</p><p>Format: i2f</p><p>Operand Stack: ..., <span class="emphasis"><em>value</em></span> <span class="symbol">→</span> ..., <span class="emphasis"><em>result</em></span></p><p><a name="jvms-6.5.i2f.desc-100"></a> The <span class="emphasis"><em>value</em></span> on the top of the operand stack must be of type <code class="literal">int</code>. It is popped from the operand stack and converted to a <code class="literal">float</code> <span class="emphasis"><em>result</em></span> using the round to nearest rounding policy (<a class="xref" href="https://docs.oracle.com/javase/specs/jvms/se18/html/jvms-2.html#jvms-2.8" title="2.8. Floating-Point Arithmetic">§2.8</a>). The <span class="emphasis"><em>result</em></span> is pushed onto the operand stack. </p>`,
|
|
|
|
tooltip: `Convert int to float`,
|
|
|
|
tooltip: `Convert int to float`,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
case 'I2L':
|
|
|
|
case 'I2L':
|