Instructions Language of the computer Flashcards

1
Q

Come il LEGv8 supporta le chiamate a procedura?

A

Il software LEGv8 segue la seguente convenzione per la chiamata di procedura nell’assegnazione dei suoi 32 registri:
* X0 – X7: otto registri di parametri in cui passare parametri o valori di ritorno.
* LR (X30): un registro degli indirizzi di ritorno per tornare al punto di origine.
* La lingua di assemblaggio LEGv8 include un’istruzione solo per le procedure: istruzione branch-and-link (BL)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quali operazioni vengono fatte nelle chiamate a procedure?

A
  1. Mette i parametri in un luogo in cui la procedura può accedervi.
  2. Trasferisce il controllo alla procedura.
  3. Acquisisce le risorse di archiviazione necessarie per la procedura.
  4. Esegue l’attività desiderata.
  5. Inserisce il valore del risultato in un luogo in cui il programma chiamante può accedervi.
  6. Restituirsce il controllo al punto di origine, poiché una procedura può essere chiamata da diversi punti in a programma.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Come in LEGv8 possiamo implementare una operazione di “lock”?

A

Load-Exclusive (LDXR): Legge un valore da una locazione di memoria e stabilisce una “riserva” per quella locazione.

Store-Conditional (STXR): Scrive un valore nella stessa locazione di memoria solo se la “riserva” è ancora valida. Se un altro processo ha modificato la memoria nel frattempo, l’operazione fallisce.

Loop di ritentativo: In caso di fallimento dello STXR, si ripete il processo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Processo di traduzione di un programma C in un eseguibile

A

Compiler: Traduce il codice C in un linguaggio assembly specifico (es. LEGv8). Si occupa di ottimizzazioni di alto livello e gestione della sintassi del linguaggio.

Assembler: Converte il codice assembly in linguaggio macchina, generando un file oggetto (.o) contenente codice binario e simboli.

Linker: Combina i file oggetto e le librerie necessarie in un unico eseguibile, risolvendo riferimenti a funzioni e variabili.

Loader: Carica l’eseguibile in memoria, inizializza il processo e trasferisce il controllo al punto di ingresso del programma.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Cosa sono e come vengono gestite le Dynamic Link Libraries (DLL)?

A

Le Dynamic Link Libraries (DLL) sono librerie che contengono codice e dati condivisibili tra più programmi durante l’esecuzione.

Esse:
Consentono di risparmiare spazio poiché i moduli comuni vengono caricati una sola volta.
Permettono l’aggiornamento delle librerie senza ricompilare i programmi che le usano.

Gestione delle DLL:
Durante il linking: Il linker genera riferimenti simbolici ai moduli delle DLL.
Durante il caricamento: Il loader risolve i riferimenti simbolici, caricando la DLL in memoria e associandola al programma in esecuzione.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Tipologie di formati dati del LEGv8 e il loro uso

A

Word (32-bit) e Doubleword (64-bit): Utilizzati per numeri interi e operazioni di calcolo generale.

Byte (8-bit) e Halfword (16-bit): Usati per dati più piccoli o per gestire array e stringhe.

Floating-point (32-bit e 64-bit): Utilizzati per calcoli in virgola mobile.

Simboli e indirizzi: Usati per riferimenti a memoria o funzioni.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Interpretazione degli indirizzi dei Branch o dei Branch condizionali

A

Gli indirizzi dei branch in LEGv8 sono indirizzi relativi al Program Counter (PC). Il valore specificato nell’istruzione rappresenta un offset (positivo o negativo) rispetto al valore corrente del PC. Questo approccio rende il codice più compatto e indipendente dalla posizione.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly