You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
45 lines
1.1 KiB
11 years ago
|
/*
|
||
|
* Fernflower - The Analytical Java Decompiler
|
||
|
* http://www.reversed-java.com
|
||
|
*
|
||
|
* (C) 2008 - 2010, Stiver
|
||
|
*
|
||
|
* This software is NEITHER public domain NOR free software
|
||
|
* as per GNU License. See license.txt for more details.
|
||
|
*
|
||
|
* This software is distributed WITHOUT ANY WARRANTY; without
|
||
|
* even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||
|
* A PARTICULAR PURPOSE.
|
||
|
*/
|
||
|
|
||
10 years ago
|
package org.jetbrains.java.decompiler.code.optinstructions;
|
||
11 years ago
|
|
||
|
import java.io.DataOutputStream;
|
||
|
import java.io.IOException;
|
||
|
|
||
10 years ago
|
import org.jetbrains.java.decompiler.code.Instruction;
|
||
11 years ago
|
|
||
|
public class BIPUSH extends Instruction {
|
||
|
|
||
|
private static int[] opcodes = new int[] {opc_iconst_m1,opc_iconst_0,opc_iconst_1,opc_iconst_2,opc_iconst_3,opc_iconst_4,opc_iconst_5};
|
||
|
|
||
|
public void writeToStream(DataOutputStream out, int offset) throws IOException {
|
||
|
int value = getOperand(0);
|
||
|
if(value<-1 || value > 5) {
|
||
|
out.writeByte(opc_bipush);
|
||
|
out.writeByte(value);
|
||
|
} else {
|
||
|
out.writeByte(opcodes[value+1]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public int length() {
|
||
|
int value = getOperand(0);
|
||
|
if(value<-1 || value > 5) {
|
||
|
return 2;
|
||
|
} else {
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
}
|