Sistemi di Calcolo

Corso di Laurea in Ingegneria Informatica e Automatica - A.A. 2017-2018

HomePage | Avvisi | Diario lezioni | Programma | Materiale didattico | Esami | Forum | Login

Revision [1152]

Last edited on 2015-10-29 17:45:56 by CamilDemetrescu
Additions:
unsigned mystrlen(const char* s) { // s è una stringa terminata da un terminatore a zero
Deletions:
unsigned mystrlen(char* s) { // s è una stringa terminata da uno zero


Revision [1151]

Edited on 2015-10-29 17:41:04 by CamilDemetrescu
Additions:
while (v ==Esercizio 11 (Calcolo lunghezza di una stringa)==
Si traduca in Assembly IA32 la seguente funzione C, scrivendo un modulo ##mystrlen.s##:
unsigned mystrlen(char* s) { // s è una stringa terminata da uno zero
unsigned n = 0;
while (*s++) n++;
return n;
Deletions:
while (v


Revision [1150]

Edited on 2015-10-29 17:37:01 by CamilDemetrescu
Additions:
void clear(char* v, unsigned n) { // v è un array, n è la lunghezza dell'array
unsigned i=0;
while (i ==Esercizio 10 (Costrutto while: azzeramento di un array - variante)==
Si traduca in Assembly IA32 la seguente funzione C, scrivendo un modulo ##clear2.s##:
void clear2(char* v, unsigned n) { // v è un array, n è la lunghezza dell'array
char* p=v+n;
while (v
Deletions:
void clear(char* v, int n) { // v è un array, n è la lunghezza dell'array
int i=0;
while(i


Revision [1149]

Edited on 2015-10-29 17:32:03 by CamilDemetrescu
Additions:
==Esercizio 5 (Costrutto if: valore assoluto)==
==Esercizio 6 (Costrutto if...else: valore assoluto)==
==Esercizio 7 (Costrutto if..else: differenza in valore assoluto)==
==Esercizio 9 (Costrutto while: azzeramento di un array)==
Si traduca in Assembly IA32 la seguente funzione C, scrivendo un modulo ##clear.s##:
void clear(char* v, int n) { // v è un array, n è la lunghezza dell'array
int i=0;
while(i Si suggerisce di riscrivere dapprima il programma in una forma C equivalente in cui il ##while## viene rimpiazzato da un ##if (...) goto##. Scrivere un programma di prova per testare la funzione IA32.
Deletions:
==Esercizio 5 (Costrutto if)==
==Esercizio 6 (Costrutto if...else)==
==Esercizio 7 (Costrutto if..else)==


Revision [1136]

Edited on 2015-10-28 10:45:36 by CamilDemetrescu
Additions:
==Esercizio 8 (Costrutto if)==
Si traduca in Assembly IA32 la seguente funzione C, scrivendo un modulo ##get_second.s##:
short get_second(short* v, int n) { // v è un array, n è la lunghezza dell'array
short a = -1;
if (n>=2) a=v[1];
return a;


Revision [1135]

Edited on 2015-10-28 10:37:02 by CamilDemetrescu
Additions:
Si suggerisce di riscrivere dapprima il programma in una forma C equivalente in cui l'##if (...) istruzione## viene rimpiazzato da un ##if (...) goto##. Scrivere un programma di prova per testare la funzione IA32.
Si suggerisce di riscrivere dapprima il programma in una forma C equivalente in cui l'##if (...) istruzione## viene rimpiazzato da un ##if (...) goto##. Scrivere un programma di prova per testare la funzione IA32.
==Esercizio 7 (Costrutto if..else)==
Si traduca in Assembly IA32 la seguente funzione C che calcola il valore assoluto della differenza dei parametri, scrivendo un modulo ##mod.s##:
int mod(int x, int y) {
if (x>=y) return x-y;
else return y-x;
Si suggerisce di riscrivere dapprima il programma in una forma C equivalente in cui l'##if (...) istruzione## viene rimpiazzato da un ##if (...) goto##. Scrivere un programma di prova per testare la funzione IA32.


Revision [1134]

Edited on 2015-10-28 10:32:56 by CamilDemetrescu
Additions:
==Esercizio 5 (Costrutto if)==
Si traduca in Assembly IA32 la seguente funzione C, scrivendo un modulo ##abs.s##:
int abs(int x) {
if (x<0) x = -x;
==Esercizio 6 (Costrutto if...else)==
Si traduca in Assembly IA32 la seguente funzione C, scrivendo un modulo ##abs2.s##:
int abs2(int x) {
if (x>=0) return x;
else return -x;


Revision [1060]

Edited on 2015-10-14 21:04:39 by CamilDemetrescu
Additions:
Si tenga presente che l'istruzione ##imul## deve avere come operando destinazione necessariamente un registro. Usare il seguente programma di prova:


Revision [1059]

Edited on 2015-10-14 21:03:36 by CamilDemetrescu
Additions:
raddoppia(&x);
Deletions:
raddoppia(&x)


Revision [1056]

Edited on 2015-10-14 10:13:09 by CamilDemetrescu
Additions:
==Esercizio 3 (Accesso a parametri interi di una funzione)==
Deletions:
==Esercizio 5 (Accesso a parametri interi di una funzione)==


Revision [1055]

Edited on 2015-10-14 10:12:01 by CamilDemetrescu
Additions:
==Esercizio 5 (Accesso a parametri interi di una funzione)==
==Esercizio 4 (Accesso a parametri puntatore di una funzione)==
Deletions:
==Esercizio 3 (Accesso ai parametri di una funzione)==
Si traduca in Assembly IA32 la seguente funzione C:
==Esercizio 4 (Accesso a parametri interi di una funzione)==
==Esercizio 5 (Accesso a parametri puntatore di una funzione)==


Revision [1054]

Edited on 2015-10-14 10:08:24 by CamilDemetrescu
Additions:
%%(c;quadrato_main.c)
%%(c;raddoppia_main.c)


Revision [1053]

Edited on 2015-10-14 10:07:34 by CamilDemetrescu
Additions:
==Esercizio 5 (Accesso a parametri puntatore di una funzione)==
Deletions:
==Esercizio 4 (Accesso a parametri puntatore di una funzione)==


Revision [1052]

Edited on 2015-10-14 10:06:58 by CamilDemetrescu
Additions:
Si vedano le discussioni e le soluzioni sul [[http://solo.diag.uniroma1.it/index.php?board=304.0 forum]].
==Esercizio 3 (Accesso ai parametri di una funzione)==
Si traduca in Assembly IA32 la seguente funzione C:
int quadrato(int x) {
return x*x;
==Esercizio 4 (Accesso a parametri interi di una funzione)==
Si traduca in Assembly IA32 la seguente funzione C, scrivendo un modulo ##quadrato.s##:
int quadrato(int x) {
return x*x;
Usare il seguente programma di prova:
int quadrato(int x);
printf("quadrato(8)=%d\n", quadrato(8)); // deve stampare 64
==Esercizio 4 (Accesso a parametri puntatore di una funzione)==
Si traduca in Assembly IA32 la seguente funzione C, scrivendo un modulo ##raddoppia.s##:
void raddoppia(int* p) {
*p = *p * 2;
Usare il seguente programma di prova:
void raddoppia(int* p);
int x = 15;
raddoppia(&x)
printf("x=%d\n", x); // deve stampare 30


Revision [1041]

Edited on 2015-10-12 14:32:13 by CamilDemetrescu
Additions:
printf("es2() -> %hd\n", z); // stampa contenuto variabile z
Deletions:
printf("es2() -> %h\n", z); // stampa contenuto variabile z


Revision [1027]

Edited on 2015-10-10 11:47:47 by CamilDemetrescu
Additions:
==Esercizio 2 (Invocazione funzione IA32 da programma C)==
Deletions:
==Esercizio 2==


Revision [1026]

Edited on 2015-10-10 11:47:25 by CamilDemetrescu
Additions:
Se si ritiene che servano registri di appoggio per il calcolo dell'espressione, usare preferibilmente i registri C e/o D.
Deletions:
Se si ritiene che servano registri di appoggio per il calcolo dell'espressione, usare preferibilmente C e/o D.


Revision [1025]

Edited on 2015-10-10 11:41:56 by CamilDemetrescu
Additions:
Scrivere un file ##es2.s## che contiene la traduzione IA32 della funzione C ##es2##. Compilare il programma insieme al main di prova, ricordando che il valore restituito da una funzione per convenzione è contenuto nel registro A:
Deletions:
Scrivere un file ##es2.s## che contiene la traduzione IA32 della funzione C ##es2##. Compilare il programma insieme al main di prova:


Revision [1024]

Edited on 2015-10-10 11:41:01 by CamilDemetrescu
Additions:
short es2(); // prototipo per la funzione definita nel modulo es2.s
Deletions:
short es2(); // prototipo per la funzione definita nel modulo ##es2.s##.


Revision [1023]

The oldest known version of this page was created on 2015-10-10 11:40:33 by CamilDemetrescu
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki
Page was generated in 0.0420 seconds