5 private final String name;
6 private Opcode(String name) { this.name = name; }
8 public String toString() { return name; }
10 public static final Opcode ADD = new Opcode("+");
11 public static final Opcode SUB = new Opcode("-");
12 public static final Opcode MULT = new Opcode("*");
13 public static final Opcode DIV = new Opcode("/");
15 public static final Opcode GT = new Opcode(">");
16 public static final Opcode GE = new Opcode(">=");
17 public static final Opcode LT = new Opcode("<");
18 public static final Opcode LE = new Opcode("<=");
20 public static final Opcode EQ = new Opcode("==");
21 public static final Opcode NE = new Opcode("!=");
23 public static final Opcode AND = new Opcode("&&");
24 public static final Opcode OR = new Opcode("||");
25 public static final Opcode NOT = new Opcode("!");
26 public static final Opcode RND = new Opcode("RND");
27 public static final Opcode NOP = new Opcode("NOP");
28 public static final Opcode SHL = new Opcode("<<");
29 public static final Opcode SHR = new Opcode(">>");
31 static public Opcode translateOpcode(boolean neg, Opcode op) {
33 /* remove negation through opcode translation */
36 else if (op==Opcode.GE)
38 else if (op==Opcode.EQ)
40 else if (op==Opcode.NE)
42 else if (op==Opcode.LT)
44 else if (op==Opcode.LE)
46 else throw new Error("Unrecognized Opcode");
52 public static Opcode decodeFromString(String opname) {
55 if (opname.equals("add")) {
57 } else if (opname.equals("sub")) {
59 } else if (opname.equals("mult")) {
61 } else if (opname.equals("div")) {
63 } else if (opname.equals("and")) {
65 } else if (opname.equals("or")) {
67 } else if (opname.equals("not")) {
69 } else if (opname.equals("gt")) {
71 } else if (opname.equals("ge")) {
73 } else if (opname.equals("lt")) {
75 } else if (opname.equals("le")) {
77 } else if (opname.equals("eq")) {
79 } else if (opname.equals("ne")) {