Chat del 17 Maggio 2017 dalle 18:31:55 alle 19:07:45
- Stefano Salvi
- Eccoci. Quando volete partiamo.
- Alessandro BRANCHINI
- buopnasera
- Cos\'è memorizzato nella tabella degli esterni?
- Nicholas BRACCAIOLI
- buonasera
- Christian CINESI
- Buonasera
- Francesco ROCCA
- buonasera
- Alessandro BRANCHINI
- Abbiamo detto che il linker crea una tabella globale dei simboli. Vorrei sapere come viene creata e usata?
- Cosa faccio se non metto un .org?
- Nei miei appunti ho scritto che il linker scrive al chiamante (penso l\'assemblatore) l\'indirizzo dell\'istruzione chiamata. Non ho capito cosa vuol dire, se lei ha capito che cos\'ho scritto potrebbe spiegarmelo?
- Stefano Salvi
- Nella tabella degli esterni vengono memorizzati tutti i simboli che non sono definiti nel sorgente ma che vengono qui utilizzati. Per ogni simbolo, oltre al nome, vengono memorizzate tutte le posizioni in cui è utilizzato.
- Alberto COMPAGNONI
- Buonasera
- Nicola RADAELLI
- Potrebbe spiegare le librerie dinamiche
- Nicolas BENATTI
- buonasera prof (Branchini non cominciare ad assillare ;-)
- Alessandro BRANCHINI
- ok, grazie
- Stefano Salvi
- Branchini 2: il linker RACCOGLI tutte le tabelle dei pubblici dei vari .obj in un\'unica tabella globale dei pubbblici. Quando crea questa tabella, avendo deciso l\'indirizzo di caricamente dell\'obj che contiene i simboli, correggerà (rilocherà) gli indirizz della tabella. Quando poi il linker trova un esterno in un obj, lo cerca nella tabella globale dei pubblici, per saperne l\'indirizzo.
- Branchini 3: se non metto .org allora sarà il linker a decidere da dove parte il mio codice (in base ai parametri che gli darà l\'utente nelk momento in cui lo chiama).
- Alessandro BRANCHINI
- ok, grazie
- Stefano Salvi
- Branchini 4: il linker sistema tutte le "call" che non hanno l\'indirizzo chimamto perché è esterno, scrivendoci dentro l\'indirizzo della subroutine chiamata, che è stato raccolto nella tabella globale dei pubblici.
- Nicolas BENATTI
- prof, che differenza c\'è (se ce ne sono, dagli appunti penso di sì), tra la tabella globale dei simboli e la tabella globale dei pubblici ?
- Alberto COMPAGNONI
- Per fare l\'esercizo sulle istruzioni in linguaggio macchina, dobbiamo usare il linguaggio che abbiamo fatto in classe (quello delle fasi) oppure l\'assembly dell\'hc08?
- Stefano Salvi
- Radaelli: le librerie dinamiche vengono utilizzate nei sistemi multitasking, nei quali più programmi girano contemporaneamente. In questi sistemi, invece di caricare una copia (ad esempio) della printf attaccata dentro ognio programma, i programmi "dicono che usano la printf" e il loader carica in memoria la libreria che contoiene la printf una volta sola. I programmi la condividono.
- Nicola RADAELLI
- ok grazie
- Alessandro CONSOLINI
- ma quindi quante sono le tabelle e molto brevemente a cosa servono
- Alberto COMPAGNONI
- L\'assemblatore in linea, nelle sue operazioni di base, individua, valuta e produce (cosa ?)
- Stefano Salvi
- Benatti: nessuna. La tabella è sempre quella. La tabella globale dei simboli (per similitudine con la tabella "locale" dei simboli che si crea l\'assemblatore) contiene tutti i simboli pubblici che sono nei vari file oggetto. Raccoglieno i "pubblici", la chiamo anche tabella globale dei pubblici(per similitudine con le tabelle dei pubblici che sono state raccolte).
- Alex TARANA
- cosa fa l\'assemblatore nella prima passata?
- Nicolas BENATTI
- perfetto, grazie
- Davide TENEDINI
- quale è la differenza tra indirizzamento immediato e implicito?
- Christian CUZZI
- Nella prima passata vengono create sia la tabella dei pubblici che degli esterni?
- Stefano Salvi
- Compagnoni: le ISTRUZIOI sono "di fantasia", quindi in un "linguaggio moi" che a volte somiglia a quello usato i classe e a volte con quello dell\'HC08. Le fasi hanno il LORO linguaggio.
- Alberto COMPAGNONI
- ok, grazie
- Stefano Salvi
- Tarana: nella prima passata l\'assemblatore interpreta istruzioni e parametri, calcola la posizione di ogni istruzione e compila la tabella dei simboli.
- Tenedini: l\'indirizzamento IMMEDIATO indica che il valore è una COSTANTE. Nell\'indirizzamento implicito invece il valore è in una VARIABILE. La variabile però non è nominata esplicitamente tra i parametri: è implicita nel tipo di istruzione.
- Alessandro BRANCHINI
- Quando scriviamo le fasi compiute per svolgere un operazione all\'interno del processore, come facciamo a indicare un operazione di confronto e dire "se ho questo vai li altrimenti vai là"?
- Alberto COMPAGNONI
- L\'assemblatore in linea, nelle sue operazioni di base, individua, valuta e produce (cosa ?)
- Davide TENEDINI
- ok grazie
- Diego CASTAGNA
- Quante sono le tabelle in totale e quali sono?
- Stefano Salvi
- Cuzzi: probabilmente nella prima passata vengono RACCOLTE LE INFORMAZIONI per produre in output le tabelle dei pubblici e degli sterni. Probabilmente per i simboli pubblici viene solo aggiunto un flag nella tabella dei simboli normale, mentre per gli esterni vengono raccolti gli indirizzi da modificare.
- Nicolas BENATTI
- prof, l\'ndirizzo dei simboli nella tabella globale dei simboli pubblici è anche\'asso rilocabile, giusto? Perchè non è detto che gli obj siano sempre caricati nello stesso ordine e/o nello stesso posto in memoria
- Nicholas BRACCAIOLI
- prof,cosa fa il .area?
- Stefano Salvi
- Branchini: in realtà solo una riga delle fasi sarà "condizionata" e potrebbe essere scritta: "se i flag valgono ... allora copia TAR in PC"
- Francesco PIGNOLI
- prof, cos\'è un obj di preciso?
- Alessandro CONSOLINI
- ma .org cosa indica?
- Stefano Salvi
- Compagnooni: l\'assemblatore in linea interpreta il mnemonico, valuta i parametri e produce opcode e parametri in forma binaria.
- Castagna: nel file oggetto ci sono quattro parti: il codice rilocabile, la tabella di rilocazione, la tabella deio pubblici e la tabella degli esterni, quindi tre tabelle (e un codice).
- Alberto COMPAGNONI
- Grazie mille
- Christian CUZZI
- A che cosa serve l\'ABS?ù
- Tommaso SPROCATI
- cosa succede dopo che il linker ha aggiunto i simboli pubblici degli obj alla tabella dei simboli pubblici globale?
- Alessandro BRANCHINI
- Quindi se dovessi scrivere la fase dovrei scrivere: SE( FLAG_X == X ) WRITE TAR -> PC ?
- Christian CINESI
- Qual\'è il compito del loader?
- Stefano Salvi
- BENATTI: l\'indirizzo nella tabella globale dei simboli è RILOCATO perché il loinker, prima di inserire il simbolo in tabella, conoscendo l\'indirizzo di inszio del pezzo di codice, corregge l\'indirizzo del singolo simbolo.
- Braccaioli: .area consente di raggruppare pezzi di codice/variabili inseriti in sorgenti diversi, in modo che il linker li metta nella stessa area di memoria (ad esempio l\'area della ROM o della RAM).
- Nicholas BRACCAIOLI
- ah ok grazie mille
- Francesco PIGNOLI
- dughjkbvjhvgx cvbcjhvvjh db cxzvbhefwq
- Christian CINESI
- Cosa contiene la tabella di rilocazione?
- Alessandro BRANCHINI
- interessante
- Stefano Salvi
- Pinoli: un "obij" o meglio "file oggeto" è un file prodotto dall\'assemblatore rilocabile che contiene le informazioni per il linker per mettere insieme i pezzi e costruire il programma completo. Contiene le quattro aprti elencate prima.
- Alex TARANA
- quante sono le tabelle e a cosa servono?
- Stefano Salvi
- Consolini: .org indica un indirizzo assoluto dal quale l\'assemblatore comincerà a mettere quello che produce (codice o variabili).
- Francesco PIGNOLI
- grazie prof
- Nicolas BENATTI
- perfetto, grazie
- Stefano Salvi
- Cuzzi: ABS (parametro di .area) serve per indicare che l\'area ha già dentro gli indirizzi giusti e quindi il linker non deve metterla insieme alle atre dello stesso nome e rilocarla.
- Alessandro BRANCHINI
- mi ci sono da studiare anche le istruzioni in linguaggio assembler?
- Stefano Salvi
- Sprocati: quando il linker ha aggiunto TUTTI i simboli pubblici dei vari OBJ nella tabella globale die simboli può cominciare a produrre il codice definitivo (e metterlo nel file d\'uscita, l\'eseguibile) perché è in grado di sistemare l\'indirizzo di ogni chiamata di procedura o di variabile esterna, lasciata in sospeso dall\'assemblatore.
- Alessandro BRANCHINI
- cosa devo installare per usare l\'emulatore di HC08 oltre a sdcc?
- Nicolas BENATTI
- il pacchetto debian che trovi sul sito del prof
- Stefano Salvi
- Branchini: esattamente. Quel "se" in realtà si tradurrà in un\'operatore logico (tipo una "and").
- Alessandro BRANCHINI
- si, ma quale
- Tommaso SPROCATI
- ok grazie
- Nicolas BENATTI
- salvi.mn.it
- sezione software
- hc08pgm
- Alessandro BRANCHINI
- ok
- Nicolas BENATTI
- scarica il debian per debian
- Stefano Salvi
- Cinesi: la tabella di rilocazione contiene gli indirizzi all\'interno del codice rilocabile che devono essere modificati se cambio l\'origine del codice (lo sposto su e giù per la memoria).
- Christian CINESI
- Ok, grazie
- Stefano Salvi
- Tarana: riguarda indietro che ti dovrei aver già risposto (guarda anche le risposte degli altri, per il funzionanmento delle tabelle).
- Branchini: no, le isstruzioni non le devi studiare. Quando le userai in lab, le troverai nel documento, nel compito te le descrivo nella domanda.
- Alberto COMPAGNONI
- Il linguaggio delle fasi è quello con le istruzioni RD,WR,\ ecc... ?
- Alessandro BRANCHINI
- ok, grazie
- Stefano Salvi
- Branchini: devi installare SDCC dal software manager normale ed il pacchetto di hc08pgm tirandotelo giù da qualche parte (tipo moodle o il mio sito).
- Alessandro BRANCHINI
- Quindi se dovessi scrivere la fase dovrei scrivere: SE( FLAG_X == X ) WRITE TAR -> PC ?
- ok
- Leonardo BRUSINI
- branchini ti ha gia risposto
- Stefano Salvi
- Compagnoni: esattamente. Il linguaggio delle fasi dice che fili accendo e spengo.
- Alessandro BRANCHINI
- ah si?
- hai ragione, sono cieco
- Stefano Salvi
- No, è che siete tanti...
- Alberto COMPAGNONI
- grazie
- Nicolas BENATTI
- eh purtroppo...
- Stefano Salvi
- Visto che siete bravi, è anche una ricchhezza.
- Che ne dite, possiamo chiudere e lasciare il posto ai prossimi (4ITel)?
- Alessandro BRANCHINI
- direi di sì
- Tommaso SPROCATI
- quante sono le tabelle alla fine di tutto?
- Diego CASTAGNA
- Le quarte sono cattive >.>
- Stefano Salvi
- Allora buona cena, buon riposo e in bocca a lupo!
- Alessandro BRANCHINI
- parlo proprio io
|