Dsy Network www | forum | my | didattica | howto | wiki | el goog | stats | blog | dona | rappresentanti
Homepage
 Register   Calendar   Members  Faq   Search  Logout 
.dsy:it. : Powered by vBulletin version 2.3.1 .dsy:it. > Didattica > Corsi A - F > Architettura degli elaboratori e delle reti > [D'antona] Progetto Polacca
Pages (3): « 1 [2] 3 »   Last Thread   Next Thread
Author
Thread    Expand all | Contract all    Post New Thread    Post A Reply
Collapse
mark
.grande:maestro.

User info:
Registered: Oct 2003
Posts: 783 (0.10 al dì)
Location:
Corso: F49
Anno: finito!
Time Online: 8 Days, 18:34:33 [...]
Status: Offline

Post actions:

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 :D

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....

23-09-2004 18:39
Click Here to See the Profile for mark Click here to Send mark a Private Message Find more posts by mark Add mark to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
elpampero
Aniversario

User info:
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

Post actions:

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
Click Here to See the Profile for elpampero Click here to Send elpampero a Private Message Find more posts by elpampero Add elpampero to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
^Belzebu^
Demonietto

User info:
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

Post actions:

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
Click Here to See the Profile for ^Belzebu^ Click here to Send ^Belzebu^ a Private Message Find more posts by ^Belzebu^ Add ^Belzebu^ to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
^Belzebu^
Demonietto

User info:
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

Post actions:

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
Click Here to See the Profile for ^Belzebu^ Click here to Send ^Belzebu^ a Private Message Find more posts by ^Belzebu^ Add ^Belzebu^ to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
elpampero
Aniversario

User info:
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

Post actions:

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
Click Here to See the Profile for elpampero Click here to Send elpampero a Private Message Find more posts by elpampero Add elpampero to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
^Belzebu^
Demonietto

User info:
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

Post actions:

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
Click Here to See the Profile for ^Belzebu^ Click here to Send ^Belzebu^ a Private Message Find more posts by ^Belzebu^ Add ^Belzebu^ to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
elpampero
Aniversario

User info:
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

Post actions:

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
Click Here to See the Profile for elpampero Click here to Send elpampero a Private Message Find more posts by elpampero Add elpampero to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
elpampero
Aniversario

User info:
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

Post actions:

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
Click Here to See the Profile for elpampero Click here to Send elpampero a Private Message Find more posts by elpampero Add elpampero to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
elpampero
Aniversario

User info:
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

Post actions:

Edit | Report | IP: Logged

Nessuno riesce a darmi una mano?

22-10-2004 15:20
Click Here to See the Profile for elpampero Click here to Send elpampero a Private Message Find more posts by elpampero Add elpampero to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
^Belzebu^
Demonietto

User info:
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

Post actions:

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
Click Here to See the Profile for ^Belzebu^ Click here to Send ^Belzebu^ a Private Message Find more posts by ^Belzebu^ Add ^Belzebu^ to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
elpampero
Aniversario

User info:
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

Post actions:

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
Click Here to See the Profile for elpampero Click here to Send elpampero a Private Message Find more posts by elpampero Add elpampero to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
^Belzebu^
Demonietto

User info:
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

Post actions:

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
Click Here to See the Profile for ^Belzebu^ Click here to Send ^Belzebu^ a Private Message Find more posts by ^Belzebu^ Add ^Belzebu^ to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
rossa
.simpatizzante.

User info:
Registered: Feb 2004
Posts: 17 (0.00 al dì)
Location: Milano
Corso: Informatica
Anno:
Time Online: 18:44:07: [...]
Status: Offline

Post actions:

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
Click Here to See the Profile for rossa Click here to Send rossa a Private Message Find more posts by rossa Add rossa to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
rossa
.simpatizzante.

User info:
Registered: Feb 2004
Posts: 17 (0.00 al dì)
Location: Milano
Corso: Informatica
Anno:
Time Online: 18:44:07: [...]
Status: Offline

Post actions:

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
Click Here to See the Profile for rossa Click here to Send rossa a Private Message Find more posts by rossa Add rossa to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
elpampero
Aniversario

User info:
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

Post actions:

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
Click Here to See the Profile for elpampero Click here to Send elpampero a Private Message Find more posts by elpampero Add elpampero to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
All times are GMT. The time now is 17:02.    Post New Thread    Post A Reply
Pages (3): « 1 [2] 3 »   Last Thread   Next Thread
Show Printable Version | Email this Page | Subscribe to this Thread | Add to Bookmarks

Forum Jump:
Rate This Thread:

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
 

Powered by: vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento | Licenze | Thanks | Syndacate
Pagina generata in 0.074 seconds (66.74% PHP - 33.26% MySQL) con 24 query.