Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Programma mips progetto

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[11] Re: Programma mips progetto

Messaggioda Foto UtenteWALTERmwp » 19 lug 2014, 1:07

Shika93 ha scritto:In teoria sarebbe possibile anche usare una finestra grafica dove riportare alcuni risultati, ma è sconsigliato per verificare se il programma in effetti funziona.
... questa opzione la puoi usare per presentare i valori dei registri utilizzati come prima scritto mentre il funzionamento del programma lo segui e lo esponi impiegando gli strumenti che hai a disposizione ma, del resto, come faresti nel caso fosse un programma differente rispetto a quello che stiamo ipotizzando.
Shika93 ha scritto:Secondo te sarebbe fattibile?
, si, perché no ?

Quanto presupposto può servirti, penso, per scegliere questo sviluppo o un altro (es.tuo, conversione codice colori resistenze).
La sostanza della questione credo si riduca, da parte tua, ad una valutazione della difficoltà del tipo di programma; però, è appunto una tua scelta.
Potresti anche andare su qualcosa di più semplice, l'importante è che l'idea ti convinca; dipende da quanto ho indicato nel Post [5].

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[12] Re: Programma mips progetto

Messaggioda Foto UtenteShika93 » 19 lug 2014, 23:55

Non saprei in realtà. Per un principiante mi sembra un po' troppo avanzato come programma e faccio fatica ancora a capire come potrebbe funzionare con dei numeri
Avatar utente
Foto UtenteShika93
282 1 5 7
Expert
Expert
 
Messaggi: 848
Iscritto il: 30 dic 2013, 21:28

2
voti

[13] Re: Programma mips progetto

Messaggioda Foto UtenteWALTERmwp » 20 lug 2014, 2:15

Una ulteriore spiegazione la potrebbe facilmente aggiungere anche un'altra persona, non vi è nulla di sofisticato in quanto proposto.
Con questo non intendo banalizzare, sia chiaro, ed il livello di difficoltà è e rimane comunque una valutazione relativa.

Facciamo così, io ti aggiungo un ulteriore approfondimento, sempre facendo riferimento al Post [9] dove, in sintesi, è riportato lo "sviluppo" del programma, poi valuterai se proseguire per implementare la logica o scegliere definitivamente di non seguire questa idea per cercarne un'altra.

- prima esecuzione
I) vengono inizializzate tutte le variabili (una variabile, un byte) generali e generiche che ti troverai ad utilizzare come il conteggio dei tentativi (count), il valore per i numeri indovinati nella giusta posizione (posok) ed il valore per i numeri indovinati ma in posizione sbagliata (nopos), ai quali viene assegnato valore zero.
Ai quattro byte destinati a rappresentare il "codice" da scoprire vengono assegnati dei valori; questi, si può decidere, compresi nel range da 1 a 6 (sei colori).
L'assegnazione può essere fatta anche manualmente, non è necessario tenerli nascosti alla "controparte" (come avviene nel gioco), che poi sei sempre tu, infatti l'importante è dimostrare d'avere "scritto" il programma e che questo risponde alle regole del gioco.
Supponiamo di assegnare i seguenti valori al "codice":
cod1=3, cod2=1, cod3=5, cod4=4 (sequenza codice: 3 1 5 4).
II) Assegni poi altrettanti valori ai quattro byte destinati a contenere la "chiave", ad esempio:
key1=2, key2=1, key3=4, key4=6 (sequenza chiave: 2 1 4 6).
III) Ora i programma deve eseguire la comparazione; in base alla regola del gioco dovrebbe assegnare alla variabile posok il valore 1(uno) e a nopos il valore 1(uno).
Infatti, nella "chiave", è stato proposto un numero che è presente nel "codice" ed è stato riportato anche nella stessa posizione (si tratta del numero 1), inoltre, sempre nella "chiave", è stato proposto un altro numero, che è sempre presente nel "codice", ma in una posizione differente (si tratta del numero 4).
IV) assegna i valori determinati tramite l'applicazione del criterio: posok=1 e nopos=1.
V) torna allo step (I) se posok vale 4; così non è quindi torna allo step (II).

- seconda esecuzione
II) Nel gioco, ovviamente, saresti all'oscuro del contenuto del "codice" e, in base alle informazioni in tuo possesso (valore di posok e nopos) e a tutte le "chiavi" proposte (sino ad ora in pratica una sola perché è stato compiuto un solo tentativo), dovresti proporre una nuova "chiave"; nel nostro "contesto", la chiave, a te ovviamente è nota ma proponi un'altra sequenza (facendo "vedere", per esempio, cosa accade cambiando un solo numero alla "chiave") dimostrando l'evoluzione del programma:
key1=5, key2=1, key3=4, key4=6 (sequenza chiave: 5 1 4 6).
III) il programma esegue la comparazione e assegna alla variabile posok il valore 1(uno) e a nopos il valore 2(due); infatti hai cambiato un solo numero mettendo il 5 al posto del 2 e, di fatto, hai migliorato la situazione.
Si ripete quindi lo step (IV) e (V) per tornare allo step (II).

Ora è chiaro che tu, inizializzando sia campi (variabili cioè registri) del "codice" che della "chiave" reciti il ruolo del Codificatore e del Decodificatore (cioè dei due giocatori) per cui puoi inserire i valori in modo tale da giungere prima del limite (nove esecuzioni) ad "indovinare" il "codice".

La parte "significativa" del programma, se vogliamo esprimerci in tal modo, è quella da implementare per lo step (III).
Il passaggio da un o step al successivo lo puoi gestire, per esempio, incrementando un'altra variabile; insomma, se hai capito cosa deve fare il programma trovi poi il modo per svilupparlo utilizzando le risorse che hai a disposizione.

Con questa spiegazione non so se ho fatto confusione alimentando i tuoi dubbi o, viceversa, ti ho fornito un chiarimento che incoraggia la scelta, vedi tu.
Ora vado a nanna.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[14] Re: Programma mips progetto

Messaggioda Foto UtenteShika93 » 21 lug 2014, 0:52

Spiegazione più che ottima e mi ha convinto ancora di più il fatto che tu stia sopravvalutando le mie capacità.
Non è decisamente semplice per un novellino fare una cosa del genere, almeno per come la vedo io.

Però l'idea della crittografia mi piace. Oggi ho pensato che potrei fare un programma che mi sembrava un po' più fattibile: il codice fiscale.

Ti andrebbe di darmi una mano?

Io l'avevo pensata in questo modo: inserire da tastiera cognome, nome e data di nascita e per il momento ometterei il luogo di nascita. Quindi fare un programma che prenda tre consonanti del cognome, tre consonanti del nome, le ultime due cifre dell'anno di nascita, una lettera del mese, due cifre per il giorno (+40 per le femmine) e per ogni campo inserirei i dati in un registro.
Dovrei quindi fare una routine che scansioni il campo del nome e cognome e che prenda solo 3 consonanti e le metta in un registro; nel caso in cui non ci siano 3 consonanti, prendere la prima vocale)

Per esempio: Rossi -> RSS; Mario -> MRA (2 consonanti + 1 vocale)
quindi nel registro ci metterò RSSMRA
e via di seguito.
Avatar utente
Foto UtenteShika93
282 1 5 7
Expert
Expert
 
Messaggi: 848
Iscritto il: 30 dic 2013, 21:28

0
voti

[15] Re: Programma mips progetto

Messaggioda Foto UtenteWALTERmwp » 21 lug 2014, 1:06

Shika93 ha scritto:Non è decisamente semplice per un novellino fare una cosa del genere, almeno per come la vedo io.
... non è un problema, l'importante è che tu sia consapevole delle tue attuali possibilità poi puoi puntare ad un altro obiettivo; l'alternativa sembrerebbe che tu l'abbia trovata quindi, se ne sei convinto, sei sulla buona strada.
Shika93 ha scritto:Ti andrebbe di darmi una mano?
... se sono in grado, dovesse servire, certamente come penso lo farebbe (o lo farà) anche qualcun altro che sta leggendo il thread.
Comunque, a prescindere da ciò, l'ambiente software che utilizzi non lo conosco ma non è un limite, l'importante è che tu sia autonomo per questo.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[16] Re: Programma mips progetto

Messaggioda Foto UtenteShika93 » 21 lug 2014, 19:43

Ripeto di essere un novello ancora, quindi se per sbaglio dovessi offendere qualcuno per dei codici che scrivo, non mi insultate xD

Quindi, io ho scritto la routine per inserire i dati da tastiera e lo spim usa la direttiva syscall insieme ad un registro nel quale passargli una costante. In base alla costante, legge o stampa dei bit, delle stringhe ecc.

Codice: Seleziona tutto
.data
str1:   .asciiz   "Inserisci cognome: "
.text
main:   la $a0, str1         
      li $v0, 4      #Stampa str1
      syscall
      
      li $v0, 8      #Richiesta del cognome
      syscall

Quindi in $v0, correggetemi se sbaglio, ho un insieme di caratteri rappresentanti il cognome,
stavo pensando se metterlo in memoria oppure dentro un altro registro. Io lo metterei dentro la memoria perché ogni carattere sono 8 bit e visto che ho una capienza di 32 bit per registro, quasi nessuno ha un cognome con 4 lettere e quindi non ci sta.
Per farlo uso la sw (store word) ma ho il dubbio di come fare.
O do il nome ad una variabile tipo cognome: .space 2000 e poi fare
Codice: Seleziona tutto
sw $v0, cognome

oppure carico un indirizzo (mi verrebbe da dire a caso) in un registro (tipo la $t0, 0x100000) e poi fare
Codice: Seleziona tutto
sw $v0, ($t0)
Avatar utente
Foto UtenteShika93
282 1 5 7
Expert
Expert
 
Messaggi: 848
Iscritto il: 30 dic 2013, 21:28

1
voti

[17] Re: Programma mips progetto

Messaggioda Foto UtenteCandy » 21 lug 2014, 20:13

Se sei ai primi passi, lascia stare le stringhe e concentrati magari su un codie per delle logiche numeriche. Tipo immissione di numeri e poi una funzione di ordinamento dei medesimi. Magari analizzando tecniche di ordinamento diverse tra loro ed il tempo utile di esecuzione calcolato dallo stesso dispositivo.
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10123
Iscritto il: 14 giu 2010, 22:54

0
voti

[18] Re: Programma mips progetto

Messaggioda Foto UtenteShika93 » 22 lug 2014, 19:51

Già sull'immissione ho un problema.
Mi dice: Exception occurred at PC=0x00400040 Unaligned address in store: 0x10010092

Codice: Seleziona tutto
      .data
str1:   .asciiz   "Inserisci cognome: "
lastname:   .space 112
      .text
main:   la $a0, str2         
      li $v0, 4      #Stampa str1
      syscall
      li $v0, 8      #Richiesta del cognome
      syscall
      sw $v0, lastname

perché e come lo risolvo?
Avatar utente
Foto UtenteShika93
282 1 5 7
Expert
Expert
 
Messaggi: 848
Iscritto il: 30 dic 2013, 21:28

0
voti

[19] Re: Programma mips progetto

Messaggioda Foto UtenteShika93 » 23 lug 2014, 19:11

Meglio fare una cosa per volta.
Ho provato a fare questa funzione per il solo cognome.

Codice: Seleziona tutto
      .data
str1:   .asciiz   "Inserisci cognome: "
voc:   .asciiz "aeiou"

lastname:   .space 64
   
      .text
main:   la $a0, str1         
      li $v0, 4      #Stampa str1
      syscall
      li $v0, 8      #Richiesta del cognome
      syscall

cerca:   lbu $s0, voc($v0)   #carattere corrente
      bnez $v0, $s0, salva
      addi $s0, $s0, 8
      
salva:   move $s0, $t0   #salva la consonante
      j cerca
      
      


Uso lbu per caricare ogni vocale (1 byte per volta) dentro s0 e lo confronto con quello che c'è dentro v0. Se sono diversi è una consonante e lo salva. Altrimenti passa alla vocale successiva

Però sinceramente non mi convince completamente ma non so come potrei farlo.
Il pensiero sarebbe: guarda ogni lettera dentro v0 e confrontala con tutte quelle dentro voc. Se la prima lettera del cognome non è una tra quelle contenute salvala e si ricomincia il ciclo; se invece sono uguali, passo alla lettera del cognome successiva fino a quando non trovo il terminatore. Dopo di che, tra tutte le consonanti salvate, ne tengo solo 3 e le altre le butto via. Cosa dovrei aggiungere perché faccia questa cosa?
Avatar utente
Foto UtenteShika93
282 1 5 7
Expert
Expert
 
Messaggi: 848
Iscritto il: 30 dic 2013, 21:28

0
voti

[20] Re: Programma mips progetto

Messaggioda Foto UtenteWALTERmwp » 23 lug 2014, 20:48

Shika93 ha scritto:Cosa dovrei aggiungere perché faccia questa cosa?
... quello che manca.
Battutina esclusa, fai un "passo alla volta".
Identifica le risorse che hai a disposizione, stabilisci i formati (esempio: stringhe, interi, char) che puoi o devi utilizzare e prova i loro impiego.
Se sei già a questo punto, prima di scrivere il codice, come ti sei riproposto ...
Shika93 ha scritto:Il pensiero sarebbe
... pensa a quello che dovresti fare.
Io ignoro il linguaggio che stai usando e altrettanto la funzione che attribuisci ad una variabile o alle variabili che intendi usare: esplicita questo (potrebbe essermi sfuggito qualcosa) e l'azione che vorresti compiere.
Se mi scrivi ...
Shika93 ha scritto:Uso lbu
... è come se tu m'avessi riportato nulla, $v0 cos'è ? Boh !
Procedi provando a darti un minimo di metodo (ammesso che tu non l'abbia già fatto ... ) e prova a scrivere una sorta di "diagramma di flusso" (non occorrono strumenti sofisticati, basta un foglio e una matita ... va beh, anche la gomma) in modo tale da "ordinare" le idee sino, magari, ad arrivare a vedere il punto d'arrivo.
Poi ti preoccuperai di individuare l'istruzione più adeguata al caso specifico.
E' solo un mio suggerimento, potrebbero esserne proposti altri, valuta tu.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

PrecedenteProssimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 34 ospiti