public class Rational extends java.lang.Object SourceFile: "Rational.java" minor version: 0 major version: 0 Constant pool: const #1 = Method #9.#30; // java/lang/Object."":()V const #2 = Field #4.#31; // Rational.num:I const #3 = Field #4.#32; // Rational.den:I const #4 = class #33; // Rational const #5 = Method #4.#34; // Rational."":(II)V const #6 = Method #35.#36; // Arithmetic.lcm2:(II)I const #7 = Method #4.#37; // Rational.exp:(I)LRational; const #8 = Method #35.#38; // Arithmetic.gcd:(II)I const #9 = class #39; // Object const #10 = Asciz num; const #11 = Asciz I; const #12 = Asciz den; const #13 = Asciz ; const #14 = Asciz ()V; const #15 = Asciz Code; const #16 = Asciz LineNumberTable; const #17 = Asciz (II)V; const #18 = Asciz exp; const #19 = Asciz (I)LRational;; const #20 = Asciz add; const #21 = Asciz (LRational;LRational;)LRational;; const #22 = Asciz (LRational;)LRational;; const #23 = Asciz mul; const #24 = Asciz expMain; const #25 = Asciz (III)LRational;; const #26 = Asciz simplify; const #27 = Asciz ()LRational;; const #28 = Asciz SourceFile; const #29 = Asciz Rational.java; const #30 = NameAndType #13:#14;// "":()V const #31 = NameAndType #10:#11;// num:I const #32 = NameAndType #12:#11;// den:I const #33 = Asciz Rational; const #34 = NameAndType #13:#17;// "":(II)V const #35 = class #40; // Arithmetic const #36 = NameAndType #41:#42;// lcm2:(II)I const #37 = NameAndType #18:#19;// exp:(I)LRational; const #38 = NameAndType #43:#42;// gcd:(II)I const #39 = Asciz java/lang/Object; const #40 = Asciz Arithmetic; const #41 = Asciz lcm2; const #42 = Asciz (II)I; const #43 = Asciz gcd; { protected int num; protected int den; public Rational(); Code: Stack=2, Locals=1, Args_size=1 0: aload_0 1: invokespecial #1; //Method java/lang/Object."":()V 4: aload_0 5: iconst_0 6: putfield #2; //Field num:I 9: aload_0 10: iconst_1 11: putfield #3; //Field den:I 14: return LineNumberTable: line 5: 0 line 6: 4 line 7: 9 line 8: 14 public Rational(int,int); Code: Stack=2, Locals=3, Args_size=3 0: aload_0 1: invokespecial #1; //Method java/lang/Object."":()V 4: aload_0 5: iload_1 6: putfield #2; //Field num:I 9: aload_0 10: iload_2 11: putfield #3; //Field den:I 14: return LineNumberTable: line 10: 0 line 11: 4 line 12: 9 line 13: 14 public Rational exp(int); Code: Stack=4, Locals=4, Args_size=2 0: iconst_1 1: istore_2 2: iconst_1 3: istore_3 4: iload_1 5: ifle 28 8: iload_2 9: aload_0 10: getfield #2; //Field num:I 13: imul 14: istore_2 15: iload_3 16: aload_0 17: getfield #3; //Field den:I 20: imul 21: istore_3 22: iinc 1, -1 25: goto 4 28: new #4; //class Rational 31: dup 32: iload_2 33: iload_3 34: invokespecial #5; //Method "":(II)V 37: areturn LineNumberTable: line 32: 0 line 33: 2 line 34: 4 line 35: 8 line 36: 15 line 37: 22 line 39: 28 public static Rational add(Rational,Rational); Code: Stack=5, Locals=4, Args_size=2 0: aload_0 1: getfield #3; //Field den:I 4: aload_1 5: getfield #3; //Field den:I 8: invokestatic #6; //Method Arithmetic.lcm2:(II)I 11: istore_3 12: new #4; //class Rational 15: dup 16: iload_3 17: aload_0 18: getfield #3; //Field den:I 21: idiv 22: aload_0 23: getfield #2; //Field num:I 26: imul 27: iload_3 28: aload_1 29: getfield #3; //Field den:I 32: idiv 33: aload_1 34: getfield #2; //Field num:I 37: imul 38: iadd 39: iload_3 40: invokespecial #5; //Method "":(II)V 43: astore_2 44: aload_2 45: areturn LineNumberTable: line 89: 0 line 90: 12 line 92: 44 public Rational add(Rational); Code: Stack=4, Locals=4, Args_size=2 0: aload_0 1: getfield #3; //Field den:I 4: aload_1 5: getfield #3; //Field den:I 8: imul 9: istore_2 10: aload_0 11: getfield #2; //Field num:I 14: aload_1 15: getfield #3; //Field den:I 18: imul 19: aload_0 20: getfield #3; //Field den:I 23: aload_1 24: getfield #2; //Field num:I 27: imul 28: iadd 29: istore_3 30: new #4; //class Rational 33: dup 34: iload_3 35: iload_2 36: invokespecial #5; //Method "":(II)V 39: areturn LineNumberTable: line 96: 0 line 97: 10 line 98: 30 public Rational mul(Rational); Code: Stack=5, Locals=2, Args_size=2 0: new #4; //class Rational 3: dup 4: aload_0 5: getfield #2; //Field num:I 8: aload_1 9: getfield #2; //Field num:I 12: imul 13: aload_0 14: getfield #3; //Field den:I 17: aload_1 18: getfield #3; //Field den:I 21: imul 22: invokespecial #5; //Method "":(II)V 25: areturn LineNumberTable: line 102: 0 public static Rational expMain(int,int,int); Code: Stack=4, Locals=3, Args_size=3 0: new #4; //class Rational 3: dup 4: iload_0 5: iload_1 6: invokespecial #5; //Method "":(II)V 9: iload_2 10: invokevirtual #7; //Method exp:(I)LRational; 13: areturn LineNumberTable: line 106: 0 public Rational simplify(); Code: Stack=4, Locals=4, Args_size=1 0: aload_0 1: getfield #2; //Field num:I 4: aload_0 5: getfield #3; //Field den:I 8: invokestatic #8; //Method Arithmetic.gcd:(II)I 11: istore_1 12: aload_0 13: getfield #2; //Field num:I 16: iload_1 17: idiv 18: istore_2 19: aload_0 20: getfield #3; //Field den:I 23: iload_1 24: idiv 25: istore_3 26: new #4; //class Rational 29: dup 30: iload_2 31: iload_3 32: invokespecial #5; //Method "":(II)V 35: areturn LineNumberTable: line 115: 0 line 116: 12 line 117: 19 line 118: 26 }