PROGRAMMAZIONE MISTA. G. Frosini Programmazione mista Slide 1
|
|
- Beata Serra
- 8 anni fa
- Visualizzazioni
Transcript
1 PROGRAMMAZIONE MISTA G. Frosini Programmazione mista Slide 1
2 Caratteristiche del processore PC Processore PC (Processore Completo): processore didattico; schematizzazione (software compatibile) dei processori a 32 bit della famiglia INTEL, funzionanti in modo protetto (x86-32); costituito da 2 unità di elaborazione visibili al programmatore: la ALU (Aritmetic and Logic Unit), che esegue le istruzioni generali e quelle sui numeri naturali e interi; la FPU (Floating Point Unit), che esegue le istruzioni sui numeri reali. Operandi manipolati dalle istruzioni della ALU: lunghi 8 bit (byte), 16 bit (parola) o 32 bit (parola lunga). Operandi manipolati dalle istruzioni della FPU: lunghi 80 bit. G. Frosini Programmazione mista Slide 2
3 Spazi di indirizzamento Funzionamento del Processore PC: senza memoria virtuale; con memoria virtuale paginata. Spazio di memoria senza memoria virtuale: lineare, e costituito da 2**32 locazioni di un byte, il cui indirizzo va da 0x a 0xFFFFFFFF. Spazio di memoria con memoria virtuale paginata: come sopra Spazio di I/O (sempre senza memoria virtuale): lineare; costituito da 2**16 porte da un byte, il cui indirizzo va da 0x0000 a 0xFFFF. G. Frosini Programmazione mista Slide 3
4 Registri (1) ST EAX EBX ECX EDX ESI EDI EBP ESP EIP EFLAG Altri ALU Registri generali Registri di stato FPU AX (AH, AL) BX (BH, BL) CX (CH, CL) DX (DH, DL) SI DI BP SP G. Frosini Programmazione mista Slide 4
5 Registri (2) Registri generali della ALU (32 bit): possono venir indifferentemente utilizzati o per memorizzare operandi o per contenere indirizzi di memoria. Alcuni di essi svolgono specifiche funzioni: registri ESP, EBP: servono a indirizzare la pila; ESP funge da puntatore alla cima della pila. EBP funge da registro base per una zona della pila; registri EAX, EDX: EAX funge principalmente da accumulatore ed EDX da estensione dell'accumulatore; registri ESI, EDI: fungono principalmente da registri indice; Registri generali della FPU (80 bit): organizzati a pila; il registro di testa della pila si chiama ST. G. Frosini Programmazione mista Slide 5
6 Registri (3) Registro di stato EIP (ALU): contiene l'indirizzo della prossima istruzione. Registro di stato EFLAG (ALU): costituito da due parti, ciascuna di 2 byte; la parte meno significativa contiene: i flag aritmetici PF (Parity), ZF (zero), CF (Carry), SF (Sign), OF (Overflow); i flag IF e TF relativi al meccanismo di interruzione; il flag DF utilizzato dalle istruzioni sulle stringhe OF DF IF TF SF ZF PF CF G. Frosini Programmazione mista Slide 6
7 Codifica delle istruzioni I-prefix (0/1 byte) O-prefix (0/1 byte) OC (1/2 byte) MODE (0/1 byte) SIB (0/1 byte) DISP (0/4 byte) IMM (0/4 byte) I-prefix (prefisso di istruzione): viene utilizzato per le istruzioni che operano sulle stringhe (REP, REPE, REPNE). O-prefix (prefisso di lunghezza): indica che la lunghezza degli operandi è di una parola, ogni qual volta il campo OC specifica una parola lunga. OC (Operation Code): specifica il codice operativo e la lunghezza degli operandi (byte o parola lunga). MODE e SIB (Scaled Index Base): indicano il modo di reperire gli operandi e il fattore di scala. DISP (DISplacement): contiene lo spiazzamento. IMM (IMMediate): contiene l'operando immediato. G. Frosini Programmazione mista Slide 7
8 Indirizzamenti per le istruzioni operative Indirizzamento di registro: operando in un registro del processore. Indirizzamento immediato: operando nell istruzione (campo IMM). Indirizzamento di memoria (una o due componenti possono mancare): indirizzo = base + indice*scala + spiazzamento modulo 2**32 base è il contenuto di uno dei registri generali; indice è il contenuto di uno dei registri generali; scala è un fattore che può valere 1, 2, 4 oppure 8; spiazzamento è un numero intero, di 8 bit o di 32 bit, contenuto nel campo DISP. G. Frosini Programmazione mista Slide 8
9 Indirizzamento di memoria Dalla forma generale derivano i seguenti indirizzamenti: diretto: è presente solamente lo spiazzamento; indiretto: è indicato solamente il registro base; modificato con registro base: sono indicati il registro base e lo spiazzamento (utilizzato per riferire le componenti di una struttura); modificato con registro indice e scala: sono indicati il registro indice, la scala e lo spiazzamento (utilizzato per riferire le componenti di un vettore); bimodificato senza spiazzamento: sono indicati un registro base ed un registro indice (con scala); bimodificato con spiazzamento: sono indicati un registro base, un registro indice (con scala) e lo spiazzamento. G. Frosini Programmazione mista Slide 9
10 Indirizzamenti per le istruzioni di controllo Indirizzo di salto: viene ottenuto nel modo seguente (indirizzamento relativo): indirizzo = EIP + spiazzamento modulo 2**32 spiazzamento è un numero intero, di 8 bit o di 32 bit, contenuto nel campo DISP; il salto può avvenire a indirizzi maggiori o a indirizzi minori rispetto a EIP. G. Frosini Programmazione mista Slide 10
11 Indirizzamenti per le istruzioni di I/O Indirizzo dalla porta: può essere specificato nell'istruzione (indirizzamento diretto, detto impropriamente immediato); può essere contenuto nel registro DX (indirizzamento indiretto, detto impropriamente di registro). Prima forma: possibile solo per indirizzi minori di 256. G. Frosini Programmazione mista Slide 11
12 AMBIENTE GCC Ambiente di programmazione utilizzato: GCC (GNU Compiler Collection); collezione di software di sviluppo del sistema GNU; contiene l Assemblatore, il Compilatore C e il Compilatore C++; può essere utilizzato su un calcolatore con sistema operativo Unix e processore INTEL x86-32 o x86-64; in un calcolatore che ha un processore x86-64, con opzioni appropriate, l ambiente GCC può elaborare anche file sorgenti contenenti codice relativo a un processore INTEL x86-32 e generare file eseguibili da un processore INTEL x Programma eseguibile prodotto: un file eseguibile prodotto per un processore INTEL x86-32 può essere eseguito anche da un calcolatore con processore INTEL x86-64 (che viene fatto operare, con opportune configurazioni di speciali registri di controllo, in modalità 32 bit). Nel seguito, considereremo file sorgenti con codice per un processore INTEL x86-32; file sorgenti contenenti codice Assembler sono legati al processore x86-32; file sorgenti contenenti codice C o codice C++ sono indipendenti dal processore utilizzato. G. Frosini Programmazione mista Slide 12
13 Assembler GCC per il processore PC (1) Forma di un commento: dal carattere # alla fine della linea corrente Forma di un istruzione Assembler: etichetta: codice-operativo sorgente, destinatario etichetta, sorgente, destinatario: possono mancare. Simbologia: codice operativo: specifica l operazione e la lunghezza degli operandi (b: byte; w: parola; l: parola lunga); %: deve essere messo prima del nome di un registro; $ deve essere messo prima di un operando immediato. Etichetta: lettere minuscole o lettere maiuscole sono differenti. Codice operativo, nome di un registro: lettere minuscole o lettere maiuscole sono equivalenti. G. Frosini Programmazione mista Slide 13
14 Assembler GCC per il processore PC (2) Istruzioni operative con indirizzamento di memoria: indirizzo di memoria: displacement( base, indice, scala) MOVL MOVL MOVL MOVL MOVL MOVL MOVL displacement(%ebp, %ESI, 4), %EAX (%EBP, %ESI, 4), %EAX displacement(, %ESI, 4), %EAX displacement(%ebp), %EAX (,%ESI, 4), %EAX (%EBP), %EAX displacement, %EAX displacement: può essere un numero intero, un etichetta, un espressione; scala: numero naturale che può valere 1, 2, 4 o 8: se vale 1, può essere omesso. G. Frosini Programmazione mista Slide 14
15 Assembler GCC per il processore PC (3) Istruzioni di salto: JMP etichetta JZ etichetta Istruzioni di I/O: INB INB %DX, %AL $25, %AL G. Frosini Programmazione mista Slide 15
16 Assembler GCC per il processore PC (4) Pseudo-istruzioni (iniziano con.):.byte valore # numero naturale o intero, o letterale carattere.word valore.long valore.float valore.double valore.quad valore.space numero-byte.fill numero-componenti, numero-byte-per-componente.ascii letterale stringa Direttive (iniziano anch esse con.):.text.data.align n # allineamento a indirizzo multipli di n, potenza di 2.INCLUDE "nome file" # nome del file da includere, con eventuale percorso.global nome,... # vedi slide successive.extern nome,... # vedi slide successive. G. Frosini Programmazione mista Slide 16
17 Programma Assembler (1) Programma Assembler: costituito da due sezioni, una sezione dati e una sezione testo; memorizzato su uno o più file, ciascuno detto file sorgente. in ogni file, sono presenti nessuna, una o più parti della sezione dati (pseudoistruzione.data), e nessuna, una o più parti della sezione testo (pseudoistruzione.text) Inizio del programma: etichetta _start, che deve essere dichiarata globale (direttiva.global). Fine del programma: risultato per il Sistema Operativo: va eventualmente lasciato nel registro ebx; per convenzione, quando vale 0, tutto si è svolto correttamente, mentre quando è diverso da 0, il valore costituisce la codifica di un errore. Sistema operativo Unix: il valore di ritorno precedente (utilizzando il linguaggio di script bash) è visibile attraverso la variabile $? (comando per vederne il valore: echo $?). Istruzioni di ritorno: MOVL, %EBX MOVL $1, %EAX # numero d ordine della primitiva Unix exit INT $0x80 G. Frosini Programmazione mista Slide 17
18 Programma Assembler (2).DATA... dati....text # sottoprogramma sottop:... RET # programma principale.global _start _start: CALL sottop MOVL, %EBX MOVL $1, %EAX INT $0x80 G. Frosini Programmazione mista Slide 18
19 Sviluppo di un programma Assembler con calcolatore x86-64 (1) Un file sorgente: deve avere estensione s; viene tradotto separatamente dagli altri, dando luogo a un nuovo file, il file oggetto (estensione o). Traduzione: avviene attraverso il programma Assemblatore; comando: as --32 nomefile.s o nomefile.o File oggetto ottenuti dalle traduzioni: devono essere collegati insieme per formare un unico file eseguibile (senza estensione); programma eseguibile contenuto nel file: viene costruito a partire da un indirizzo prestabilito. G. Frosini Programmazione mista Slide 19
20 Sviluppo di un programma Assembler con calcolatore x86-64 (2) Collegamento: avviene attraverso il programma Collegatore o Linker; comando: ld melf_i386 nomefile1.o. nomefilen.o o nomefile l opzione o nomefile può essere omessa, ed in questo caso il nome del file eseguibile è per default a.out (non esiste l estensione: tutti i caratteri presenti costituiscono il nome del file). File eseguibile: viene caricato in memoria, a partire da un indirizzo di caricamento effettivamente disponibile; viene eventualmente rilocato (modificato), per tener conto di questa nuova posizione, in genere diversa da quella per cui è stato predisposto. G. Frosini Programmazione mista Slide 20
21 Sviluppo di un programma Assembler con calcolatore x86-64 (3) Caricamento e rilocazione: avvengono per mezzo del programma Caricatore o Loader. comando:./nomefile Escuzione: il Caricatore: inizializza il puntatore di pila: pone in pila il valore del nuovo contatore di programma (corrispondente all'etichetta _start); esegue l istruzione RET. Programma costituito da un solo file: viene sviluppato secondo le fasi sopra elencate; il collegamento viene comunque effettuato, eventualmente con alcuni programmi di libreria, già tradotti una volta per tutte. G. Frosini Programmazione mista Slide 21
22 Calcolatore con processore x86-32 Comandi di traduzione e di collegamento precedenti: non si deve utilizzare l opzione 32 (comando as) e l opzione melf_i386 (comando ld). Comando di esecuzione precedente: valido anche in questo caso Nel seguito: useremo i comandi per un calcolatore con Sistema Operativo Unix e processore x G. Frosini Programmazione mista Slide 22
23 Rappresentazione grafica File sorgente File sorgente File sorgente Assemblatore Assemblatore Assemblatore File oggetto File oggetto File oggetto Collegatore File eseguibile (A partire da un indirizzo prefissato) Caricatore Programma in memoria G. Frosini Programmazione mista Slide 23
24 File ser.s Contiene due sottoprogrammi tastiera e video: tastiera: legge il successivo carattere battuto a tastiera e pone il suo codice ASCII nel registro AL; video: scrive su video il carattere il cui codice ASCII è contenuto in AL; tastiera e video utilizzano il servizio Unix 0x80 (opportuni parametri in EAX, EBX, ECX). Contiene una routine uscita: restituisce il controllo al Sistema Operativo; è composta dalle istruzioni (ipotesi: non ci sono stati errori): uscita: MOVL $0, %EBX MOVL $1, %EAX INT $0x80 Sottoprogrammi tastiera e video: effettuano ingresso/uscita a linee (I/O bufferizzato) ; i caratteri battuti a tastiera compaiono in eco su video e vengono effettivamente letti quando viene premuto il tasto ENTER; in lettura, ENTER viene riconosciuto come carattere '\n'; i caratteri inviati su video vengono visualizzati quando viene inviato il carattere '\n' (nuova linea); viene automaticamente inserito anche il carattere '\r' (ritorno carrello). G. Frosini Programmazione mista Slide 24
25 Programma codifica (1) # File codifica.s.global.data _start.text.include "ser.s" _start: ancora: CALL tastiera CMPB $'\n', %AL # carattere nuova linea JE fine CALL video # carattere in AL MOVB %AL, %BL MOVB $' ', %AL # carattere spazio CALL video G. Frosini Programmazione mista Slide 25
26 Programma codifica (2) MOVB $0, %CL # cl funge da contatore ciclo: TESTB $0x80, %BL # esame del bit piu significativo di BL JZ zero MOVB $'1', %AL CALL video JMP avanti zero: MOVB $'0', %AL CALL video avanti: SHLB $1, %BL # traslazione sinistra di BL INCB %CL CMPB $8, %CL JB ciclo MOVB $'\n', %AL # carattere nuova riga CALL video JMP ancora fine: JMP uscita G. Frosini Programmazione mista Slide 26
27 Programma codifica (3) File precedente: deve essere prima tradotto; il file tradotto deve essere poi collegato. Questo si ottiene con i comandi: as --32 codifica.s -o codifica.o ld melf_i386 codifica.o -o codifica Il file eseguibile (codifica) può essere caricato e mandato in esecuzione con il comando:./codifica G. Frosini Programmazione mista Slide 27
28 Nomi esterni e nomi globali (o pubblici) In un file si possono utilizzare nomi (o identificatori) definiti in altri file: tali nomi vanno dichiarati esterni. Nomi esterni: si dichiarano utilizzando la direttiva.extern:.extern nome,... Alcuni nomi (o identificatori) definiti in un file possono essere utilizzati da altri file: tali nomi vanno dichiarati globali (o pubblici). Nomi globali: si dichiarano utilizzando la direttiva.global:.global nome,... G. Frosini Programmazione mista Slide 28
29 Punto di inizio File sorgente Assembler: contiene uno spezzone di programma, che può prevedere il punto di inizio (entry_point) dell intero programma (simbolo _start). File principale: contiene l entry_point; ne deve esistere uno e uno solo. File secondari: altri file. Situazione comune: il file principale contiene dati e il programma principale con alcuni sottoprogrammi, mentre un file secondario contiene solo dati e sottoprogrammi. Indirizzo iniziale (_start): dichiarato globale, per renderlo visibile al Caricatore (consentendo al Caricatore l inizializzazione del registro EIP con tale indirizzo). In un file, i nomi non globali sono propri di quel file: uno stesso nome può essere utilizzato in file diversi e identifica entità diverse. G. Frosini Programmazione mista Slide 29
30 Programma codifica1 (1) Programma codifica1: due file: il primo contiene il programma principale, il secondo il sottoprogramma esamina, utilizzato dal primo file. Programma principale: legge caratteri fino al fine linea; per ogni carattere, lo stampa, richiama il sottoprogramma esamina, quindi stampa il risultato. Sottoprogramma esamina: restituisce otto caratteri, corrispondenti ai bit della codifica del carattere ricevuto. Trasmissione dei dati fra programma e sottoprogramma: due variabili alfa e beta definite nel secondo file (esterne nel primo file e globali nel secondo); alfa: contiene il codice del carattere, beta: contiene l'indirizzo della variabile risultato. il programma principale pone i dati in alfa e beta, quindi chiama esamina. G. Frosini Programmazione mista Slide 30
31 Programma codifica1 (2) # PROGRAMMA codifica1 # File principale codifica1a.s.extern alfa, beta, esamina.global _start.data kappa:.fill 8, 1.TEXT.INCLUDE "ser.s" _start: ancora: CALL tastiera CMPB $'\n', %AL JE fine CALL video MOVB %AL, %BL MOVB $' ', %AL CALL video MOVB %BL, alfa MOVL $kappa, beta CALL esamina MOVL $0, %ESI ripeti: MOVB kappa(%esi), %AL CALL video INCL %ESI CMPL $8, %ESI JB ripeti MOVB $'\n', %AL CALL video JMP ancora fine: JMP uscita G. Frosini Programmazione mista Slide 31
32 Programma codifica1 (3) # PROGRAMMA codifica1 # File secondario codifica1b.s.global alfa, beta, esamina.data alfa:.byte 0 beta:.long 0.TEXT esamina: PUSHL %EAX PUSHL %EBX PUSHL %ESI MOVB alfa, %AL # I dato MOVL beta, %EBX # II dato MOVL $0, %ESI ciclo: TESTB $0x80, %AL JZ zero MOVB $'1', (%EBX, %ESI) JMP avanti zero: MOVB $'0', (%EBX, %ESI) avanti: SHLB $1, %AL INCL %ESI CMPL $8, %ESI JB ciclo POPL %ESI POPL %EBX POPL %EAX RET G. Frosini Programmazione mista Slide 32
33 Programma codifica1 (4) File precedenti: devono essere prima tradotti; i file tradotti devono essere poi collegati. Questo si ottiene con i comandi: as --32 codifica1a.s -o codifica1a.o as --32 codifica1b.s -o codifica1b.o ld melf_i386 codifica1a.o codifica1b.o -o codifica1 Il file eseguibile (codifica1) può essere caricato e mandato in esecuzione con il comando:./codifica1 G. Frosini Programmazione mista Slide 33
34 Comando g++ (1) Il comando: g++ -m32 nomefile1.s nomefilen.s o nomefile richiama singolarmente l Assemblatore per i file nomefile1.s,, nomefilen.s, producendo N file oggetto; richiama il Collegatore per gli N file precedenti e alcuni file dei libreria, producendo il file eseguibile nomefile; l opzione o nomefile può essere omessa, ed in questo caso il nome del file eseguibile è a.out Uno dei file di libreria collegati: contiene l entry_point _start (nome definito globale); richiama il sottoprogramma main() (nome esterno); il sottoprogramma main() produce un risultato intero che deve essere lasciato in %EAX; al ritorno dal main(), restituisce il controllo al Sistema Operativo con le istruzioni: MOVL %EAX, %EBX MOVL $1, %EAX INT $0x80 Comando g++: per calcolatori con processore a 32 bit, non occorre l opzione m32. G. Frosini Programmazione mista Slide 34
35 Comando g++ (2) Organizzazione del file principale:.extern.global.data.text.include main:. main, "servizio.s" XORL %EAX, %EAX # anche MOVL $0, %EAX RET Uso del comando g++: vengono collegati anche file di libreria C++, compresi quelli relativi alle funzionalità di I/O del C++. Nuovo file di servizio: file servizio.s: contiene alcuni sottoprogrammi Assembler per effettuare letture e scritture, che utilizzano le funzionalità di I/O del C++. G. Frosini Programmazione mista Slide 35
36 File servizio.s (1) Scritture su video (I/O bufferizzato): - scrivicarattere: scrive su video il carattere la cui codifica ASCII si trova in AL; - scrivinaturale: converte il naturale espresso in base due contenuto in EAX in una sequenza di caratteri che rappresentano cifre in base sedici, e invia tale sequenza su video; - scriviintero: converte l intero espresso in base due contenuto in EAX in una sequenza di caratteri che rappresentano il numero intero in base dieci, e invia tale sequenza su video; - scrivireale: converte il reale contenuto in ST, espresso con mantissa e caratteristica in base due, in una sequenza di caratteri che rappresentano il numero reale in base dieci, e invia tale sequenza su video; - scrivispazio: invia su video il carattere spazio; - nuovalinea: invia su video il caratteri '\n' (viene automaticamente aggiunto il carattere '\r' ); G. Frosini Programmazione mista Slide 36
37 File servizio.s (2) Letture da tastiera (I/O bufferizzato): - leggisuccessivo: legge da tastiera il successivo carattere (anche uno spazio bianco) e pone la sua codifica ASCII in AL; - leggicarattere: salta eventuali spazi bianchi, legge da tastiera il successivo carattere diverso da spazio bianco e pone la sua codifica ASCII in AL; - legginaturale: salta eventuali spazi bianchi, legge da tastiera una sequenza di caratteri cifra in base sedici (che termina con il carattere spazio), la converte in un naturale in base due e lo pone in EAX; - leggiintero: salta eventuali caratteri bianchi, legge da tastiera un eventuale carattere segno e una sequenza di caratteri cifra in base dieci (che termina con il carattere spazio), la converte in un intero binario e lo pone in EAX. - leggireale: salta eventuali caratteri bianchi, legge da tastiera un eventuale carattere segno e una sequenza di caratteri che rappresenta un numero reale in base dieci (che termina con il carattere spazio), la converte in un reale con mantissa e caratteristica binarie e lo pone in ST. G. Frosini Programmazione mista Slide 37
38 Programma codifica2 (1) # PROGRAMMA codifica2 # File principale codifica2a.s.extern alfa, beta, esamina.global main.data kappa:.fill 8, 1.TEXT.INCLUDE "servizio.s" main: ancora: CALL leggisuccessivo CMPB $'\n', %AL JE fine CALL scrivicarattere CALL scrivispazio MOVB %AL, alfa MOVL $kappa, beta CALL esamina MOVL $0, %ESI ripeti: MOVB kappa(%esi), %AL CALL scrivicarattere INCL %ESI CMPL $8, %ESI JB ripeti CALL nuovalinea JMP ancora fine: XORL %EAX, %EAX RET G. Frosini Programmazione mista Slide 38
39 Programma codifica2 (2) # PROGRAMMA codifica2 # File secondario codifica2b.s # uguale al file secondario codifica1b.s.global alfa, beta, esamina.data alfa:.byte 0 beta:.long 0.TEXT esamina: PUSHL %EAX RET Sviluppo ed esecuzione del programma: g++ -m32 codifica2a.s codifica2b.s o codifica2./codifica2 G. Frosini Programmazione mista Slide 39
40 Programmi C++ su più file Semplici regole di collegamento: in un file, i nomi delle variabili definite fuori delle funzioni e i nomi di funzioni: sono implicitamente globali; possono essere riferite da altri file. in un file si possono riferire nomi definiti in altri file purché: vengano dichiarati esterni; siano globali nei file dove sono definiti. Dichiarazioni di nomi esterni: extern int var; extern void fun(int par1,, int parn); extern void fun(int,, int); // variabile // funzione G. Frosini Programmazione mista Slide 40
41 Programma codifica3 (in C++) (1) // Programma codifica3 // File principale codifica3a.cpp using namespace std; #include <iostream> extern char alfa; extern char* beta; extern void esamina(); char kappa[8]; int main() { char al; for(;;) { cin.get(al); if (al == '\n') break; cout << al << ' '; alfa = al; beta = &kappa[0]; } }; return 0; esamina(); for (int i=0; i<8; i++) cout << kappa[i]; cout << endl; // anche beta = kappa; G. Frosini Programmazione mista Slide 41
42 Programma codifica3 (in C++) (2) // PROGRAMMA codifica3 // File secondario codifica3b.cpp using namespace std; char alfa; char* beta; void esamina() { for(int i = 0; i < 8; i++) { if ((alfa & 0x80) == 0) *(beta+i) = '0'; else *(beta+i) = '1'; alfa = alfa<<1; } } // non necessario // anche beta[i] Sviluppo ed esecuzione del programma: g++ -m32 codifica3a.cpp codifica3b.cpp -o codifica3./codifica3 G. Frosini Programmazione mista Slide 42
43 Programmi misti (1) Programma GCC organizzato su più file: può essere scritto utilizzando linguaggi differenti per i vari file; ciascun file viene tradotto con il proprio traduttore, e tutti i traduttori producono file oggetto della stessa forma; viene utilizzato un unico collegatore, che produce il programma eseguibile. GCC, comando g++: richiama singolarmente i traduttori per i vari file; file con estensione c: richiama il Compilatore C; file con estensione cc o cpp: richiama il compilatore C++; i compilatori producono file Assembler, con estensione s; file con estensione s, compresi quelli generati nei punti precedenti: richiama l Assemblatore, che produce file con estensione o; richiama il collegatore, inserendo anche file di libreria. G. Frosini Programmazione mista Slide 43
44 Programmi misti (2) Compilatori C/C++: inseriscono le variabili globali, con i loro nomi nella sezione dati; inseriscono le funzioni, con nomi appropriati, nella sezione testo; i parametri e le variabili locali delle funzioni vengono manipolati per mezzo della pila. Intero programma: consistente solo se i differenti linguaggi utilizzati: fanno uso della stessa modalità di rappresentare dati; utilizzano nomi compatibili; utilizzano lo stesso standard per l'aggancio con i sottoprogrammi. Linguaggio C++ e Assembler: i file Assembler dovranno utilizzare lo standard proprio del compilatore C++.
45 Nomi C e nomi C++ Nomi di variabili globali e di funzioni C: sono uguali ai nomi Assembler. Nomi di variabili globali C++: come per il C. Nomi di funzioni C++: corrispondono a nomi Assembler ottenuti secondo regole complesse, che tengono conto del numero, del tipo e dell ordine degli argomenti formali; assicurano la possibilità di avere overloading; possono essere uguali ai nomi Assembler (avere la corrispondenza del C), purché si usi la dichiarazione extern "C". Ipotesi: al momento, per i nomi di funzione utilizzeremo la corrispondenza C (rinunciando ad avere overloading); esamineremo in un secondo momento, per i nomi di funzione, la corrispondenza secondo le regole C++. G. Frosini Programmazione mista Slide 45
46 Nomi esterni e globali C++ compatibili con nomi C Nomi esterni, definiti in un altro file e utilizzati in un file C++: variabile: extern int var; funzione: extern "C" void fun(); Nomi globali, definiti in un file C++ e utilizzati in un altro file: variabile: deve essere globale; funzione (sempre globale): extern "C" void fun() { // } La funzione main() definita in C++ è implicitamente extern "C". Attenzione! una funzione definita in C++ può modificare i registri. G. Frosini Programmazione mista Slide 46
47 Dati in C/C++ Elaboratori basati sul processore x86-32: variabile di tipo int: 4 byte, in complemento a 2; variabili di tipo double: 8 byte, con 1 bit di segno, 11 bit di esponente in traslazione, e 52 bit di mantissa; variabili di tipo bool: un byte, con valore 0 equivalente a false e valore 1 equivalente a true; variabili di tipo char: un byte, in codifica ASCII (con il bit più significativo uguale a 0); variabili di un tipo enumerato: un intero, il cui valore è dato dal numero d ordine dell enumeratore (identificatore), a partire da 0; variabili di un tipo puntatore: 4 byte (indirizzo di memoria). G. Frosini Programmazione mista Slide 47
48 Programma misto codifica4 (1) // Programma codifica4 // File principale codifica4a.cpp using namespace std; #include <iostream> extern char alfa; extern char* beta; extern "C" void esamina(); // unica differenza rispetto al file codifica3a.cpp char k[8]; int main() { char al; for(;;) { cin.get(al); if (al == '\n') break; cout << al << ' '; alfa = al; beta = &k[0]; // anche beta = k; esamina(); for (int i=0; i<8; i++) cout << k[i]; cout << endl; }; return 0; } G. Frosini Programmazione mista Slide 48
49 Programma misto codifica4 (2) # PROGRAMMA codifica4 # File secondario codifica4b.s, uguale al file codifica2b.s.global alfa, beta, esamina.data alfa:.byte 0 beta:.long 0.TEXT esamina: PUSHL %EAX RET G. Frosini Programmazione mista Slide 49
50 Programma misto codifica5 (1) # PROGRAMMA codifica5 # File principale codifica5a.s, uguale al file codifica2a.s.extern alfa, beta, esamina.global main.data kappa:.fill 8, 1.TEXT.INCLUDE "servizio.s" main: ancora: CALL leggisuccessivo fine: XORL %EAX, %EAX RET G. Frosini Programmazione mista Slide 50
51 Programma misto codifica5 (2) // PROGRAMMA codifica5 // File secondario codifica5b.cpp using namespace std; // non necessario char alfa; char* beta; extern "C" void esamina() // unica differenza rispetto al file codifica3b.cpp { for(int i = 0; i < 8; i++) { if ((alfa & 0x80) == 0) *(beta+i) = '0'; else *(beta+i) = '1'; // anche beta[i] alfa = alfa<<1; } } G. Frosini Programmazione mista Slide 51
52 Sviluppo delle versioni miste 4 e 5 Sviluppo della versione 4 g++ -m32 codifica4a.cpp codifica4b.s o codifica4./codifica4 Sviluppo della versione 5: g++ -m32 codifica5a.s codifica5b.cpp o codifica5./codifica5 G. Frosini Programmazione mista Slide 52
53 OPZIONI DEL COMANDO g++ Comando g++: con l opzione -nostdlib non collega nessun file di libreria (solo quelli esplicitamente elencati); in questo caso: non può più essere utilizzato il file servizio.s, ma solo il file ser.s; il programma principale deve avere la struttura vista per il comando as: # programma principale.data.text #include ser.s.global _start _start: JMP uscita G. Frosini Programmazione mista Slide 53
AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio
AXO Architettura dei Calcolatori e Sistema Operativo processo di assemblaggio linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio
DettagliARCHITETTURA DEI CALCOLATORI VOLUME I
Graziano Frosini ARCHITETTURA DEI CALCOLATORI VOLUME I ASSEMBLER E CORRISPONDENZA FRA C++ E ASSEMBLER CON RIFERIMENTO AL PERSONAL COMPUTER E ALL AMBIENTE DI PROGRAMMAZIONE DJGPP Copyright MMIX ARACNE editrice
DettagliProcessore PC. Spazio di indirizzamento. la ALU (Arithmetic and Logic Unit) la FPU (Floating Point Unit)
Processore PC Faremo riferimento al cosiddetto processore PC, che rappresenta una schematizzazione dei processori a 32 bit presenti nei Personal Computer. Il processore è costituito da due unità fondamentali:
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliINFORMATICA - I puntatori Roberta Gerboni
1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un
DettagliArchitettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H
Architettura dei calcolatori e sistemi operativi Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H Sommario Il processo di assemblaggio Il collegatore (linker) 2 Assemblatore: traduzione
DettagliINFORMATICA 1 L. Mezzalira
INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello
DettagliLe stringhe. Le stringhe
Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è
DettagliFONDAMENTI di INFORMATICA L. Mezzalira
FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software
DettagliArchitettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):
Architettura (10/9003) Pag. 1/6 Esame di Architettura (matr.0-1) del 10/9003 Per Fondamenti di Architettura NON rispondere Per le domande a risposta multipla cerchiare la risposta scelta. Non alle domande
DettagliGestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
DettagliArchitettura degli elaboratori (A)
Laurea in Informatica a.a. 2010-2011 Laboratorio del corso di Architettura degli elaboratori (A) Modulo 1: l Architettura dell 8086 Valeria Carofiglio Linguaggi a vari livelli e loro relazioni Programma
DettagliCodifica: dal diagramma a blocchi al linguaggio C++
Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU
DettagliTesti di Esercizi e Quesiti 1
Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica
DettagliCOS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliQuinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.
Quinto Homework 1) Si vuole progettare una cache a mappatura diretta per un sistema a 32 bit per una memoria da 2 GB (quindi sono solo 31 i bit utili per gli indirizzi) e blocchi di 64 byte. Rispondere
DettagliISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++
ISTITUTO TECNICO INDUSTRIALE STATALE G A L I L E O F E R R A R I S DIISPENSA DII IINFORMATIICA E SIISTEMII AUTOMATIICII LA GESTIONE DEI FILE DI TESTO IN C++ Le classi per la gestione dei file. Il C++ è
DettagliCapitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.
Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2
DettagliSISTEMI DI NUMERAZIONE E CODICI
SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema
DettagliGli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
DettagliOperazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013
Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 In questo documento vengono illustrate brevemente le operazioni aritmetiche salienti e quelle logiche ad esse strettamente collegate.
Dettagli(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896
2 Esercizio 2.2 La rappresentazione esadecimale prevede 16 configurazioni corrispondenti a 4 bit. Il contenuto di una parola di 16 bit può essere rappresentato direttamente con 4 digit esadecimali, sostituendo
DettagliCaratteri e stringhe Esercizi risolti
Esercizi risolti 1 Esercizio: Conta vocali e consonanti Scrivere un programma in linguaggio C che legga una frase introdotta da tastiera. La frase è terminata dall introduzione del carattere di invio.
DettagliSET/CLEAR LOAD DATA FROM STRING
SET/CLEAR STD CLD AZIONE: Imposta ad 1 (STD) o a zero (CLD) il valore del flag DF. Sono istruzioni senza parametri. Vanno sempre messi!! FLAG di cui viene modificato il contenuto: Nessuno (a parte DF).
DettagliL Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica
L Assembler 8086 M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Si suddividono in: istruzioni per il calcolo binario istruzioni
DettagliIng. Paolo Domenici PREFAZIONE
Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte
DettagliIntroduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
DettagliDall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere
DettagliIl microprocessore 8086
1 Il microprocessore 8086 LA CPU 8086 Il microprocessore 8086 fa parte della famiglia 80xxx della INTEL. Il capostipite di questa famiglia è stato l 8080, un microprocessore ad 8 bit che ha riscosso un
DettagliStrutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)
Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi
DettagliArduino: Programmazione
Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite
DettagliLINGUAGGI DI PROGRAMMAZIONE
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliMatematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE
Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...
DettagliUniversità di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
DettagliToolChain: Come Generare Applicazioni in Linguaggio Macchina
ToolChain: Come Generare Applicazioni in Linguaggio Macchina Luca Abeni e Luigi Palopoli March 30, 2015 La Lingua della CPU Una CPU capisce e riesce ad eseguire solo il linguaggio macchina Linguaggio di
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliLa struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
DettagliCalcolatori Elettronici Parte X: l'assemblatore as88
Anno Accademico 2013/2014 Calcolatori Elettronici Parte X: l'assemblatore as88 Prof. Riccardo Torlone Università Roma Tre L'assemblatore as88 Disponibile presso: CD-ROM allegato al libro di testo del corso
DettagliAlgebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)
DettagliLezione 8. La macchina universale
Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione
DettagliInformazione analogica e digitale
L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica
DettagliCALCOLATORI ELETTRONICI II
CALCOLATORI ELETTRONICI II L ASSEMBLATORE Microsoft MASM MASM Argomenti della lezione Faremo riferimento al linguaggio sorgente accettato dall assemblatore Microsoft MASM nelle versioni successive alla
Dettaglivoid funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }
FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo
DettagliDati testuali. Caratteri e stringhe. Tipi di dato testuali. Dati testuali. Il sistema dei tipi C. Rappresentazione dei testi
Tipi di dato testuali Caratteri Stringhe Caratteri e stringhe 5 Tipi di dato testuali I programmi visti finora erano in grado di elaborare esclusivamente informazioni numeriche Numeri eri (), numeri reali
DettagliCLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO
CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO 1 Domanda [1 punto] Dato il formato in virgola mobile su 32 bit così definito (precisione singola): o 1
DettagliGian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
DettagliWG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15
WG TRANSLATE Pagina 1 di 15 Sommario WG TRANSLATE... 1 1.1 INTRODUZIONE... 3 1 TRADUZIONE DISPLAY FILE... 3 1.1 Traduzione singolo display file... 4 1.2 Traduzione stringhe da display file... 5 1.3 Traduzione
DettagliExcel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it
Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo
DettagliIl simulatore SPIM SPIM
Il simulatore SPIM Architetture dei Calcolatori (lettere A-I) SPIM SPIM: un simulatore per eseguire programmi assembler scritti per processori MIPS32 Download e materiale relativo alla pagina Web http://www.cs.wisc.edu/~larus/spim.html
DettagliAutomatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione
Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento
DettagliSistema operativo: Gestione della memoria
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliLe funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.
Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni
DettagliLinguaggio C. Fondamenti. Struttura di un programma.
Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione
DettagliJava:Struttura di Programma. Fabio Scanu a.s. 2014/2015
Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle
DettagliFASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"
FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera
DettagliAppunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C
Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)
DettagliAXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000
AXO Achitettura dei Calcolatori e Sistema Operativo Instruction Set Architecture (ISA) e 68000 introduzione a ISA ISA - Instruction Set Architecture insieme delle istruzioni (instruction set) che possono
Dettagli2 - Modifica. 2.1 - Annulla. 2.2 - Selezione finestra. S.C.S. - survey CAD system FIGURA 2.1
2 - Modifica FIGURA 2.1 Il menu a tendina Modifica contiene il gruppo di comandi relativi alla selezione delle entità del disegno, alla gestione dei layer, alla gestione delle proprietà delle varie entità
DettagliMULTIPROGRAMMAZIONE E PROTEZIONE. G. Frosini Multiprogrammazione e Protezione Slide 1
MULTIPROGRAMMAZIONE E PROTEZIONE G. Frosini Multiprogrammazione e Protezione Slide 1 SISTEMI MULTIPROGRAMMATI Sistema di elaborazione con un solo processore: può eseguire un solo programma alla volta;
DettagliESERCIZI DI PROGRAMMAZIONE C/C++ per le classi terza
ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi terza vers.0 in lavorazione Docente SAFFI FABIO Contenuti Implementazione delle operazioni di base mediante main in un unico file sorgente... 2 Struttura
DettagliPer scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
DettagliCPU. Maurizio Palesi
CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore
DettagliRappresentazione dei numeri in un calcolatore
Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri
DettagliLinguaggi di programmazione
Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore
DettagliAssembly. Modello x86
Assembly Modello x86 1 Il microprocessore Un MICROPROCESSORE è un circuito integrato dotato di una struttura circuitale in grado di attuare un prefissato SET di ISTRUZIONI 2 Caratteristiche del microprocessore
DettagliFunzioni. Il modello console. Interfaccia in modalità console
Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi
DettagliNascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti
Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del
DettagliAppunti del corso di Informatica 1. 6 Introduzione al linguaggio C
Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)
DettagliCompilatore risorse display grafico LCD serie IEC-line
Compilatore risorse display grafico LCD serie IEC-line aggiornamento: 22-11-2012 IEC-line by OVERDIGIT overdigit.com 1. Il display grafico LCD I PLC della serie IPC-line possono disporre opzionalmente
DettagliConvertitori numerici in Excel
ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel
DettagliLaboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono
DettagliRISOLUTORE AUTOMATICO PER SUDOKU
RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU
DettagliI file di dati. Unità didattica D1 1
I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità
DettagliLa codifica delle informazioni
La codifica delle informazioni Bit e byte Come già visto l elaboratore è in grado di rappresentare informazioni al proprio interno solo utilizzando cifre binarie (bit) che solitamente vengono manipolate
DettagliSiamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
DettagliVersioni x.7.9 Note Operative
Versioni x.7.9 Note Operative Le versioni x.7.9 sono state rilasciate per poter predisporre i dati per il cosiddetto spesometro 2013 o per la comunicazione delle operazioni IVA rilevanti utilizzando il
DettagliProgrammazione I / Informatica generale Prova scritta 11 Giugno 2008
Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 NOTA: Si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main. Inoltre, nei programmi è da sottintendere
DettagliCodifica dei numeri negativi
E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione
DettagliInformatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter
Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura
DettagliCorso Programmazione 1 Capitolo 01: Concetti Elementari
Corso Programmazione 1 Capitolo 01: Concetti Elementari Docente: Roberto Sebastiani - roberto.sebastiani@unitn.it Esercitatori: Mario Passamani - mario.passamani@unitn.it Alessandro Tomasi - alessandro.tomasi@unitn.it
DettagliCorso di Informatica Applicata. Lezione 3. Università degli studi di Cassino
Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Lezione 3 Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.: +39
DettagliEsercitazione Informatica I AA 2012-2013. Nicola Paoletti
Esercitazione Informatica I AA 2012-2013 Nicola Paoletti 4 Gigno 2013 2 Conversioni Effettuare le seguenti conversioni, tenendo conto del numero di bit con cui si rappresenta il numero da convertire/convertito.
DettagliHardware di un Computer
Hardware di un Computer Monitor Mouse Tastiera Printer Disk CPU Graphics Adapter USB Controller Parallel Port Disk Controller BUS Memoria RAM Memoria ROM (BIOS) DMA CPU esegue istruzioni, effettua calcoli,
DettagliNote per generazione file.txt per invio trimestrale V.P. all AGENZIA DELLE ENTRATE
Note per generazione file.txt per invio trimestrale V.P. all AGENZIA DELLE ENTRATE Si tratta della funzione che consente di generare il file in formato testo (.TXT) che permette la spedizione all Agenzia
DettagliLeggere un messaggio. Copyright 2009 Apogeo
463 Leggere un messaggio SyllabuS 7.6.3.3 Per contrassegnare un messaggio selezionato puoi fare clic anche sulla voce di menu Messaggio > Contrassegna messaggio. Marcare, smarcare un messaggio I messaggi
DettagliModulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...
Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...
DettagliGestione Risorse Umane Web
La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...
DettagliLez. 3 L elaborazione (II parte) Prof. Pasquale De Michele Gruppo 2
Lez. 3 L elaborazione (II parte) Prof. Pasquale De Michele Gruppo 2 1 Dott. Pasquale De Michele Dipartimento di Matematica e Applicazioni Università di Napoli Federico II Compl. Univ. Monte S.Angelo Via
DettagliRappresentazione delle informazioni
Rappresentazione delle informazioni Abbiamo informazioni (numeri, caratteri, immagini, suoni, video... ) che vogliamo rappresentare (e poter elaborare) in un calcolatore. Per motivi tecnologici un calcolatore
DettagliMATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c
Caratteristiche MATLAB Linguaggio di programmazione orientato all elaborazione di matrici (MATLAB=MATrix LABoratory) Le variabili sono matrici (una variabile scalare equivale ad una matrice di dimensione
DettagliFondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1
Fondamenti di Informatica PROBLEMI E ALGORITMI Fondamenti di Informatica - D. Talia - UNICAL 1 Specifica di un algoritmo Primo approccio, scrittura diretta del programma: la soluzione coincide con la codifica
DettagliLezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014
Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS
Dettagli----------------------------------------------------------------
---------------------------------------------------------------- utilizzo frequente di chiamate a.. A differenza del Pascal, il C permette di operare con assegnamenti e confronti su dati di tipo diverso,
DettagliSottoprogrammi: astrazione procedurale
Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j
DettagliRichiesta pagina PHP (es: index.php)
PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con
DettagliESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 10 Settembre 2013
COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio Non si possono consultare manuali, appunti e calcolatrici. Esercizio 1: Rappresentare i numeri 37 e 90 (in base 10) in notazione binaria in complemento
Dettaglihttp://www.programmiamo.altervista.org/c/oop/o...
PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.
Dettagli