Ireturn ijvm

Messaggioda Michele/96 » 30/11/2017, 11:00

Ciao, sto tentando di svolgere un esercizio che chiede di scrivere un programma IJVM atto a calcolare l' mcm
usando la seguente formula:
$ mcm(a,b) = (a*b)/(MCD(a,b)) $
ora, il mio problema è che, quando uso invokevirtual per il metodo MCD(a,b) questo esegue, restituisce MCD giusto, poi però, invece di proseguire l' esecuzione del main ricarica i valori e riesegue MCD per poi terminare, il programma da me sviluppato è il seguente:

Codice:
.constant
   objref 0xCAFE
.end-constant
.main
.var
   x
   y
   z
   i
.end-var
   bipush 14
   istore x
   bipush 21
   istore y
   ldc_w objref
   iload x
   iload y
   invokevirtual MCD
   istore z
   iload x
   istore i
L1: iload y
   ifeq END
   iload x
   iload i
   iadd
   istore x
   iload y
   bipush 1
   isub
   istore y
   goto L1
END: bipush 0
   istore i
L2: iload x
   ifeq EN2
   iload x
   iload z
   isub
   istore x
   iload i
   bipush 1
   iadd
   istore i
   goto L2
EN2: halt
.end-main

.method MCD(a,b)

   iload a
   iload b
ST: if_icmpeq EN
   iload a
   iload b
   isub
   iflt EL
   iload a
   iload b
   isub
   istore a
   goto ST
EL:   iload b
   iload a
   isub
   istore b
   goto ST
EN: iload a
   ireturn
.end-method

vi prego di aiutarmi perchè non riesco a capire dove possa essere il problema, grazie,
saluti.
Michele/96
New Member
New Member
 
Messaggio: 26 di 70
Iscritto il: 22/10/2016, 12:24

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite