Oppure

Loading
23/01/12 15:10
Camel
Il programma IJVM dovrebbe leggere da tastiera una sequenza di caratteri terminata con un ritorno a capo, e convertirli in decimali(base 10). Io so che sullo stack ijvm salva i caratteri come ascii esadecimali e quindi ho provveduto alla conversione in decimale ma il programma non va,qualcuno può dare una letta al codice e dirmi cosa ho sbagliato? grazie

.constant
objref 0x40
.end-constant
.main
.var
num_inserito
.end-var
ldc_w objref
invokevirtual inserimento
istore num_inserito
iload num_inserito
halt
.end-main
.method inserimento ()
.var
negativo
numero
tmp
primo
.end-var
bipush 0x0
dup
dup
dup
istore numero
istore tmp
istore negativo
istore primo
getch:
in
dup
dup
bipush 0x2D
if_icmpeq numero_negativo // confronto il valore inserito con il "-"
bipush 0xA
if_icmpeq fine_inserimento // confronto il valore inserito con "invio"
dup
ifeq reread //se la in legge 0 rilegge
iload negativo
ifeq goto_done
iload primo
ifeq incrementa_primo
goto_done:
goto done
incrementa_primo:
iinc primo 0x1
goto goto_done
reread:
pop
goto getch
done:
bipush 0x30
isub
istore tmp
iload primo
ifeq torna_a_getch
iload numero
bipush 0x10

iload tmp
iadd
istore numero
goto getch
torna_a_getch:
iload negativo
bipush 0x1
if_icmpeq getch
bipush 0x1
istore primo
iload tmp
istore numero
goto getch
numero_negativo:
pop
pop
bipush 0x1
istore negativo
goto torna_a_getch
fine_inserimento:
pop
iload negativo
bipush 0x1
if_icmpeq fine_neg
iload numero
ireturn
fine_neg:
iload numero
nop
istore numero
iinc numero 0x1
iload numero
ireturn
.end-method
aaa