diff --git a/Homework 8/ex3.ijvm b/Homework 8/ex3.ijvm index e1ed6ea..c57b66c 100644 Binary files a/Homework 8/ex3.ijvm and b/Homework 8/ex3.ijvm differ diff --git a/Homework 8/ex3.jas b/Homework 8/ex3.jas index e899207..8317dc2 100644 --- a/Homework 8/ex3.jas +++ b/Homework 8/ex3.jas @@ -6,7 +6,7 @@ OBJREF 0x40 // needed for method invokation - see S.C.O. chapter 4 .main // start of program LDC_W OBJREF // do not forget to push OBJREF on stack! BIPUSH 0x15 // paramater n (i.e., n = 21) - BIPUSH 0x09 // paramater m (i.e., m = 9) + BIPUSH 0x9 // paramater m (i.e., m = 9) INVOKEVIRTUAL product HALT // stops program execution .end-main @@ -22,16 +22,29 @@ temp // change variable names as needed loop: ILOAD m IFEQ end - ILOAD n - ILOAD temp + ILOAD temp + ILOAD n + ILOAD m + IFLT subsum IADD + GOTO donesum +subsum: + ISUB +donesum: ISTORE temp - BIPUSH 0xFF ILOAD m - ISUB + BIPUSH 1 + ILOAD m + IFLT add + ISUB + GOTO update +add: + IADD +update: ISTORE m GOTO loop end: // this is obviously very useful + ILOAD temp IRETURN .end-method diff --git a/Homework 8/ex3.py b/Homework 8/ex3.py new file mode 100644 index 0000000..978ece6 --- /dev/null +++ b/Homework 8/ex3.py @@ -0,0 +1,12 @@ +def product(n,m): + temp = 0 + while m != 0: + if m > 0: + temp = temp + n + else: + temp = temp - n + if m > 0: + m = m - 1 + else: + m = m + 1 + return temp