 |
mark |
| [QUOTE][i]Originally posted by elpampero [/i]
... |
23-09-2004 18:39 |
|
 |
mark |
.grande:maestro.

Registered: Oct 2003
Posts: 783 (0.10 al dì)
Location:
Corso: F49
Anno: finito!
Time Online: 8 Days, 18:34:33 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by elpampero
Scusa, ma come faccio a confrontare un carattere con '/n'? di solito io faccio un beqz per confrontare con lo 0....
era solo un'idea, senza vedere il codice è difficile sentenziare 
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
|
|
23-09-2004 18:39 |
|
|
|  |
 |
elpampero |
| Perchè questo programma per il calcolo del fattor ... |
24-09-2004 13:59 |
|
 |
elpampero |
Aniversario

Registered: Sep 2003
Posts: 911 (0.11 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: I
Time Online: 8 Days, 3:06:36 [...]
Status: Offline
Edit | Report | IP: Logged |
Perchè questo programma per il calcolo del fattoriale non funziona? l'ho copiato pari pari dal sito di borghese.
# programma per il calcolo ricorsivo di n!
.data
prompt: .asciiz "\nInserire un numero intero: "
output: .ascii "Fattoriale: "
.text
.globl main
main:
# Lettura dell’intero di cui si calcola il fattoriale
li $v0, 4 # $v0 ¬ codice della print_string
la $a0, prompt # $a0 ¬ indirizzo della stringa
syscall # stampa della stringa
li $v0, 5 # $v0 ¬ codice della read_int
syscall # legge l’intero n e lo carica in $v0
# Calcolo del fattoriale
move $a0, $v0 # $a0 ¬ n
jal fact # chiama fact(n)
move $s0, $v0 # $s0 ¬ n!
# Stampa del risultato
li $v0, 4 # $v0 ¬ codice della print_string
la $a0, output # $a0 ¬ indirizzo della stringa
syscall # stampa della stringa di output
move $a0, $s0 # $a0 ¬ n!
li $v0, 1 # $v0 ¬ codice della print_int
syscall # stampa n!
# Termine del programma
li $v0, 10 # $v0 ¬ codice della exit
syscall # esce dal programma
fact:
addi $sp, $sp,-8 # alloca stack
sw $ra, 4($sp) # salvo return address
sw $a0, 0($sp) # salvo l’argomento n
bgt $a0, $zero, core # se n > 0 salta a core
li $v0, 1 # $v0 ¬ 1
j end
core:
addi $a0, $a0,-1 # decremento n --> (n–1)
jal fact # chiama fact(n-1) in $v0
lw $a0, 0($sp) # ripristino n in $a0
mul $v0, $a0, $v0 # ritorno n * fact (n-1)
end:
lw $ra, 4($sp) # ripristino return address
addi $sp, $sp, 8 # dealloca stack
jr $ra # ritorno al chiamante
|
|
24-09-2004 13:59 |
|
|
|  |
 |
^Belzebu^ |
| [QUOTE][i]Originally posted by elpampero [/i]
... |
15-10-2004 07:37 |
|
 |
^Belzebu^ |
Demonietto

Registered: Sep 2003
Posts: 296 (0.04 al dì)
Location: Cassano d' Adda
Corso: Informatica Triennale
Anno: Finito!
Time Online: 6 Days, 5:27:07: [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by elpampero
Nessuno lo sta svolgendo?
io lo sto svolgendo ora... ma non ho capito una cosa..
da cio' che scritto sulle spiegazioni del progetto si dovrebbe usare una pila.
ma una sola? io non capisco come possa bastarne una sola.
perche' finche' hai una stringa tipo 3 12+ allora ne basta una per scriverci dentro (3+12) .
Ma se hai 3 12+ 5 23+* allora come fai a realizzare
((3+12)*(5+23)) senza avere almeno un'altra pila di comodo per impilare momentaneamente i dati che togli dalla prima pila, anche perche' per infilare la parentesi in fondo devi prima svuotare la pila e poi riempirla di nuovo. giusto?
o e' stato detto qualcosa che non compare sulle spiegazioni del progetto?
spero di essere stao chiaro.
grazie mille a coloro che mi risponderanno e mi daranno aiuto.
ByezAll
^Belzebu^
__________________
Meglio essere Padroni all'Inferno che schiavi in paradiso!
|
|
15-10-2004 07:37 |
|
|
|  |
 |
^Belzebu^ |
| [QUOTE][i]Originally posted by elpampero [/i]
... |
15-10-2004 07:39 |
|
 |
^Belzebu^ |
Demonietto

Registered: Sep 2003
Posts: 296 (0.04 al dì)
Location: Cassano d' Adda
Corso: Informatica Triennale
Anno: Finito!
Time Online: 6 Days, 5:27:07: [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by elpampero
Nessuno lo sta svolgendo?
io lo sto svolgendo ora.. pero' non mi e' chairo una cosa.
ma si puo' usare una sola pila?
perche' in questo caso non capisco come si possa impilare correttamente il risultato.
mi spiego meglio:
se ho la stringa 3 24+ allora e' facile realizzare nella pila la stringa (3+24), il fondo della pila e' la prima parentesi a sinistra.
ma se ho 3 24+ 11 5+* allora il risultato dovrebbe essere
((3+24)*(11+5)).
ora mi spiegate come faccio a mettere le parentesi piu' esterne con una sola pila??!
dopo aver letto 3 24+ nella mia pila c'e' (3+24) , poi leggo il resto della stringa e in seguito ho la necessita' di andare a mettere una parentesi aperta in fondo!! quindi devo svuotare la pila, mettere la parentesi e poi rimettere nella pila i caratteri che ho tolto prima.
quindi saerve una pila di comodo, o sbaglio?
grazie a chiunque sapra' chiarirmi questo dubbio.
ByezAll
^Belzebu^
__________________
Meglio essere Padroni all'Inferno che schiavi in paradiso!
|
|
15-10-2004 07:39 |
|
|
|  |
 |
elpampero |
| Finalmente qualcuno che è sulla mia stessa barca. ... |
15-10-2004 07:59 |
|
 |
elpampero |
Aniversario

Registered: Sep 2003
Posts: 911 (0.11 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: I
Time Online: 8 Days, 3:06:36 [...]
Status: Offline
Edit | Report | IP: Logged |
Finalmente qualcuno che è sulla mia stessa barca....
Dunque...teoricamente dovrebbe bastare una sola pila. Il primo problema è COME FACCIO A PRENDERE I NUMERI A 2 CIFRE?
|
|
15-10-2004 07:59 |
|
|
|  |
 |
^Belzebu^ |
| [QUOTE][i]Originally posted by elpampero [/i]
... |
15-10-2004 08:37 |
|
 |
^Belzebu^ |
Demonietto

Registered: Sep 2003
Posts: 296 (0.04 al dì)
Location: Cassano d' Adda
Corso: Informatica Triennale
Anno: Finito!
Time Online: 6 Days, 5:27:07: [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by elpampero
Finalmente qualcuno che è sulla mia stessa barca....
Dunque...teoricamente dovrebbe bastare una sola pila. Il primo problema è COME FACCIO A PRENDERE I NUMERI A 2 CIFRE?
beh .. stiamo trattando delle stringhe, e non degli interi, e credo che in questo caso le cifre si impilano separatamente.
quindi se ho il numero 24 nella stringa, leggo 2 e lo impilo, leggo 4 e lo impilo, poi o trovo uno spazio oppure trovo un operatore.
e a seconda di cio' che trovo mi comporto nel modo opportuno.
sinceramente al momento con una sola pila non so come fare.
con due pile (una per il risultato ed una di comodo, per appoggio dei valori) farei cosi':
stringa polacca: 34 8+
impilo la parentesi [B]chiusa[\B]
leggo 3 e lo impilo nella pila di comodo
leggo 4 e lo impilo nella pila di comodo
trovo uno spazio allora leggo i caratteri dalla pila di comodo e li impilo nella pila risultato (cosi' da averli poi nella giusta posizione)
leggo 8 e lo impilo in una pila di comodo
leggo + e lo impilo nella pila risultato
leggo 8 dalla pila di comodo e lo impilo nella pila risultato
impilo la parentesi [B]aperta[\B]
stringa infissa:
top pila--> (8+34) <--fondo pila
questo e' cio' che mi viene in mente al momento.
ByezAll
^Belzebu^
__________________
Meglio essere Padroni all'Inferno che schiavi in paradiso!
|
|
15-10-2004 08:37 |
|
|
|  |
 |
elpampero |
| Ora sono un pò preso...però mi interesserebbe co ... |
15-10-2004 09:43 |
|
 |
elpampero |
Aniversario

Registered: Sep 2003
Posts: 911 (0.11 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: I
Time Online: 8 Days, 3:06:36 [...]
Status: Offline
Edit | Report | IP: Logged |
Ora sono un pò preso...però mi interesserebbe consultarmi con qualcuno. Visto che sei l'unico nella mia situazione ti dò anche il mio indirizzo e-mail...elpampero@libero.it
|
|
15-10-2004 09:43 |
|
|
|  |
 |
elpampero |
| Come posso fare per "spezzare" una stringa. In alt ... |
22-10-2004 14:42 |
|
 |
elpampero |
Aniversario

Registered: Sep 2003
Posts: 911 (0.11 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: I
Time Online: 8 Days, 3:06:36 [...]
Status: Offline
Edit | Report | IP: Logged |
Come posso fare per "spezzare" una stringa. In altre parole come posso prendere i numeri a 2 o più cifre?
|
|
22-10-2004 14:42 |
|
|
|  |
 |
elpampero |
| Nessuno riesce a darmi una mano? ... |
22-10-2004 15:20 |
|
 |
elpampero |
Aniversario

Registered: Sep 2003
Posts: 911 (0.11 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: I
Time Online: 8 Days, 3:06:36 [...]
Status: Offline
Edit | Report | IP: Logged |
Nessuno riesce a darmi una mano?
|
|
22-10-2004 15:20 |
|
|
|  |
 |
^Belzebu^ |
| [QUOTE][i]Originally posted by elpampero [/i]
... |
22-10-2004 15:58 |
|
 |
^Belzebu^ |
Demonietto

Registered: Sep 2003
Posts: 296 (0.04 al dì)
Location: Cassano d' Adda
Corso: Informatica Triennale
Anno: Finito!
Time Online: 6 Days, 5:27:07: [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by elpampero
Nessuno riesce a darmi una mano?
non avevo visto prima la tua domanda...
che cmq sinceramente non capisco bene....
vuoi sapere come riconoscere un operando?
vai avanti a leggere la stringa, carattere per carattere, confrontandolo con spazio, + o * .
non riesco a capirti bene, se vuoi prova a spiegarmi meglio, io cerchero' di aiutarti per cio' che posso.
cmq al momento sono fermo col progetto, ho troppi casini al lavoro da risolvere e non ho il tempo per studiare.
ByezAll
^Belzebu^
__________________
Meglio essere Padroni all'Inferno che schiavi in paradiso!
|
|
22-10-2004 15:58 |
|
|
|  |
 |
elpampero |
| Tu dicevi di impilare carattere per carattere...ma ... |
22-10-2004 16:04 |
|
 |
elpampero |
Aniversario

Registered: Sep 2003
Posts: 911 (0.11 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: I
Time Online: 8 Days, 3:06:36 [...]
Status: Offline
Edit | Report | IP: Logged |
Tu dicevi di impilare carattere per carattere...ma in realtà non conviene. Bisognerebbe trovare un metodo per riconoscere nella stringa i due numeri. Per esempio:
34 87+ andrebbe impilato come 34 e 87 NON come 3 4 Spazio 8 7
|
|
22-10-2004 16:04 |
|
|
|  |
 |
^Belzebu^ |
| [QUOTE][i]Originally posted by elpampero [/i]
... |
25-10-2004 07:41 |
|
 |
^Belzebu^ |
Demonietto

Registered: Sep 2003
Posts: 296 (0.04 al dì)
Location: Cassano d' Adda
Corso: Informatica Triennale
Anno: Finito!
Time Online: 6 Days, 5:27:07: [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by elpampero
Tu dicevi di impilare carattere per carattere...ma in realtà non conviene. Bisognerebbe trovare un metodo per riconoscere nella stringa i due numeri. Per esempio:
34 87+ andrebbe impilato come 34 e 87 NON come 3 4 Spazio 8 7
sono d'accordissimo sul fatto che non conviene.
pero' non ho la piu' pallida idea su come fare per impilare il numero nella sua interezza e non il singolo carattere.
se trovi la soluzione fammi sapere....
ByezAll
^Belzebu^
__________________
Meglio essere Padroni all'Inferno che schiavi in paradiso!
|
|
25-10-2004 07:41 |
|
|
|  |
 |
rossa |
| L' unico modo che mi viene per impilare il numero ... |
02-11-2004 15:53 |
|
 |
rossa |
.simpatizzante.
Registered: Feb 2004
Posts: 17 (0.00 al dì)
Location: Milano
Corso: Informatica
Anno:
Time Online: 18:44:07: [...]
Status: Offline
Edit | Report | IP: Logged |
L' unico modo che mi viene per impilare il numero nella sua interzza è quello di allocare tanto spazio di memoria per tante (da definire) stringhe temporanee in cui tenere i numeri man mano che si compongono e di cui impilare l' indirizzo nello stack,ma mi sembra uno spreco enorme .
Misembra più conveniente impilare tutte le stringhe, che presumibilmente non saranno tantissime, di dimensioni abbastanza consistenti, nello stack e muovere lo SP del numero giusto di byte (anche se molto sarà vuoto).
Che ne dite?
|
|
02-11-2004 15:53 |
|
|
|  |
 |
rossa |
| L' unico modo che mi viene per impilare il numero ... |
02-11-2004 21:02 |
|
 |
rossa |
.simpatizzante.
Registered: Feb 2004
Posts: 17 (0.00 al dì)
Location: Milano
Corso: Informatica
Anno:
Time Online: 18:44:07: [...]
Status: Offline
Edit | Report | IP: Logged |
L' unico modo che mi viene per impilare il numero nella sua interzza è quello di allocare tanto spazio di memoria per tante (da definire) stringhe temporanee in cui tenere i numeri man mano che si compongono e di cui impilare l' indirizzo nello stack,ma mi sembra uno spreco enorme .
Misembra più conveniente impilare tutte le stringhe, che presumibilmente non saranno tantissime, di dimensioni abbastanza consistenti, nello stack e muovere lo SP del numero giusto di byte (anche se molto sarà vuoto).
Che ne dite?
|
|
02-11-2004 21:02 |
|
|
|  |
 |
elpampero |
| Ma che diferenza c'e' tra add, addu, addi ecc...? ... |
05-11-2004 13:42 |
|
 |
elpampero |
Aniversario

Registered: Sep 2003
Posts: 911 (0.11 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: I
Time Online: 8 Days, 3:06:36 [...]
Status: Offline
Edit | Report | IP: Logged |
Ma che diferenza c'e' tra add, addu, addi ecc...? nel mio programma ho messo tutti add e non mi da nessun problema
|
|
05-11-2004 13:42 |
|
|
|  |
 |
| All times are GMT. The time now is 17:02. |
|
|
 |
|
 |
|
|
|  |
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|