• Non ci sono risultati.

Università degli Studi di Udine Corsi di laurea in Ingegneria Elettronica e Ingegneria Gestionale Architettura dei calcolatori / Fondamenti di Informatica II 1

N/A
N/A
Protected

Academic year: 2021

Condividi "Università degli Studi di Udine Corsi di laurea in Ingegneria Elettronica e Ingegneria Gestionale Architettura dei calcolatori / Fondamenti di Informatica II 1"

Copied!
2
0
0

Testo completo

(1)

Università degli Studi di Udine

Corsi di laurea in Ingegneria Elettronica e Ingegneria Gestionale Architettura dei calcolatori / Fondamenti di Informatica II 1

o

luglio 2014 - Prova scritta

Matricola __________________

Nome _____________________

Cognome __________________

ISTRUZIONI (da leggere attentamente)

1) Lo studente è tenuto a scrivere, correggere, compilare ed eseguire su computer (a casa o in laboratorio) gli esercizi di programmazione prima della prova orale. Alla prova orale lo studente deve portare un floppy disk contenente i sorgenti dei programmi corretti e le stampe dei relativi file.

2) Non è consentito l’uso di libri, appunti, calcolatrici, telefoni cellulari.

3) Rispondere sinteticamente negli spazi di fianco o seguenti le domande, oppure sul retro del foglio.

1. (2 punti) Che relazione c’è tra i codici a prefisso e la codifica entropica?

2. (3.punti) Si indichino con una X le associazioni corrette nella seguente tabella:

Page table Hit/Miss Page file Time slice

Tag RAM MMU Cache memory

Memoria virtuale Time sharing Paginazione Segmentazione

Si consideri la libreria in linguaggio C per manipolare file bitmap vista a lezione, così definita:

typedef unsigned char byte;

typedef unsigned short int word;

typedef unsigned long int dword;

#define BMPFILETYPE 0x4D42

typedef struct tagCOLORTRIPLE {

byte blue;

byte green;

byte red;

} COLORTRIPLE;

typedef struct tagFILEHEADER {

word ImageFileType;

dword FileSize;

word Reserved1;

word Reserved2;

dword ImageDataOffset;

} FILEHEADER;

typedef struct tagBMPHEADER {

dword HeaderSize;

dword ImageWidth;

dword ImageHeight;

word NumberOfImagePlanes;

word BitsPerPixel;

dword CompressionMethod;

dword SizeOfBitmap;

dword HorizonalResolution;

dword VerticalResolution;

dword NumberOfColorsUsed;

dword

NumberOfSignificantColors;

} BMPHEADER;

typedef struct tagBITMAP {

dword width;

dword height;

COLORTRIPLE *pixel;

FILEHEADER fileheader;

BMPHEADER bmpheader;

} BITMAP;

#define PIXEL(image, row, column) \ image.pixel [(row( * image.width +

(column)]

BITMAP ReadBitmap (FILE *fp);

void WriteBitmap (BITMAP bitmap, FILE *fp);

BITMAP CreateEmptyBitmap

(dword height, dword width);

void ReleaseBitmapData (BITMAP *bitmap);

3. (8 punti)

256 sfumanture di grigio. Si scriva un programma in linguaggio C che riceva sulla riga di comando il nome di un file bitmap di uscita e le sue dimensioni (numero di pixel in altezza e larghezza), e generi in tale file di uscita un’immagine contenente, da sinistra verso destra, tutte le 256 gradazioni di grigio rappresentabili con una bitmap in modalità “true color”.

Esempio:

(2)

Un elaboratore (il modello didattico SimCPU visto a lezione) dispone di CPU (a 16 bit) con 16 registri di uso generale (R0, R1, ..., R15) più il Program Counter, l’Instruction Register, lo Stack Pointer e 4 flag Z (zero), N (negative), C (carry) e V (overflow). Si ricorda che il linguaggio assembler di tale elaboratore dispone delle seguenti istruzioni:

4. (5 punti) Si completi la decodifica del seguente programma in linguaggio macchina scrivendo il corrispondente codice assembly.

1A | FUNZIONE: MV R1 R10 04 |

2A | _____________________

41 |

0C | _____________________

C4 |

3A | MV R3 R10 04 |

1A | _____________________

41 |

06 | _____________________

C4 |

00 | _____________________

10 | 01 | 00 |

00 | RET C9 |

00 | EXIT_FALSO: _____________________

10 | 00 | 00 |

00 | RET C9 |

5. (3 punti) Cosa restituisce in R0 il programma dell’esercizio precedente, per i valori di ingresso sotto riportati?

R1 = 5, R2 = 1, R3 = 5 → R0 = ____

R1 = 0, R2 = 1, R3 = 5 → R0 = ____

R1 = 1, R2 = 1, R3 = 5 → R0 = ____

6. (3 punti) Cosa calcola, in generale, il programma dell’esercizio 4?

7. (3 punti) Si disegni lo schema di una memoria cache a mappatura diretta.

(svolgere sul retro)

8. (3 punti) Nella cella B4 di un foglio elettronico c’è la formula =C13-$B13-A$13. Tale cella viene copiata nella cella D17. Che formula conterrà, a questo punto, la cella D17?

assembly inst. name machine code action

LDWI d X load word 00010000dddd0000 DATA(16) d <- X LDWA d A load word 00100000dddd0000 ADDR(16) d <- mem[A]

LDWR d a load word 00110000ddddaaaa d <- mem[a]

LDBI d X load byte 00010001dddd0000 DATA(8) d <- X LDBA d A load byte 00100001dddd0000 ADDR(16) d <- mem[A]

LDBR d a load byte 00110001ddddaaaa d <- mem[a]

STWA s A store word 00100010ssss0000 ADDR(16) mem[A] <- s STWR s a store word 00110010ssssaaaa mem[a] <- s STBA s A store byte 00100011ssss0000 ADDR(16) mem[A] <- s STBR s a store byte 00110011ssssaaaa mem[a] <- s MV s d move 00000100ssssdddd d <- s PUSH s push 00001000ssss0000 push (s) POP d pop 00001001dddd0000 d <- pop () SPRD d read SP 00001101ssss0000 d <- SP SPWR s write SP 00001110ssss0000 SP <- s

ADD s d add 01000000ssssdddd d <- d + s SUB s d subtract 01000001ssssdddd d <- d - s NOT r bitwise NOT 01000010rrrr0000 r <- ~r AND s d bitwise AND 01000011ssssdddd d <- d & s OR s d bitwise OR 01000100ssssdddd d <- d | s XOR s d bitwise XOR 01000101ssssdddd d <- d ^ s INC r increment 01001000rrrr0000 r <- r + 1 DEC r decrement 01001001rrrr0000 r <- r + 1 LSH r left shift 01001010rrrr0000 r <- r << 1 RSH r right shift 01001011rrrr0000 r <- r >> 1

assembly inst. name machine code action

INW d A input word 10000000dddd0000 IN_ADDR(16) d <- read[A]

INB d A input byte 10000001dddd0000 IN_ADDR(16) d <- read[A]

OUTW s A out word 10000010ssss0000 OUT_ADDR(16) out[A] <- s OUTB s A out byte 10000011ssss0000 OUT_ADDR(16) out[A] <- s

TSTI A test input 1000010000000000 IN_ADDR(16) if completed then Z <- 1 else Z <- 0

TSTO A test output 1000010100000000 OUT_ADDR(16) if completed then Z <- 1 else Z <- 0

BR A branch 1100000000000000 ADDR(16) PC <- A JMP F jump 11000001FFFFFFFF PC <- PC + F

JMPZ F jump if zero 11000010FFFFFFFF if (z == 1) PC <- PC + F JMPNZ F jump if not zero 11000011FFFFFFFF if (z == 0) PC <- PC + F JMPN F jump if negative 11000100FFFFFFFF if (N == 1) PC <- PC + F JMPNN F jump if not neg. 11000101FFFFFFFF if (N == 0) PC <- PC + F JMPC F jump if carry 11000110FFFFFFFF if (C == 1) PC <- PC + F JMPV F jump if overflow 11000111FFFFFFFF if (V == 1) PC <- PC + F CALL A subroutine call 1100100000000000 ADDR(16) push (PC); PC <- A RET return from sub. 1100100100000000 PC <- pop() HLT halt 1100111100000000 halt

LEGENDA:

- lettere minuscole = registri; lettere maiuscole = dati numerici - ‘r’ = registro letto e modificato

- ‘s’ = registro soltanto letto - ‘d’ = registro modificato

- ‘a’ = registro il cui contenuto è usato come indirizzo - FFFFFFFF = offset (in complemento a 2)

Riferimenti

Documenti correlati

Il segnale campionato viene poi fatto passare per un filtro passa basso ideale avente banda B = 150Hz.. Si determini l’espressione analitica (nel dominio del tempo) del

Il segnale s(t) = sinc(300t)cos(200πt) viene campionato idealmente alla minima frequenza di campionamento che permette di evitare il fenomeno dell’aliasing, quindi ogni campione

Il segnale s(t) = 2sinc(200t) − sinc 2 (100t) viene campionato idealmente alla minima fre- quenza di campionamento che permette di evitare il fenomeno dell’aliasing.. I campioni

Si consideri una modulazione numerica in cui il numero di simboli, emessi dalla sorgente in modo equiprobabile, `e uguale a M

Si consideri una modulazione numerica in cui il numero di simboli, emessi dalla sorgente in modo equiprobabile, `e uguale a M

Il segnale s(t) = sinc 2 (4Bt) viene campionato idealmente alla minima frequenza di campio- namento che permette di evitare aliasing.. Il segnale campionato viene poi fatto passare

Sapendo che per la memorizzazione di ogni campione vengono utilizzati 12 bit si determini il valore minimo di f c che permette una corretta ricostruzione del segnale e il numero di

Il segnale s(t) = sinc(300t)cos(200πt) viene campionato alla minima frequenza di cam- pionamento che permette di evitare il fenomeno dell’aliasing, quindi ogni campione