(a)
Non e' possibile scrivere un tale programma in IJVM.
IJVM puo' manipolare lo Stack solo in modo indiretto.
(vedere testi per ripsosta completa)

(b)


.method H(x)

  ILOAD x       //carica x sullo Stack
  IFEQ zero     //se e' uguale a 0 vai a zero...
  BIPUSH 1      //altrimenti carica il primo addendo di 1+H(H(x-1)-1)+H(x-1)
  LDCW objref   //carica l'objref della chiamata ricorsiva H(H(x-1)-1)
  LDCW objref   //carica l'objref per il calcolo di H(x-1)
  ILOAD x
  BIPUSH 1
  ISUB
  INVOKEVIRTUAL H
  BIPUSH 1
  ISUB
  INVOKEVIRTUAL H
  LDCW objref
  ILOAD x
  BIPUSH 1
  ISUB
  INVOKEVIRTUAL H
  IADD
  IADD
  GOTO fine
zero: BIPUSH 0      //...e restituisci 0
fine: IRETURN
.end-method

