I keep getting errors and I have been trying to print this forever it seems. Ive looked for info on Jasmin and as far as I can tell there really isn't a lot of information. Any help with my code would be greatly appreciated. I'm supposed to use Butchers algorithm to print with Jasmin on the command line the next 10 years of Easter. Most of my problem is in the Printing of the Month and My code below.....
.class public example/Easterdeb
.super java/lang/Object
;
; standard initializer
.method public <init>()V
aload_0
invokenonvirtual java/lang/Object/<init>()V
return
.end method
.method public static main([Ljava/lang/String;)V
; set limits used by this method
.limit locals 20
.limit stack 6
; setup local variables:
; 1 - the PrintStream object held in java.lang.System.out
getstatic java/lang/System/out Ljava/io/PrintStream;
astore_1
; 2 - the integer 10 - the counter used in the loop
bipush 10
sipush 2016
istore_2 ;count is in 2
istore 4 ;year is in 4
; now loop 10 times printing out a number
Loop:
; compute 10 - <local variable 2> ...
iload 4 ;year
bipush 19
irem
istore 5 ; a is in 5
iload 4
bipush 100
idiv
istore 6 ; b is in 6
iload 4
bipush 100
irem
istore 7 ; c is in 7
iload 7
iload 6
bipush 4
idiv
istore 8 ; d is in 8
iload 6
bipush 4
irem
istore 9 ; e is in 9
iload 6
bipush 8
iadd
bipush 25
idiv
istore 10 ; f is in 10
iload 6
iload 10
isub
bipush 1
iadd
bipush 3
idiv
istore 11 ; g is in 11
bipush 19
iload 5
imul
iload 6
iadd
iload 8
isub
iload 11
isub
bipush 15
iadd
bipush 30
irem
istore 12 ; h is in 12
iload 7
bipush 4
idiv
istore 13 ; i is in 13
iload 7
bipush 4
irem
istore 14 ; k is in 14
bipush 32
bipush 2
iload 9 ;load e
imul
iadd
bipush 2
iadd
iload 13 ; load i
imul
iload 12 ; load h
isub
iload 14 ; load k
isub
bipush 7
irem
istore 15 ; x is in 15
iload 5
bipush 11
iload 12
imul
iadd
bipush 22
iload 15
imul
iadd
sipush 451
idiv
istore 16 ; m is in 16
iload 12
iload 15
iadd
bipush 7
iload 16
imul
isub
bipush 114
iadd
bipush 31
idiv
istore 17 ; easter month is in 17
iload 12
iload 15
iadd
bipush 7
iload 16
imul
isub
bipush 114
iadd
bipush 31
irem
bipush 1
iadd
istore 18 ; p is in 18
iload 17
bipush 4
isub
ifeq Print_April
aload_1
ldc "March"
swap
goto PRINT_IT
Print_April:
aload_1
ldc "April"
PRINT_IT:
invokestatic java/lang/String/valueOf(I)Ljava/lang/String;
astore_3
; ... and print it
aload_1 ; push the PrintStream object
aload_3 ; push the string we just created - then ...
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
; decrement the counter and loop
iinc 4 1 ;increment year
iinc 2 -1
iload_2
ifne Loop
; done
return
.end method
SO I figured it out here it is
.class public Easter
.super java/lang/Object
.method public <init>()V
aload_0
invokespecial java/lang/Object/<init>()V
return
.end method
.method public static main([Ljava/lang/String;)V
.limit stack 100
.limit locals 50
getstatic java/lang/System/out Ljava/io/PrintStream;
astore_1
; 2 - the integer 10 - the counter used in the loop
sipush 2009
istore 4 ;year is in 4
bipush 10
istore_2 ;count is in 2
; now loop 10 times printing out a number
Loop:
iinc 4 1
iload 4
bipush 19
irem
istore 5 ; a is in 5
iload 4
bipush 100
idiv
istore 6 ; b is in 6
iload 4
bipush 100
irem
istore 7 ; c is in 7
iload 6
bipush 4
idiv
istore 8 ; d is in 8
iload 6
bipush 4
irem
istore 9 ; e is in 9
iload 6
bipush 8
iadd
bipush 25
idiv
istore 10 ; f is in 10
iload 6
iload 10
isub
bipush 1
iadd
bipush 3
idiv
istore 11 ; g is in 11
bipush 19
iload 5
imul
iload 6
bipush 15
iadd
iadd
iload 8
iload 11
iadd
isub
bipush 30
irem
istore 12 ; h is in 12
iload 7
bipush 4
idiv
istore 13 ; i is in 13
iload 7
bipush 4
irem
istore 14 ; k is in 14
bipush 2
iload 9 ;load e
imul
bipush 2
iload 13 ; load i
imul
bipush 32
iadd
iadd
iload 12 ; load h
iload 14 ; load k
iadd
isub
bipush 7
irem
istore 15 ; x is in 15
bipush 11
iload 12 ;load h
imul
bipush 22
iload 15
imul
iload 5 ;load a
iadd
iadd
sipush 451
idiv
istore 16 ; m is in 16
iload 12
iload 15
bipush 114
iadd
iadd
bipush 7
iload 16
imul
isub
istore 17
iload 17
bipush 31
idiv
istore 18 ; easter month is in 17
iload 17
bipush 31
irem
istore 19 ; p is in 19
iload 18
bipush 4
isub
ifeq Print_April
aload_1
ldc "March "
goto PRINT_IT
Print_April:
aload_1
ldc "April "
goto PRINT_IT
PRINT_IT:
invokevirtual java/io/PrintStream/print(Ljava/lang/String;)V
aload_1
iload 19
bipush 1
iadd
invokestatic java/lang/String/valueOf(I)Ljava/lang/String;
invokevirtual java/io/PrintStream/print(Ljava/lang/String;)V
aload_1
ldc ", "
invokevirtual java/io/PrintStream/print(Ljava/lang/String;)V
aload_1
iload 4
invokestatic java/lang/String/valueOf(I)Ljava/lang/String;
invokevirtual java/io/PrintStream/print(Ljava/lang/String;)V
aload_1
ldc "\n"
invokevirtual java/io/PrintStream/print(Ljava/lang/String;)V
iinc 2 -1 ; check loop
iload_2
ifne Loop
return
.end method