Top Banner
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi di Udine Dal linguaggio macchina al linguaggio C
25

FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Jun 27, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

FONDAMENTI DI INFORMATICA

Prof. PIER LUCA MONTESSORO

Università degli Studi di Udine

Dal linguaggio macchina

al linguaggio C

Page 2: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Programma sorgente, compilatore, file

oggetto, file eseguibile

programma sorgente (uno o più file ASCII)

compilatore

file oggetto (binari)

librerie (simili ai file oggetto)

file eseguibile (binario)

...

...

linker

...

Page 3: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Traduzione effettuata dal compilatore

• Dichiarazione di variabili

– spazi di memoria, di dimensioni opportune, riservati ai dati

• Espressioni

– traduzione in sequenze di istruzioni aritmetico-logiche

• Istruzioni di controllo

– traduzione con sequenze di istruzioni di controllo

Page 4: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Dichiarazione di variabili (esempi)

n: word 5

v: byte 0

byte 0

byte 0

byte 0

byte 0

int n = 5;

char v[5];

Page 5: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Espressioni (esempio)

n: word 0

x: word C

y: word 40

...

LDWI R0 3

LDWA R1 x

ADD R1 R0

LDWA R1 y

ADD R1 R0

STWA R0 n

int n, x = 12, y = 64;

n = x + y + 3;

Page 6: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

if <condizione> { <istruzioni> }

; l’espressione della condizione ha

; modificato il flag Z

; ipotesi: Z=0 “vero”, Z=1 “falso”

JMPZ cont

... ; istruzioni

cont: ... ; seguito del programma

Y N

Page 7: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Y N if <condizione> { <istruzioni> }

; l’espressione della condizione ha

; modificato il flag Z

; ipotesi: Z=0 “vero”, Z=1 “falso”

JMPZ cont

... ; istruzioni

cont: ... ; seguito del programma

SE LA CONDIZIONE È VERA ...

Page 8: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Y N if <condizione> { <istruzioni> }

; l’espressione della condizione ha

; modificato il flag Z

; ipotesi: Z=0 “vero”, Z=1 “falso”

JMPZ cont

... ; istruzioni

cont: ... ; seguito del programma

SE LA CONDIZIONE È FALSA ...

Page 9: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

if <condizione> { <istruzioni ramo then> } else { <istruzioni ramo else> }

; l’espressione della condizione ha

; modificato il flag Z

; ipotesi: Z=0 “vero”, Z=1 “falso”

JMPZ else

... ; istruzioni ramo “then”

... ; istruzioni ramo “then”

JMP cont

else: ... ; istruzioni ramo “else”

... ; istruzioni ramo “else”

cont: ... ; seguito del programma

Y N

Page 10: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Y N if <condizione> { <istruzioni ramo then> } else { <istruzioni ramo else> }

; l’espressione della condizione ha

; modificato il flag Z

; ipotesi: Z=0 “vero”, Z=1 “falso”

JMPZ else

... ; istruzioni ramo “then”

... ; istruzioni ramo “then”

JMP cont

else: ... ; istruzioni ramo “else”

... ; istruzioni ramo “else”

cont: ... ; seguito del programma

SE LA CONDIZIONE È VERA ...

Page 11: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Y N if <condizione> { <istruzioni ramo then> } else { <istruzioni ramo else> }

; l’espressione della condizione ha

; modificato il flag Z

; ipotesi: Z=0 “vero”, Z=1 “falso”

JMPZ else

... ; istruzioni ramo “then”

... ; istruzioni ramo “then”

JMP cont

else: ... ; istruzioni ramo “else”

... ; istruzioni ramo “else”

cont: ... ; seguito del programma

SE LA CONDIZIONE È FALSA...

Page 12: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

while <condizione> { <istruzioni> }

loop: ... ; valutazione della

... ; condizione

; l’espressione della condizione ha

; modificato il flag Z

; ipotesi: Z=0 “vero”, Z=1 “falso”

JMPZ cont

... ; istruzioni del ciclo

... ; istruzioni del ciclo

JMP loop

cont: ... ; seguito del programma

Y

N

Page 13: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

while <condizione> { <istruzioni> }

loop: ... ; valutazione della

... ; condizione

; l’espressione della condizione ha

; modificato il flag Z

; ipotesi: Z=0 “vero”, Z=1 “falso”

JMPZ cont

... ; istruzioni del ciclo

... ; istruzioni del ciclo

JMP loop

cont: ... ; seguito del programma

Y

N

SE LA CONDIZIONE È VERA ...

Page 14: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

while <condizione> { <istruzioni> }

loop: ... ; valutazione della

... ; condizione

; l’espressione della condizione ha

; modificato il flag Z

; ipotesi: Z=0 “vero”, Z=1 “falso”

JMPZ cont

... ; istruzioni del ciclo

... ; istruzioni del ciclo

JMP loop

cont: ... ; seguito del programma

Y

N

SE LA CONDIZIONE È FALSA ...

Page 15: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

do { <istruzioni> } while <condizione>

loop: ... ; istruzioni del ciclo

... ; istruzioni del ciclo

... ; valutazione della

... ; condizione

; l’espressione della condizione ha

; modificato il flag Z

; ipotesi: Z=0 “vero”, Z=1 “falso”

JMPNZ loop

cont: ... ; seguito del programma

Y N

Page 16: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

do { <istruzioni> } while <condizione>

loop: ... ; istruzioni del ciclo

... ; istruzioni del ciclo

... ; valutazione della

... ; condizione

; l’espressione della condizione ha

; modificato il flag Z

; ipotesi: Z=0 “vero”, Z=1 “falso”

JMPNZ loop

cont: ... ; seguito del programma

Y N

SE LA CONDIZIONE È VERA ...

Page 17: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

do { <istruzioni> } while <condizione>

loop: ... ; istruzioni del ciclo

... ; istruzioni del ciclo

... ; valutazione della

... ; condizione

; l’espressione della condizione ha

; modificato il flag Z

; ipotesi: Z=0 “vero”, Z=1 “falso”

JMPNZ loop

cont: ... ; seguito del programma

Y N

SE LA CONDIZIONE È FALSA ...

Page 18: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Funzioni: chiamata

• Per gestire le chiamate di funzioni viene utilizzato lo stack di sistema:

• push (variabili locali)

• copia degli argomenti della funzione in registri o aree di memoria convenzionali

• push (program counter corrente)

• program counter indirizzo della funzione

Page 19: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Funzioni: ritorno

• copia del valore di ritorno in un registro o area di memoria convenzionale

• program counter pop ()

• pop (variabili locali)

• L’utilizzo dello stack anche per le variabili consente la ricorsione!

Page 20: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Esempio: Fibonacci

• Si scriva in linguaggio assembler una funzione recursiva che restituisca in R0 il valore del termine Fn della successione di Fibonacci il cui numero d’ordine, n, è passato alla funzione in R1

• Si ricorda che:

F0 = 0 F1 = 1 Fn = Fn-1 + Fn-2

Page 21: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Esempio: Fibonacci

• Partiamo dal programma in linguaggio C

• Nota: in questo esercizio, per semplicità, useremo soltanto variabili nei registri (cioè non in memoria centrale) e non faremo uso di funzioni di input/output

Page 22: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Esempio:

Fibonacci

int main()

{

int R1 = 10;

int R0 = fibo (R1);

}

int fibo (int R1)

{

if (R1 == 0)

return 0;

if (R1 == 1)

return 1;

return fibo (R1-1)

+ fibo (R1-2);

}

Page 23: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Esempio: Fibonacci

(main)

; int main()

; {

START: LDWI R10 0F000

SPWR R10

LDWI R1 0A ; int R1 = 10;

CALL FIBO ; int R0 = fibo (R1);

HLT ; }

Page 24: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

; int fibo (int R1)

; {

FIBO: MV R1 R2

JMPNZ CONT_1 ; if (R1 == 0)

XOR R0 R0 ; return 0;

RET

CONT_1: LDWI R2 1

SUB R1 R2

JMPNZ CONT_2 ; if (R1 == 1)

LDWI R0 1 ; return 1;

RET

Funzione FIBO - Parte I

Page 25: FONDAMENTI DI INFORMATICA - Uniudweb.diegm.uniud.it/.../simcpu/doc_it/03_dal_linguaggio_macchina_al_… · FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi

Funzione FIBO - Parte II CONT_2: DEC R1

PUSH R1

CALL FIBO ; /* chiama fibo (R1-1); */

POP R1

MV R0 R2

DEC R1

PUSH R1

PUSH R2

CALL FIBO ; /* chiama fibo (R1-2); */

POP R2

POP R1

ADD R2 R0

RET ; return fibo (R1-1)

+ fibo (R1-2);

; }