Diario delle lezioni
24 febbraio 2020
Introduzione al corso. Prime chiacchere da bar sulle architetture degli elaboratori. Memoria: rapprentazione di interi e stringhe. Istruzioni add, sub e beq. Paragrafi 2.1-2.5 del libro.
Esercizio 1: Dati 3 interi nei registri x5, x5, e x7, scrivere un programma che somma i 3 interi e mette il risultato in x8.
27 febbraio 2020
Istruzioni addi, lw e bgt. Paragrafi 2.1-2.5 del libro.
Esercizio 2: Dati 2 interi in memoria in word contigue, in x5 l'indirizzo del primo intero, scrivere un programma che mette in x6 la somma dei 2 interi.
Esercizio 3: Dati 1024 interi in memoria in word contigue, in x5 l'indirizzo del primo intero, in x6 il numero 1024, scrivere un programma che mette in x6 la somma dei 2 interi.
2 marzo 2020
Istruzioni sw, sd, ble, lui. Simulatore RARS. System call exit() e printInt(). Istruzione ecall. Chiamate di funzioni e procedure, istruzioni jal e jalr. Cenni di stack. I nomi dei registri. Paragrafi 2.1-2.5 e 2.7 del libro.
Esercizio 4: Dati 3 interi in memoria in word contigue, scrivere un programma che scrive nel terzo intero la somma dei primi due.
Possibile soluzione:
.data
.word 8
.word 9
.word 0
.text
lui s0, 0x10010
lw t1, 0(s0)
lw t2, 4(s0)
add t3, t1, t2
sw t3, 8(s0)
addi a7, zero, 10
ecall
Esercizio 5: Data una word in memoria che contiene l'intero 1024 seguita da 1024 interi in word contigue, stampare a video il massimo dei 1024 interi.
Possibile soluzione (fatta con 16 interi).
.data
.word 16
.word 5, -2, 1, 3, 7, 4, 2, 21, 12, 1 -1, 0, 0, 7, 9, 4
.text
lui s0, 0x10010
lw t0, 0(s0)
lw t1, 4(s0)
addi s1, s0, 8
addi t0, t0, -1
a: lw t2, 0(s1)
ble t2, t1, s
addi t1, t2, 0
s: addi s1, s1, 4
addi t0, t0, -1
bne t0, zero, a
addi a0, t1,0
li a7, 1
ecall
li a7, 10
ecall
5 marzo 2020
Lezione sospesa.
9 marzo 2020
Lezione sospesa.
12 marzo 2020
Lezione che sarà effettuata in modalità telematica. Collegatevi dalle 8:00 alle 10:00 con Google Meet al link https://meet.google.com/ztg-mekk-rtb
Il simulatore RARS. Alcuni piccoli esempi di programmi assembly Risc-V.
Il video della lezione è caricato sulla nostra Google Classroom codice xb6vg2s.
16 marzo 2020
Lezione che sarà effettuata in modalità telematica. Collegatevi dalle 8:00 alle 11:00 con Google Meet al link https://meet.google.com/ztg-mekk-rtb
Istruzioni logiche e di shift: or, ori, and, andi, xor, xori e pseudo-istruzione not. Chiamate di sistema per stampare stringhe e prendere in input un intero. Rappresentazione in memoria di liste linkate. Ricorsione.
Esercizio 6: Prendere in input da tastiera un intero e stampare a video "Pari.", se il numero è pari, e "Dispari.", se il numero è dispari.
Esercizio 7: Stampare a video la lunghezza di una lista di interi memorizzata in memoria.
Esercizio 8: Scrivere una funzione ricorsiva che calcola il fattoriale di un intero positivo.
Esercizio 9: Scrivere una funzione ricorsiva che clacola la lunghezza di una lista di interi memorizzata in memoria.
Esercizio 10 (a casa): Scrivere una funzione ricorsiva che calcola la somma di una lista di interi memorizzata in memoria.
Esercizio 11 (a casa): Scrivere una funzione ricorsiva che inverte una lista.
19 marzo 2020
Lezione che sarà effettuata in modalità telematica. Il collegamento sarà fatto diversamente dal solito, con un invito da Calendar a tutti gli iscritti alla Classroom.
Istruzioni operative: Andate sulla Classroom codice xb6vg2s con il vostro account @studenti, iscrivetevi se non siete ancora iscritti, andate sul Calendar e cliccate sul link di Google Meet (Google Hangouts).
Correzione esercizio per invertire una lista. System call 11 per la stampa di un carattere. Architettura Risc-V che implementa add e lw. Paragrafi 4.1-4.3 del libro.
23 marzo 2020
Architettura Risc-V che implementa add, lw, sw e beq. Paragrafi 4.3-4.4 del libro. Rappresentazione in memoria di alberi binari e matrici.
Esercizio 12: Preso un intero n in input dall'utente, stampare fattoriale(n) calcolato con una funzione ricorsiva.
Esercizio 13: Dato un albero di interi in memoria, calcolare la somma degli interi con una funzione ricorsiva.
Esercizio 14: Data una matrice di interi in memoria, calcolare la somma degli elementi della matrice.
Esercizio 15 (a casa): Dato un albero di interi in memoria, calcolare il numero dei nodi con una funzione ricorsiva.
Esercizio 16 (a casa): Data una matrice di interi in memoria, calcolare la traccia della matrice (la somma degli elementi della diagonale).
26 marzo 2020
Introduzione alla pipeline. Paragrafo 4.4 del libero. Correzione dell'esercizio 15.
30 marzo 2020
Pipeline. Paragrafo 4.4 del libero.
2 aprile 2020
Correzione esercizio 16. Anticipazione della valutazione della branch allo stadio ID. Paragrafo 4.4 del libero. Assegnamento dell'esercizio a casa valido per l'esame finale.
Esercizio 17: Dato un albero di interi in memoria, calcolarne l'altezza con una funzione ricorsiva.