
.method Pippo(arg1, arg2, arg3)

   ILOAD arg2
   ILOAD arg1
   IF_ICMPEQ  allor   //salto se arg1 = arg2
   ILOAD arg2
   ILOAD arg1
   ISUB          //calcolo arg2 - arg1
   IFLT  allor   //salto se arg2-arg1<0, cioe' se arg1 > arg2
   ILOAD arg3    // altriment
   ILOAD arg2
   ILOAD arg1
   IADD
   IADD          //restituisci arg1+arg2+arg3
   IRETURN
allor  LDC_W objref  //carico l'objref sullo stack per la chiamata di Pippo
   ILOAD arg2
   DUP
   IADD
   ILOAD arg3
   ILOAD arg2
   ISUB
   ILOAD arg3    //carico sullo stack i parametri della chiamata ricorsiva di Pippo
   INVOKEVIRTUAL Pippo
   IRETURN

.end-method


