|
|
- Albana Mosca
- 8 anni fa
- Visualizzazioni
Transcript
1 Strutture dati in C e loro traduzione in assembler MIPS 1 Direttive assembler per l'allocazione dei dati Prima di iniziare a trattare il problema dell'allocazione delle varie strutture dati, introduciamo le direttive assembler che servono per allocare dati globali nel segmento dei dati, ovvero successivamente alla direttiva.data. Le direttive hanno a che fare con dati di tipo elementare (int, float, double, char), e possono essere impiegati anche per allocare sequenze di dati elementari gia inizializzati oppure non inizializzati. E' possibile specicare, prima delle direttive stesse, delle etichette seguite dai due punti. Le etichette di fatto corrispondono agli indirizzi di memoria in corrispondenza dei quali i dati verranno allocati dall'assemblatore. Le etichette possono poi essere usare dalle istruzioni per far riferimento alle aree di memoria relative, ad esempio possono essere riferite dalle istruzioni di lw e sw per leggere e scrivere, rispettivamente, in memoria. Le principali direttive per l'allocazione di dati inizializzati sono le seguenti:.half h1,...,hn # dich. di una sequenza di n half-word;.word w1,...,wn # dich. di una sequenza di n word (interi).byte b1,...,bn # dich. di una sequanza di byte.float f1,...,fn # dich. di una sequenza di float.double d1,...,dn # dich. di una sequenza di double.asciiz str # dich. di una stringa costante (terminata da 0) dove le liste alla destra delle direttive corrispondono alle inizializzazioni delle rispettive locazioni di memoria. I vari elementi delle liste sono allocati in memoria in locazioni contigue. Gli indirizzi dei vari elementi sono scelti in modo da rispettare degli allineamenti pressati. In particolare.half alloca i vari elementi su indirizzi multipli di 2, mentre.word,.float e.double su indirizzi multipli di 4. Le direttive.byte e.asciiz, poiche allocano dati di lunghezza 1B, non devono rispettare alcun allineamento. Si noti che lw/sw devono essere usati per accedere dati (4B) allineati alla parola (ind. multipli di 4), lh/sh per accedere dati (2B) allineati alla mezza parola (ind. multipli di 2), ed inne lb/sb per accedere dati (1B) allineati al byte. 1
2 Se l'indirizzo impiegato non rispetta l'allineamento relativo, si ottiene un'errore (eccezione causata da allineamento errato). La direttiva.align n puo invece essere impiegata per rompere lo schema di allineamento automatico imposto dalla direttiva seguente. In particolare, essa impone che il prossimo dato venga allineato con un indirizzo multiplo di 2 n. Quindi.align 2 impone l'allineamento alla parola, mentre.align 0 rimuove tutti gli allineamenti automatici imposti da.half,.word, ecc. Inne, la direttiva.space n alloca uno spazio di n byte nel segmento dei dati. L'allineamento ssato da.space puo essere controllato con la direttiva.align vista sopra. 2 Array mono-dimensionali (vettori) Si considerino i due vettori seguenti: int a[10]; char b[5]; Essi possono essere allocati in memoria rispettando gli allineamenti con le seguenti direttive:.data.align 2 a:.space 40 b:.space 5 Gli elementi dei due array sono allocati in memoria in maniera contigua. Tramite la direttiva.align 2 abbiamo forzato l'allineamento dei vari elementi dell'array a[] alla word (4B). Per esempio, se i due array sono allocati il primo a partire dall'indirizzo 0, il secondo dall'indirizzo 40, abbiamo il seguente layout di memoria: a[0] a[1] b[0] b[1] b[2] b[3] b[4] b[5] b[6] I due esempi seguenti illustrano un paio di funzioni C, con relativa traduzione MIPS, che restituiscono il valore dell'elemento di indice ind di un array di interi e di caratteri. Relativamente al codice assembler illustrato in Esempio 2.1, si noti la moltiplicazione per 4 (sll $a1, $a1, 2), che serve per tener conto della dimensione degli interi (4B). 2
3 Esempio 2.1 int elem(int a[], int ind) return(a[ind)); elem: sll $a1, $a1, 2 add $v0, $a0, $a1 lw $v0, 0($v0) La funzione e scritta in accordo alla politica caller-save. I parametri a e ind sono passati rispettivamente in $a0 e $a1. Il risultato della funzione e Esempio 2.2 char elem(char a[], int ind) return(a[ind)); elem: add $v0, $a0, $a1 lb $v0, 0($v0) La funzione e scritta in accordo alla politica caller-save. I parametri a e ind sono passati rispettivamente in $a0 e $a1. Il risultato della funzione e 3 Array bi-dimensionali La convenzione impiegata dal compilatore C per allocare array bi-dimensionali in memoria lineare e' quella di memorizzare il vettore per righe. Ovvero, prima tutti gli elementi della riga 0, di seguito e in maniera contigua tutti quelli della riga 1, ecc. Si consideri ad esempio l'array: int a[10][2]; che puo essere allocato in memoria rispettando gli allineamenti con le seguenti direttive:.data.align 2 a:.space 80 L'arraye poi allocato in memoria dall'assemblatore a partire da un indirizzo multiplo di 4. Se il primo elemento della prima riga (a[0][0]) e allocato a partire dall'indirizzo 0, abbiamo il seguente layout: a[0][0] a[0][1] a[1][0] Per accedere l'elemento a[i][j] e quindi necessario calcolare il displacement a partire dall'indirizzo corrispondente all'etichetta a. Si consideri, a proposito, che il primo elemento della riga i-esima, a meno di 3
4 calcoli che riguardano la dimensione del dato, e memorizzato a partire dal displacement: i*num colonne. Per selezionare l'elemento j-esimo della riga medesima basta quindi sommare j al displacement precedente, ottenendo quindi un diplacement uguale a: i*num colonne+j. Poiche nel processore MIPS l'indirizzamento e al Byte, per avere il displacement corretto bisogna anche moltiplicare per la dimensione del tipo di dato dell'array stesso: (i*num colonne+j)*size. Esempio 3.1 int el2(int a[][2], int i1, int i2) return(a[i1][12)); el2: sll $t0, $a1, 3 # i1*8 sll $t1, $a2, 1 # i2*2 addu $t0, $a0, $t0 addu $t0, $t1, $t0 lw $v0, 0($t0) La funzione e scritta in accordo alla politica caller-save. I parametri a e i1 e i2 sono passati, rispettivamente, in $a0, $a1 e $a2. Nel calcolo del displacement da sommare a $a0 bisogna considerare che num colonne=2, mentre size=4, per cui l'espressione (i*num colonne+j)*size diventa i*8+j*2. Il risultato della funzione e 4 Strutture Attraverso le struct e possibile in C denire collezioni di dati di tipo diverso, e riferire tali collezioni con uno stesso nome. Ad esempio, questa e una denizione di struttura C: struct elem int i[2]; double d; ; Alternativamente: typedef struct int i[2]; double d; type_elem; Nel primo caso, per denire una nuova variabile var di tipo struct elem, basta dichiararla come segue: 4
5 struct elem var; mentre nel secondo caso, avendo ridenito un nuovo tipo type elem, basta dichiararla come segue: type_elem var; Nel seguito useremo sempre la prima convenzione, senza usare typedef. L'allocazione della variabile var di tipo struct elem in memoria prevede l'allocazione contigua dei vari campi della struttura a partire da un indirizzo di partenza. Solitamente i vari campi della struttura vengono pero allocati in memoria rispettando l'allineamento denito dai tipi associati ai campi stessi. Questo puo portare ad alcuni sprechi di spazio tra un campo e l'altro. Ad esempio, se gli int e i double devono essere allineati alla word (4B), la variabile var di tipo struct elem verra cos memorizzata (considerando che il primo campo della struttura e allocato a partire dall'indirizzo 0): c //// i[0] i[1] d sprecando 3B in piu per l'allineamento tra il campo c ed il campo i[]. Inoltre, poichee possibile denire array di strutture, sempre per rispettare gli allineamenti e spesso necessario sprecare spazio tra una struttura e la successiva all'interno dell'array. Ad esempio, se deniamo il seguente array ar[], i cui elementi sono di tipo struct elem: struct elem int k; ; struct elem ar[10]; l'array verra cos memorizzato (considerando che il primo campo elemento dell'array sia allocato a partire dall'indirizzo 128, per cui l'etichetta ar corrispondera a 128): k c ///// k c ///// k La dimensione della struttura sara quindi 8B, considerando i byte nali (padding), che garantiscono l'allineamento del prossimo elemento dell'array, come parte integrante della struttura stessa. Questo tipo di gestione della memoria puo essere vericato da C tramite il seguente comando: 5
6 printf("%d\n", sizeof(struct elem)); Possimo ora dare una regola generale per scegliere l'allineamento dell'indirizzo iniziale di una struttura e garantire che: tutti i campi della struttura sia allineati opportunamente; l'indirizzo della struttura stessa sia anche l'indirizzo del primo campo della struttura stessa; i vari campi della struttura si possano individuare tramite un displacement costante a partire dall'indirizzo iniziale. Per eettuare questa scelta, basta considerare i tipi di tutti i campi contenuti nella struttura, scegliendo come allineamento dell'indirizzo iniziale della struttura l'allineamento piu severo tra quelli deniti dai vari campi della struttura stessa. Per esempio, se abbiamo un campo char (allineamento a 1B), un campo short int (allineamento a 2B), ed un campo int (allineamento a 4B), l'indirizzo iniziale della struttura dovra essere un multiplo di 4 (allineamento alla word=4b). 4.1 Accesso ai campi delle strutture Si consideri la seguente struttura: struct elem int i[2]; double d; ; In accordo alla regola data precedentemente, se i double devono essere allianeati alla word, l'indirizzo iniziale di una variabile di tipo struct elem deve essere anch'esso allineato alla word. Considerando che questo indirizzo iniziale sia 128: c ////// i[0] i[1] d Vediamo ora tre semplici esempi di funzioni che accedono ai vari campi di una struttura di tipo struct elem, il cui puntatore e passato come parametro delle funzioni stesse. Esempio 4.1 char ret_c(struct elem *ptr) return( ptr->c ); ret_c: lb $v0, 0($a0) La funzione e scritta in accordo alla politica caller-save. Il parametro ptr e passato in $a0. Il risultato della funzione e 6
7 Esempio int *ret_i(struct elem *ptr) return( ptr->i ); /* Il comando di sopra e' equivalente a: return ( &(ptr->i[0]) ); */ Esempio ret_i: addiu $v0, $a0, 4 La funzione e scritta in accordo alla politica caller-save. Il parametro ptr e passato in $a0. Il risultato della funzione e int ret_i1(struct elem *ptr) return( ptr->i[1] ); ret_i1: lw $v0, 4($a0) 4.2 Campi puntatore all'interno di strutture La funzione e scritta in accordo alla politica caller-save. Il parametro ptr e passato in $a0. Il risultato della funzione e La struttura denita precedentemente aveva come caratteristica che il vettore di interi int i[2] era completamente contenuto all'interno della struttura ed aveva lunghezza ssa. Se invece volessimo implementare una lista di strutture dove, per ogni struttura, il vettore i[] avesse lunghezza variabile, in C dovremmo dichiarare: struct elem int *i; double d; ; Se poi volessimo, a tempo di esecuzione, allocare un vettore di due interi, puntato dal puntatore i contenuto all'interno di una variabile di tipo struct elem, dovremmo scrivere:... struct elem var;... var.i = (struct elem *) malloc(2 * sizeof(int)); dove malloc(2 * sizeof(int)) alloca un'area di memoria contigua (di cui restituisce l'indirizzo) di dimensione 8B. Considerando che la variabile var deve essere allineata alla word (es. 128), e che l'area di memoria restituita da malloc() sia anch'essa allineata alla word 7
8 (es. 1024), l'assegnamento di sopra (var.i =...) produrrebbe la seguente situazione: c ////// i=1024 d \/ i[0] i[1] Nota che, anche se abbiamo cambiato la denizione della struttura, per riferire l'indirizzo dell'array i[] continueremo ad usare la notazione var.i, mentre per riferire il secondo elemento dell'array i[] continueremo ad usare la notazione var.i[1]. La traduzione assembler e invece completamente diversa. Per illustrare questo, rivediamo due degli esempi visti precedentemente: Esempio ed Esempio Negli esempi rivisti, la denizione di struct elem e quella nuova, con l'array i[] allocato dinamicamente a tempo di esecuzione. Esempio int *ret_i(struct elem *ptr) return( ptr->i ); /* Il comando di sopra e' equivalente a: return ( &(ptr->i[0]) ); */ ret_i: lw $v0, 4($a0) La funzione e scritta in accordo alla politica caller-save. Il parametro ptr e passato in $a0. Il risultato della funzione e Esempio int ret_i1(struct elem *ptr) return( ptr->i[1] ); ret_i1: lw $v0, 4($a0) lw $v0, 4($v0) La funzione e scritta in accordo alla politica caller-save. Il parametro ptr e passato in $a0. Il risultato della funzione e 8
Gli 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
Dettaglipuntatori Lab. Calc. AA 2007/08 1
puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene
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
Dettagli[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008
Se devo memorizzare più valori che sono in qualche modo parenti dal punto di vista logico, posso usare il concetto di vettore di variabili (array). Ad esempio, se devo memorizzare le temperature di tutti
DettagliAllocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
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
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 B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
DettagliLe operazioni di allocazione e deallocazione sono a carico del sistema.
Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione
DettagliInizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
DettagliFondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` 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
DettagliDimensione di uno Spazio vettoriale
Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione
DettagliLe variabili. Olga Scotti
Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica I tipi strutturati: gli array e le strutture Claudio De Stefano - Corso di Fondamenti di Informatica 1 arrays un array (o vettore) è una sequenza di oggetti dello stesso
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
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
DettagliProblem solving elementare su dati vettoriali
Problem solving elementare su dati vettoriali Introduzione Verifiche su sequenze di dati Selezione o ricerca di dati 2 2006 Politecnico di Torino 1 Introduzione (1/2) I problemi di verifica consistono
DettagliStrutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
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)
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione VI Tatiana Zolo tatiana.zolo@libero.it 1 LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di
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
DettagliFondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'
Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio di
DettagliVettori Algoritmi elementari di ordinamento
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Vettori Algoritmi elementari di ordinamento Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale
DettagliDefinire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};
ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca
DettagliRegione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da
ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario
DettagliIntroduzione al linguaggio C Gli array
Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome
DettagliProgetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore
ARPA Fonte Dati Regione Toscana 1 Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.1 Data emissione 09/10/13 Stato FINAL 2 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 1.1 09/10/2013
DettagliIndirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili
Indirizzo di una funzione 2 Puntatori a funzioni Ver. 2.4 Si può chiamare una funzione utilizzando l indirizzo di memoria dal quale inizia il codice eseguibile della funzione stessa L indirizzo di memoria
DettagliEsempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante
Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda
Dettaglidall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
DettagliLezione 9: Strutture e allocazione dinamica della memoria
Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare
Dettagli(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)
(Esercizi Tratti da Temi d esame degli ordinamenti precedenti) Esercizio 1 L'agenzia viaggi GV - Grandi Viaggi vi commissiona l'implementazione della funzione AssegnaVolo. Tale funzione riceve due liste
DettagliProgrammazione dinamica
Capitolo 6 Programmazione dinamica 6.4 Il problema della distanza di edit tra due stringhe x e y chiede di calcolare il minimo numero di operazioni su singoli caratteri (inserimento, cancellazione e sostituzione)
DettagliTibet4DExt. Manuale Utente. Un Plug-in 4 th Dimension per accedere agli archivi di Tibet in linea. (Versione 1.7.x)
Tibet4DExt Un Plug-in 4 th Dimension per accedere agli archivi di Tibet in linea (Versione 1.7.x) Manuale Utente Capitolo 1, Informazioni Generali Informazioni generali su Tibet4DExt Il plug-in Tibet4DExt
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
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
DettagliVariabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
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...
DettagliGestione della memoria centrale
Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti
Dettagli4. Operazioni elementari per righe e colonne
4. Operazioni elementari per righe e colonne Sia K un campo, e sia A una matrice m n a elementi in K. Una operazione elementare per righe sulla matrice A è una operazione di uno dei seguenti tre tipi:
DettagliI puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
DettagliL ambiente di simulazione SPIM
Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/28
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
Dettaglicostruttori e distruttori
costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,
DettagliAssembler di Spim. Assembler di SPIM. Struttura di un programma assembler. Direttive
Assembler di Spim Assembler di SPIM Il programma è organizzato in linee Ogni linea può contenere un commento che parte dal carattere # e si estende fino alla fine della linea Ogni linea che non sia bianca
DettagliVisibilità dei Membri di una Classe
Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce
DettagliIl tipo di dato astratto Pila
Il tipo di dato astratto Pila Il tipo di dato Pila Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l inserimento e l eliminazione di elementi avvengono secondo la regola seguente:
DettagliUniversità degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI
ORDINAMENTO DEI DATI Quando si ordina un elenco (ovvero una serie di righe contenenti dati correlati), le righe sono ridisposte in base al contenuto di una colonna specificata. Distinguiamo due tipi di
DettagliARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];
ARRAY BIDIMENSIONALI Si possono definire array di qualunque tipo di dato, quindi anche di altre array float [][] mx = new float[3][4]; ovvero.. (float []) [] mx = new float[3][4]; La loro motivazione (storica)
DettagliAppello di Informatica B
Politecnico di Milano Facoltà di Ingegneria Industriale 19 febbraio 2004 Appello di Informatica B Prof. Angelo Morzenti - Prof. Vincenzo Martena Cognome e nome: Matricola: Tipo di prova: recupero I prova
DettagliGaraviniSoftware srl MANUALE IVA. Aggiungere un Codice IVA
MANUALE IVA Aggiungere un Codice IVA All interno del vostro programma 4D, nel menù Tristar, selezionare la voce Anagrafici Tabella IVA Cliccando su Nuovo, appare la seguente schermata ed è necessario compilarla
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
DettagliIstruzioni per l uso dei programmi MomCad, TraveCon, TraveFon
Istruzioni per l uso dei programmi MomCad, TraveCon, TraveFon I tre programmi sono utility generali preparate appositamente per gli studenti (ma che potrebbero essere utili anche per professionisti). MomCad
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
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
DettagliCalcolare il massimo di una lista
Calcolare il massimo di una lista Ieri abbiamo imparato a calcolare il massimo di una lista predefinita: lista = [4,24,-89,81,3,0,-12,31] max = lista[0] # questo e' un commento: primo elemento di lista
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
DettagliEsercizio: gestione di un conto corrente
Esercizio: gestione di un conto corrente Si realizzi un conto corrente bancario mediante: - una ASTRAZIONE DI DATO - un TIPO DI DATO ASTRATTO Il conto corrente è caratterizzato dalle seguenti informazioni:
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
DettagliBreve riepilogo della puntata precedente:
Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta
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
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
DettagliSpiegazione Open Interest Storico:
Spiegazione Open Interest Storico: Ogni volta che viene scaricata la chain delle opzioni, tutti i dati ottenuti vengono memorizzati anche nel database storico, che comprende quindi sia i valori degli Open
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
DettagliLa gestione della memoria
La gestione della memoria DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/
DettagliDATA BASE ON LINE (BANCA DATI MODULI SPERIMENTALI)
Progetto regionale antidispersione per favorire l adempimento dell obbligo d istruzione 2 a annualità DATA BASE ON LINE (BANCA DATI MODULI SPERIMENTALI) MANUALE DI UTILIZZO Indice Premessa 3 Ingresso nel
DettagliLA CORRISPONDENZA COMMERCIALE
LA CORRISPONDENZA COMMERCIALE GLI ELEMENTI ESSENZIALI DELLA LETTERA COMMERCIALE Intestazione Individua il nome e il cognome o la ragione sociale di chi scrive; contiene inoltre l indirizzo e i recapiti
DettagliNell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo
Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo - la durata del mutuo in anni - l importo del mutuo
DettagliAlgoritmi e strutture dati. Codici di Huffman
Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per
DettagliPULSANTI E PAGINE Sommario PULSANTI E PAGINE...1
Pagina 1 Sommario...1 Apertura...2 Visualizzazioni...2 Elenco...2 Testo sul pulsante e altre informazioni...3 Comandi...3 Informazioni...4 Flow chart...5 Comandi...6 Pulsanti Principali e Pulsanti Dipendenti...6
DettagliDispense di Informatica per l ITG Valadier
La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di
DettagliMANUALE PARCELLA FACILE PLUS INDICE
MANUALE PARCELLA FACILE PLUS INDICE Gestione Archivi 2 Configurazioni iniziali 3 Anagrafiche 4 Creazione prestazioni e distinta base 7 Documenti 9 Agenda lavori 12 Statistiche 13 GESTIONE ARCHIVI Nella
DettagliWord processor funzione Stampa Unione
Word processor funzione Stampa Unione La funzione Stampa unione permette di collegare un documento che deve essere inviato ad una serie di indirizzi ad un file che contenga i nominativi dei destinatari.
DettagliAXO 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
DettagliAlcuni consigli per un uso di base delle serie di dati automatiche in Microsoft Excel
Alcuni consigli per un uso di base delle serie di dati automatiche in Microsoft Excel Le serie Una serie di dati automatica è una sequenza di informazioni legate tra loro da una relazione e contenute in
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
DettagliSistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1
IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza
DettagliGuida operativa. My Legal Corner. BestSoft SOFTWARE IN SANITÀ
Guida operativa My Legal Corner BestSoft SOFTWARE IN SANITÀ Via Bono Cairoli 28/A - 20127 Milano (MI) Help desk: 02 29529140 Num. Verde da fisso: 800 978542 E-mail: info@bestsoft.it Sito Internet: www.bestsoft.it
DettagliModello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli
Modello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli gerarchico e reticolare sono più vicini alle strutture
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,
DettagliIL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI
Pagina 1 UN SISTEMA DI NEWS Sommario UN SISTEMA DI NEWS...1 Introduzione...2 Scelgo l'area su cui operare...3 Un minimo di teoria...3 Creo le Pagine...4 Definizione dello Schedario Novità...6 Compilo la
DettagliFondamenti di Informatica 2
Fondamenti di Informatica 2 della prova scritta del 28 Febbraio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int min = 3; int i; Scrivere la porzione di codice
DettagliMATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010
elementi di teoria dei grafi anno acc. 2009/2010 Grafi semplici Un grafo semplice G è una coppia ordinata (V(G), L(G)), ove V(G) è un insieme finito e non vuoto di elementi detti vertici o nodi di G, mentre
DettagliPROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1
PROGRAMMA GESTIONE TURNI MANUALE UTENTE INDICE 1 PREMESSA 3 2 COMANDI COMUNI 3 3 SEDI 3 4 FESTIVITÀ 4 5 PERIODI TURNI 4 6 COD. TURNI 6 7 TURNI SPORTIVI 9 8 COD. EQUIPAGGI 9 9 DISPONIBILITÀ 10 10 INDISPONIBILITÀ
DettagliAutorizzazioni Kronos Web
Autorizzazioni Kronos Web Inserimento Richieste All apertura la funzione si presenta così: Da questa funzione è possibile inserire le mancate timbrature e le richieste di giustificativi di assenza o autorizzazione.
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
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
DettagliLa Stampa Unione. Individuare la lista indirizzi per la Stampa Unione
La Stampa Unione La Stampa unione consente di personalizzare con il nome, il cognome, l'indirizzo e altri dati i documenti e le buste per l'invio a più destinatari. Basterà avere un database con i dati
DettagliAppunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio
Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto
DettagliAlgoritmi e Strutture Dati
schifano@fe.infn.it Laurea di Informatica - Università di Ferrara 2011-2012 [1] Strutture dati Dinamiche: Le liste Una lista è una sequenza di elementi di un certo tipo in cui è possibile aggiungere e/o
Dettaglistrutturare dati e codice
Puntatori e passaggio parametri strutturare dati e codice Tipo di dati int * Pi ; Op. dereferenziazione j = *Pi ; Op. indirizzo Pi = &i ; By value int f(int i) ; a = f(b) ; By address int f(int * Pi) ;
DettagliSistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione
IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza
DettagliModuli (schede compilabili) in Word Esempio: scheda di alimentazione per un degente
Moduli (schede compilabili) in Word Esempio: scheda di alimentazione per un degente Vediamo come utilizzare Word per costruire un modulo compilabile, ovvero una scheda che contenga delle parti fisse di
DettagliMIPS Instruction Set 2
Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general
Dettagli1 Applicazioni Lineari tra Spazi Vettoriali
1 Applicazioni Lineari tra Spazi Vettoriali Definizione 1 (Applicazioni lineari) Si chiama applicazione lineare una applicazione tra uno spazio vettoriale ed uno spazio vettoriale sul campo tale che "!$%!
DettagliSoftware standard Alpi Label Ver. 2.2.0.0
Pag. 1 di 16 Manuale utente Software standard Alpi Label Ver. 2.2.0.0 Pag. 2 di 16 1 SOMMARIO Sommario 1 Sommario... 2 2 Specifiche Tecniche... 3 3 Maschera Principale... 4 4 Funzioni menù... 7 Pag. 3
DettagliTabelle Pivot - DISPENSE
Tabelle Pivot - DISPENSE Definizione Pivot Table: strumento che permette di riepilogare ed analizzare i dati di una tabella dinamicamente. Sono utilità che consentono di aggregare i dati secondo i criteri
DettagliScrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i
Esercizi PHP 1. Scrivere uno script PHP che produca in output: 1. La tabellina del 5 2. La tavola Pitagorica contenuta in una tabella 3. La tabellina di un numero ricevuto in input tramite un modulo. Lo
Dettagli