[IJVM] Tradurre la seguente funzione in un metodo IJVM ?

di
Anonimizzato9055
il
2 risposte

[IJVM] Tradurre la seguente funzione in un metodo IJVM ?

Salve, dovrei tradurre la seguente funzione in un metodo IJVM:

int f(int x) {
if(x>1000) return x;
int z = x % 2;
return 1 + f( x*2) + f(z + x*2);
}

Qualcuno può aiutarmi?

Avevo pensato di utilizzare una costante dove inserire il valore 1000 per risolvere l'if dal momento che il BIPUSH permette solo l'inserimento di un singolo byte nello stack.
Successivamente come faccio con i vari return? E ad ottenere il resto della divisione di x per 2?

2 Risposte

  • Re: [IJVM] Tradurre la seguente funzione in un metodo IJVM ?

    Ho sviluppato così l'esercizio:

    .CONSTANT
    VAL 1000
    .END-CONSTANT

    .METHOD F ( X )
    .VAR
    Z
    .END-VAR

    ILOAD X
    LDCW VAL
    IF_ICMPEQ L1
    ILOAD X
    DUP
    ISUB
    ISTORE Z
    ILOAD X
    DUP
    IADD
    INVOKEVIRTUAL F
    ILOAD X
    DUP
    IADD
    ILOAD Z
    IADD
    INVOKEVIRTUAL F
    IADD
    BIPUSH 1
    IADD
    IRETURN
    L1: ILOAD X
    IRETURN

    .END-METHOD

    Pensate sia giusto così svolto?
  • Re: [IJVM] Tradurre la seguente funzione in un metodo IJVM ?

    Com'è andata a finire la questione? Ho eseguito il codice ma non finisce neanche di compilare...
Devi accedere o registrarti per scrivere nel forum
2 risposte