Additions:
~- digitare ##sudo apt-get install gcc-multilib##, inserire la password amministratore ##biar## e dare conferma
Deletions:
~- digitare ##apt-get install gcc-multilib##, inserire la password amministratore ##biar## e dare conferma
Additions:
Si noti l'opzione ##-m32## che serve per generare codice IA32 in un sistema operativo a 64 bit.
Deletions:
Si noti l'opzione ##-m32## che serve per generare codice IA32.
Additions:
==Soluzioni==
Le soluzioni dell'esercitazione sono [[http://www.dis.uniroma1.it/~sc/upload/esercitazioni/SC1-151020-Eserc1.zip qui (file zip, 5.3 KB)]].
Additions:
# int a = 5; // usiamo nomi delle variabili corrispondenti ai registri che useremo in IA32
~& Suggerimento: per accedere ai parametri IA32, si suggerisce di copiarne il contenuto in registri.
Deletions:
# int a = 5; // usiamo nomi delle variabili per indicare i registri che useremo in IA32
Additions:
~& Suggerimento: si usi il seguente approccio. Si traduca dapprima il programma C originale in un programma C equivalente in cui tutte le operazioni aritmetiche hanno la forma D = D op S. Si traduca poi questo programma C equivalente in IA32. Si suggerisce di inserire per comodità i programmi C da tradurre direttamente nel modulo ##.s## in forma di commento come segue (usando la sintassi: # commento):
# Programma C originale:
# int es2() {
# return 5*6-2*7-1;
# }
# Programma C equivalente:
# int es2() {
# int a = 5; // usiamo nomi delle variabili per indicare i registri che useremo in IA32
# a = a * 6;
# int c = 2;
# c = c * 7;
# a = a - c;
# a = a - 1;
# return a;
# }
.globl es2
es2:
...
ret
Deletions:
~& Suggerimento: si usi il seguente approccio. Si traduca dapprima il programma C originale in un programma C equivalente in cui tutte le operazioni aritmetiche hanno la forma D = D op S. Si traduca poi questo programma C equivalente in IA32. Si suggerisce di inserire per comodità i programmi C da tradurre direttamente nel modulo ##.s## in forma di commento come segue:
#
Additions:
~& Suggerimento: si usi il seguente approccio. Si traduca dapprima il programma C originale in un programma C equivalente in cui tutte le operazioni aritmetiche hanno la forma D = D op S. Si traduca poi questo programma C equivalente in IA32. Si suggerisce di inserire per comodità i programmi C da tradurre direttamente nel modulo ##.s## in forma di commento come segue:
#
Deletions:
~& Suggerimento: si usi il seguente approccio. Si traduca dapprima il programma C originale in un programma C equivalente in cui tutte le operazioni aritmetiche hanno la forma D = D op S. Si traduca poi questo programma C equivalente in IA32.
Additions:
In quest'aula lavoreremo con l'installazione nativa di Linux Debian.
In quest'aula lavoreremo con Linux LXLE nella VM Oracle Virtualbox BIAR.
Deletions:
Selezionare ##Sistema -> Oracle VM Virtualbox## dal menu delle applicazioni. Chiudere questa pagina e avviare ##LXLE-BIAR##, la VM di riferimento per il corso. **Riaprire questa pagina in LXLE**, continuando da lì.
Additions:
Selezionare ##Sistema -> Oracle VM Virtualbox## dal menu delle applicazioni. Chiudere questa pagina e avviare ##LXLE-BIAR##, la VM di riferimento per il corso. **Riaprire questa pagina in LXLE**, continuando da lì.
Deletions:
Selezionare ##Sistema -> Oracle VM Virtualbox## dal menu delle applicazioni. Chiudere questa pagina e avviare ##LXLE-BIAR##, la VM di riferimento per il corso. Riaprire questa pagina in LXLE**, continuando da lì.
Additions:
Selezionare ##Sistema -> Oracle VM Virtualbox## dal menu delle applicazioni. Chiudere questa pagina e avviare ##LXLE-BIAR##, la VM di riferimento per il corso. Riaprire questa pagina in LXLE**, continuando da lì.
Deletions:
Dal menu delle applicazioni, selezionare ##Sistema -> Oracle VM Virtualbox## e avviare ##LXLE-BIAR##, la VM di riferimento per il corso. Chiudere il browser e riaprire questa pagina in LXLE, continuando da lì.
Additions:
~- digitare ##apt-get install gcc-multilib## e dare conferma
Dal menu delle applicazioni, selezionare ##Sistema -> Oracle VM Virtualbox## e avviare ##LXLE-BIAR##, la VM di riferimento per il corso. Chiudere il browser e riaprire questa pagina in LXLE, continuando da lì.
~- digitare ##apt-get install gcc-multilib##, inserire la password amministratore ##biar## e dare conferma
Deletions:
~- digitare ##apt-get install gcc-multilib## e dare conferma con s
Dal menu delle applicazioni, selezionare ##Sistema -> Oracle VM Virtualbox## e avviare ##LXLE-BIAR##, la VM di riferimento per il corso.
~- digitare ##apt-get install gcc-multilib##, inserire la password amministratore ##biar## e dare conferma con y
Additions:
Prima di iniziare l'esercitazione, si prega di riempire il ""questionario anonimo"" sul primo anno del corso di laurea in Ingegneria Informatica e Automatica.
Deletions:
Prima di iniziare l'esercitazione, si prega di riempire il [[https://docs.google.com/a/dis.uniroma1.it/forms/d/1hphxisuAUQYHcblzI2jojQ1waoS_StrZbiZVuwNaaT4/viewform questionario anonimo]] sul primo anno del corso di laurea in Ingegneria Informatica e Automatica.
Additions:
Consultare il ""capitolo 4"" della dispensa per una descrizione delle istruzioni IA32. Si ricordi che il valore di ritorno di una funzione è nel registro A e che è possibile usare liberamente come se fossero variabili solo i registri A, C e D. Si tenga presente inoltre che l'istruzione prodotto ##imul## deve avere come destinazione necessariamente un registro.
Deletions:
Consultare il ""capitolo 4"" della dispensa per una descrizione delle istruzioni IA32. Si ricordi che il valore di ritorno di una funzione è nel registro A e che è possibile usare liberamente come se fossero variabili solo i registri A, C e D. Si tenga presente inoltre che l'istruzione prodotto ##imul## deve avere come destinazione necessariamente un registro.
Additions:
Consultare il ""capitolo 4"" della dispensa per una descrizione delle istruzioni IA32. Si ricordi che il valore di ritorno di una funzione è nel registro A e che è possibile usare liberamente come se fossero variabili solo i registri A, C e D. Si tenga presente inoltre che l'istruzione prodotto ##imul## deve avere come destinazione necessariamente un registro.
Deletions:
Consultare il ""capitolo 4"" della dispensa per una descrizione delle istruzioni IA32. Si ricordi che il valore di ritorno di una funzione è nel registro A e che è possibile usare liberamente come se fossero variabili solo i registri A, C e D. Si tenga presente inoltre che l'istruzione prodotto ##imul## deve avere come destinazione necessariamente un registro.
Additions:
Consultare il ""capitolo 4"" della dispensa per una descrizione delle istruzioni IA32. Si ricordi che il valore di ritorno di una funzione è nel registro A e che è possibile usare liberamente come se fossero variabili solo i registri A, C e D. Si tenga presente inoltre che l'istruzione prodotto ##imul## deve avere come destinazione necessariamente un registro.
Deletions:
Consultare il [[https://docs.google.com/document/d/1t04FOA9a3FHy7GHF5jQBS-py5o4ITUzXTNyRaFawkoA/edit#heading=h.1czqy5i63glj capitolo 4]] della dispensa per una descrizione delle istruzioni IA32. Si ricordi che il valore di ritorno di una funzione è nel registro A e che è possibile usare liberamente come se fossero variabili solo i registri A, C e D. Si tenga presente inoltre che l'istruzione prodotto ##imul## deve avere come destinazione necessariamente un registro.
Additions:
$ mkdir /home/biar/Desktop/sc1516
$ cd /home/biar/Desktop/sc1516
Additions:
~- digitare ##apt-get update##
Dal menu delle applicazioni, selezionare ##Sistema -> Oracle VM Virtualbox## e avviare ##LXLE-BIAR##, la VM di riferimento per il corso.
~- digitare ##apt-get install gcc-multilib##, inserire la password amministratore ##biar## e dare conferma con y
Deletions:
TBA
Additions:
Il primo comando crea un file vuoto chiamato ##hello.c##. Il secondo apre l'editor di testo ##geany##. Si noti l'& alla fine della riga, che serve per lanciare il programma "in background". Se omettiamo l'& e ##geany## non è già aperto, il terminale si blocca finché non viene chiuso ##geany##. Osserviamo che usando la **freccia su** si riprendono **comandi precedentemente inseriti** nel terminale. Inoltre, con il tasto **tabulazione** (TAB) si ha **autocompletamento** dei nomi di file e directory nel terminale.
Deletions:
Il primo comando crea un file vuoto chiamato ##hello.c##. Il secondo apre l'editor di testo ##geany##. Si noti l'& alla fine della riga, che serve per lanciare il programma "in background". Se omettiamo l'&, il terminale si blocca finché non viene chiuso ##geany##. Osserviamo che usando la **freccia su** si riprendono **comandi precedentemente inseriti** nel terminale. Inoltre, con il tasto **tabulazione** (TAB) si ha **autocompletamento** dei nomi di file e directory nel terminale.
Additions:
Il primo comando crea un file vuoto chiamato ##hello.c##. Il secondo apre l'editor di testo ##geany##. Si noti l'& alla fine della riga, che serve per lanciare il programma "in background". Se omettiamo l'&, il terminale si blocca finché non viene chiuso ##geany##. Osserviamo che usando la **freccia su** si riprendono **comandi precedentemente inseriti** nel terminale. Inoltre, con il tasto **tabulazione** (TAB) si ha **autocompletamento** dei nomi di file e directory nel terminale.
Deletions:
Il primo comando crea un file vuoto chiamato ##hello.c##. Il secondo apre l'editor di testo ##geany##. Si noti l'& alla fine della riga, che serve per lanciare il programma "in background". Se omettiamo l'&, il terminale si blocca finché non viene chiuso ##geany##. Si noti che usando la freccia su si riprendono comandi precedentemente inseriti nel terminale. Inoltre, con il tasto tabulazione (TAB) si ha autocompletamento dei nomi di file e directory nel terminale.
Additions:
Il primo comando crea un file vuoto chiamato ##hello.c##. Il secondo apre l'editor di testo ##geany##. Si noti l'& alla fine della riga, che serve per lanciare il programma "in background". Se omettiamo l'&, il terminale si blocca finché non viene chiuso ##geany##. Si noti che usando la freccia su si riprendono comandi precedentemente inseriti nel terminale. Inoltre, con il tasto tabulazione (TAB) si ha autocompletamento dei nomi di file e directory nel terminale.
Deletions:
Il primo comando crea un file vuoto chiamato ##hello.c##. Il secondo apre l'editor di testo ##geany##. Si noti l'& alla fine della riga, che serve per lanciare il programma "in background". Se omettiamo l'&, il terminale si blocca finché non viene chiuso ##geany##.