|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Per il compilatore C++ leggevo fino a quando non trovavo una parola valida.
Ma per me la situazione era diversa... if(pippo==3) pippo++; è equivalente a if(pippo==3) pippo++; Mentre a te conviene leggere una riga intera... OPCODE dst , src Usa questo algoritmo : Leggi una riga intera Elimina gli eventuali spazi in testa (con la funzione isspace di ctype.h) Metti i caratteri validi in una stringa che rappresenta il codice operativo. Se non riconosci un operatore valido genera un errore. Se l'opcode necessita di un operatore elimina gli spazi fino al primo carattere valido e metti i caratteri validi fino alla ',' o alla fine della riga nella stringa operatore1 (elimina gli spazi). Se non c'è un operatore genera un errore. Se l'opcode necessita di un altro operatore elimina gli spazi fino primo carattere valido dopo la virgola e metti i caratteri validi da lì fino alla fine della riga (eliminando sempre gli spazi) nella stringa operatore2. Ora è il momento di valutare se gli operatori sono validi...ti consiglio di farti una specie di file di dati in cui specifichi quali sono i possibili tipi di operatori validi sia per src che per dst per ogni opcode. Ciao !!! |
|
|
|
|
|
#22 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
Sai cionci, come dici tu andrebbe bene, solo che devo soddisfare le "direttive" del prof. Lui vuole che si crei a priori un file di testo ordinato che contenga il nome dell'OPCODE e la sua traduzione in binario (una rappresentazione con caratteri 0 o 1, non vero binario). Quando si va ad analizzare il sorgente, per semplicità non bisogna far controlli sulla validità degli OPCODE e operandi, oltretutto la riga deve essere formattata, es. da 0 a 10 label (opzionale,chiaro), da 11 a 20 OPCODE, da 21 a 41 operando/i, commento. Mentre leggiamo, dobbiamo costruire una tabella che contenga label, opcode, operandi, ecc. tutto questo nella prima passata. Nella seconda, leggendo si vanno a sostituire gli opcode facendo uso della tabella ordinata, le variabili, le label ecc. Ora, voglio abbozzare l'algoritmo della prima passata senza scendere troppo nei dettagli della sintassi, perchè giovedì mattina lo confronterò con quello fatto dagli altri 3 amici del mio grupppetto, e ne discuteremo, cercando di farne uscire qualcosa di positivo.
La vera fregatura è che, non avendo pratica ed esperienza in questo tipo di programmazione, contavo di aiutarmi con i costrutti e i suggerimenti che ci sono sul libro di Stroustrup, che avevo cominciato a masticare (contenitori standard e roba varia), poi il prof ha niente C++... cionci se potessi continuare a darmi delle dritte te ne sarei molto grato, ciao. |
|
|
|
|
|
#23 |
|
Senior Member
Iscritto dal: Oct 2001
Città: Modugno (BA)
Messaggi: 165
|
eheh...
antyf, il tuo prof sara' mica quel gran...ehm...del Prof Refice del Politecnico di Bari? ...vista la tua location direi di si'... anch'io devo fare al piu' presto quell'esame... ma non mi decido mai a cominciare... tu sei ad Elettronica o Informatica? stai seguendo il corso quest'anno? |
|
|
|
|
|
#24 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
In ogni caso ti onviene leggere una riga intera... Se da 0 a 10 non trovi una stringa di caratteri validi (solitamente formata numeri e lettere...puoi usare isalpha e isnumber smpre della ctype) significa che non c'è label... Se da 11 a 20 non trovi una stringa di caratteri validi significa che la riga è vuota...altrimenti scrivi l'opcode tradotto nel file intermedio, anche se secondo me per fare la traduzione devi in gni caso verificare che l'opcode sia valido, perchè se cerchi nella tua struttura in memoria e non trovi alcuna entry valida sinigica che ll'istruzione non è valida. A questo punto supponendo che da 21 a 41 scrivi tutto quello che trovi direttamente sul file intemedio. Poi da 41 in poi è un commento e anche quello lo scrivi nel file intermedio. Credo che in questo modo vada bene... |
|
|
|
|
|
|
#25 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
x ArtificialBoy: sto ad Informatica, e tu? forse ci conosciamo. Il corso ci stiamo alternando in gruppo a seguirlo, perchè tanto sai bene che Refice dice poco. Quando comincerai, compagno di "sventura"?
Visita il mio sito e se ti va iscriviti al forum, più diventiamo, meglio possiamo scambiarci info. Fatti sentire x cionci: grazie, ti faccio sapere cosa combino. P.S. per ora nel mio forum non c'è una sezione programmazione, non c'è ancora niente per la verità, cmq se un giorno l'introdurrò mi piacerebbe averti come superesperto |
|
|
|
|
|
#26 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Grazie
Ciao |
|
|
|
|
|
#27 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
hashing
dovrei applicare un algoritmo di hashing per memorizzare delle stringhe: conosco solo quello che utilizza il resto. Ce ne sono altri più evoluti e complessi e se si potete illustrarmene qualcuno? Thanx
|
|
|
|
|
|
#28 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Re: hashing
Quote:
|
|
|
|
|
|
|
#29 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
per hash intendo l'algoritmo usato per gestire una struttura ad accesso calcolato. L'algoritmo permette di generare un indirizzo a partire da un valore assunto dalla stringa (nel mio caso). In questo modo, se l'algoritmo è fatto bene e quindi si hanno relativamente pochi casi di collisione (da gestire opportunamente), la ricerca è ottimizzata al max
|
|
|
|
|
|
#30 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Hai qualche esempio di algoritmo di hashing o qualche link ? Grazie....
|
|
|
|
|
|
#31 |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
link non ne ho perchè non ho ancora cercato, cmq l'esempio te lo posso fare dicendoti per cosa devo utilizzarla io.
Mi serve per memorizzare le label del sorgente e associarle all'indirizzo.
|
|
|
|
|
|
#32 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Capito...è molto interessante...
Dipende se vuoi o meno limitare il numero di elementi in memoria...altrimenti di algoritmi sicuramente + efficienti ne puoi trovare di sicuro... |
|
|
|
|
|
#33 |
|
Member
Iscritto dal: Jan 2001
Città: Unreal city
Messaggi: 32
|
x Antyf
Anch' io devo fare il tuo stesso progetto (8086) e conoscendo Refice so che sarà molto duro. Sto seguendo il corso di Sistemi di Elaborazione I di Ingegneria informatica al Politecnico di Bari e confido nel terminare il progetto entro febbraio. Per caso hai seguito la lezione del 06/12/2001 nella quale ha spiegato la funzione "fwrite" del C? Bhè ti dirò che ha detto molte cazzate e non è la prima volta. Comunque sia in bocca al lupo. |
|
|
|
|
|
#34 | |
|
Member
Iscritto dal: Aug 2001
Città: quasi vicino Bari
Messaggi: 32
|
Quote:
teniamoci in contatto, se ti va iscriviti al mio forum in bocca al lupo anche a te |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:41.



















