• Non ci sono risultati.

Nota di Copyright

N/A
N/A
Protected

Academic year: 2021

Condividi "Nota di Copyright"

Copied!
5
0
0

Testo completo

(1)

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1

FONDAMENTI DI INFORMATICA

Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine

Dal linguaggio macchina al linguaggio C

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 2 Questo insieme d i trasparenze ( detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi inclusi , ma non limitatamente, ogni immagine, fotografia, animazione , video, audio, musica e testo) sono d i proprietà dell’autore prof. Pier Luca Montessoro, Università degli Studi di Udine.

Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca , scolastici ed universitari afferenti a l Ministero della Pubblica Istruzione e al Ministero dell’Università e Ricerca Scientifica e Tecnologica , per scopi istituzionali, non a fine di lucro . In tal caso non è richiesta alcuna autorizzazione .

Ogni altro utilizzo o riproduzione (ivi incluse , ma non limitatamente, le riproduzioni su supporti magnetici , su reti d i calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte dell’autore .

L’informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione . Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti d i impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza preavviso. L’autore non assume alcuna responsabilità per il contenuto d i queste slide (ivi incluse , ma non limitatamente, la correttezza, completezza , applicabilità , aggiornamento dell’informazione ).

In ogni caso non può essere dichiarata conformità all’informazione contenuta in queste slide.

In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali.

Nota di Copyright

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 3

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

...

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 4

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

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 5

Dichiarazione di variabili (esempi)

n: word 5 v: byte 0 byte 0 byte 0 byte 0 byte 0 int n = 5;

char v[5];

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 6

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;

(2)

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 7

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

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 8

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

SE LA CONDIZIONE È VERA ...

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 9

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

SE LA CONDIZIONE È FALSA ...

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 10

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

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 11

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

SE LA CONDIZIONE È VERA ...

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 12

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

SE LA CONDIZIONE È FALSA ...

(3)

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 13

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

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 14

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

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 15

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

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 16

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

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 17

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

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 18

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

(4)

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 19

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

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 20

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!

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 21

Esempio: Fibonacci

• Si scriva in linguaggio assembler una funzione recursiva che restituisca in R0 il valore del termine F n della

successione di Fibonacci il cui numero d’ordine, n, è passato alla funzione in R1

• Si ricorda che:

F 0 = 0 F 1 = 1

F n = F n-1 + F n-2

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 22

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

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 23

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

}

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 24

Esempio: Fibonacci (main)

; int main() ; {

START: LDWI R10 0F000 SPWR R10

LDWI R1 0A ; int R1 = 10;

CALL FIBO ; int R0 = fibo (R1);

HLT ; }

(5)

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 25

; 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

Fondamenti di Informatica - Dal linguaggio macchina al linguaggio C

© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 26

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

; }

Riferimenti

Documenti correlati

In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali.. Nota

In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali. Nota

In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali.. Nota

In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali.. Nota

In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali.. Nota

In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali.. Nota

In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali.. Nota

In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali. Nota