Toolchain C e Architettura RISC-V: compilazione, linking e datapath

0.0(0)
studied byStudied by 0 people
GameKnowt Play
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/28

flashcard set

Earn XP

Description and Tags

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.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

29 Terms

1
New cards

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.

2
New cards

Quale componente unisce più file oggetto risolvendo i simboli non definiti localmente?

Il linker.

3
New cards

Che cosa fa il comando "gcc -S file.c"?

Compila il sorgente C e produce un file assembly (.s).

4
New cards

Con quale opzione di gcc si genera un file oggetto a partire da assembly?

"-c": es. gcc -c file.s genera file.o.

5
New cards

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).

6
New cards

Quali segmenti principali compongono un file oggetto?

Header, text segment, data segment, tabella dei simboli e tabella di rilocazione.

7
New cards

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.

8
New cards

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.

9
New cards

Qual è un vantaggio delle librerie statiche?

L’eseguibile è autocontenuto; non dipende da file esterni a run-time.

10
New cards

Qual è uno svantaggio delle librerie dinamiche?

Il programma non è autocontenuto e richiede la presenza della libreria corretta a run-time.

11
New cards

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.

12
New cards

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.

13
New cards

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.

14
New cards

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.

15
New cards

Che ruolo ha il Program Counter (PC)?

Contiene l’indirizzo dell’istruzione da caricare nel ciclo corrente.

16
New cards

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.

17
New cards

Quali segnali di controllo principali governa l'unità di controllo di primo livello?

RegWrite, MemRead, MemWrite, MemtoReg, ALUSrc, PCSrc, e i 2 bit ALUop.

18
New cards

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.

19
New cards

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.

20
New cards

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.

21
New cards

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.

22
New cards

Durante l’esecuzione di un’istruzione LOAD, quale segnale instrada il dato letto dalla memoria al register file?

MemtoReg asserito.

23
New cards

Che operazione compie la ALU per l’istruzione beq (branch if equal)?

Sottrae i due registri; se il risultato è zero, il salto viene preso.

24
New cards

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.

25
New cards

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.

26
New cards

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).

27
New cards

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.

28
New cards

Nell’esecuzione di un LOAD, quale operando ALU viene scelto tramite ALUSrc?

L’immediato (offset) esteso di segno a 64 bit.

29
New cards

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.