50 lines
824 B
Text
50 lines
824 B
Text
// product.jas
|
|
.constant
|
|
OBJREF 0x40 // needed for method invokation - see S.C.O. chapter 4
|
|
.end-constant
|
|
|
|
.main // start of program
|
|
LDC_W OBJREF // do not forget to push OBJREF on stack!
|
|
BIPUSH 0x15 // paramater n (i.e., n = 21)
|
|
BIPUSH 0x9 // paramater m (i.e., m = 9)
|
|
INVOKEVIRTUAL product
|
|
HALT // stops program execution
|
|
.end-main
|
|
|
|
.method product(n,m) // takes two arguments ("n" and "m")
|
|
.var
|
|
temp // change variable names as needed
|
|
.end-var
|
|
|
|
// just some code example:
|
|
BIPUSH 0x00
|
|
ISTORE temp
|
|
loop:
|
|
ILOAD m
|
|
IFEQ end
|
|
ILOAD temp
|
|
ILOAD n
|
|
ILOAD m
|
|
IFLT subsum
|
|
IADD
|
|
GOTO donesum
|
|
subsum:
|
|
ISUB
|
|
donesum:
|
|
ISTORE temp
|
|
ILOAD m
|
|
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
|