1/28
Set di flashcard Q&A in italiano che copre la catena di compilazione con GCC, struttura dei file oggetto, differenze tra librerie statiche e dinamiche, fasi di esecuzione della CPU RISC-V, datapath, unità di controllo e segnali principali.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Qual è la funzione di un toolchain in ambito di programmazione C?
Trasformare un programma scritto in linguaggio di alto livello in linguaggio macchina eseguibile dalla CPU, passando per compilatore, assembler, linker e loader.
Quale componente unisce più file oggetto risolvendo i simboli non definiti localmente?
Il linker.
Che cosa fa il comando "gcc -S file.c"?
Compila il sorgente C e produce un file assembly (.s).
Con quale opzione di gcc si genera un file oggetto a partire da assembly?
"-c": es. gcc -c file.s genera file.o.
Qual è la differenza tra assembler e compilatore?
Il compilatore traduce il codice di alto livello in assembly; l'assembler traduce l'assembly in linguaggio macchina (file oggetto).
Quali segmenti principali compongono un file oggetto?
Header, text segment, data segment, tabella dei simboli e tabella di rilocazione.
A cosa serve la tabella di rilocazione in un file oggetto?
Contiene la lista dei "buchi" da patchare con gli indirizzi assoluti dei simboli durante il linking.
Che differenza c’è tra librerie statiche (.a/.lib) e dinamiche (.so/.dll)?
Statiche: il codice usato viene copiato nell’eseguibile; dinamiche: l’eseguibile contiene solo riferimenti e il linking avviene a run-time.
Qual è un vantaggio delle librerie statiche?
L’eseguibile è autocontenuto; non dipende da file esterni a run-time.
Qual è uno svantaggio delle librerie dinamiche?
Il programma non è autocontenuto e richiede la presenza della libreria corretta a run-time.
Cosa si intende per "lazy linking" nelle librerie dinamiche?
La libreria viene caricata e collegata solo quando la funzione è effettivamente chiamata, non all’avvio del programma.
Quali sono le prime due fasi comuni di esecuzione di qualsiasi istruzione in RISC-V?
1) Prelievo dell’istruzione dalla memoria; 2) Lettura dei registri operandi.
In quali tre categorie divergono i passi successivi di esecuzione dopo l’uso della ALU?
Istruzioni di accesso memoria (load/store), aritmetico/logiche, salti condizionati.
A cosa serve un multiplexer (MUX) nel datapath?
Seleziona, sotto controllo dell'unità di controllo, quale tra più segnali deve viaggiare su una linea condivisa.
Che ruolo ha il Program Counter (PC)?
Contiene l’indirizzo dell’istruzione da caricare nel ciclo corrente.
Perché l’offset di un salto condizionato RISC-V viene shiftato a sinistra di 1 bit?
Perché le istruzioni sono allineate almeno a 2 byte, l’ultimo bit è sempre 0; lo shift codifica lo spiazzamento in mezze parole e raddoppia lo spazio indirizzabile.
Quali segnali di controllo principali governa l'unità di controllo di primo livello?
RegWrite, MemRead, MemWrite, MemtoReg, ALUSrc, PCSrc, e i 2 bit ALUop.
Come vengono codificate le operazioni ALU tramite ALUop nei casi comuni?
00 = somma (load/store), 01 = sottrazione (branch), 10 = operazione di tipo R definita da funct7/funct3.
Qual è la funzione dell’unità di controllo dell’ALU (secondo livello)?
Riceve ALUop, funct7 e funct3 per produrre il codice esatto dell’operazione che la ALU deve eseguire.
Quando il segnale RegWrite è asserito e qual è il suo effetto?
È asserito quando l’istruzione deve scrivere nel register file; abilita la scrittura nel registro destinazione.
Che cosa fa il segnale ALUSrc quando è attivo?
Sceglie l'immediato (estensione del segno) come secondo operando della ALU invece dell'uscita del secondo registro.
Durante l’esecuzione di un’istruzione LOAD, quale segnale instrada il dato letto dalla memoria al register file?
MemtoReg asserito.
Che operazione compie la ALU per l’istruzione beq (branch if equal)?
Sottrae i due registri; se il risultato è zero, il salto viene preso.
Perché il registro target è irrilevante nelle istruzioni di salto condizionato?
Perché non viene scritto alcun valore nel register file; interessa solo il calcolo dell’indirizzo di salto.
Quali componenti principali formano il datapath semplificato mostrato a lezione?
Memoria istruzioni, PC, sommatore PC+4, banco registri, ALU, memoria dati, vari multiplexer e l’unità di controllo.
In una CPU RISC-V, quale modulo incrementa il PC alla prossima istruzione?
Un sommatore (Add) specializzato che calcola PC+4 (o PC+2 in caso di istruzioni compresse).
Qual è la sequenza dei passaggi per eseguire un’istruzione tipo R (es. add)?
Fetch istruzione, decode, lettura registri rs1/rs2, esecuzione ALU, scrittura del risultato nel registro rd.
Nell’esecuzione di un LOAD, quale operando ALU viene scelto tramite ALUSrc?
L’immediato (offset) esteso di segno a 64 bit.
Che cosa accade al PCSrc e al segnale Branch alla fine di un branch condizionato?
Se Branch è attivo e la ALU segnala zero, PCSrc seleziona l’indirizzo di salto anziché PC+4.