Additions:
===Lunedì 9 e giovedì 12 ottobre 2017 (Lezione 3 - 150 min) - Demetrescu/Coppa===
Deletions:
===Lunedì 9 ottobre 2017 (Lezione 3 - 150 min) - Demetrescu===
Additions:
===Lunedì 9 ottobre 2017 (Lezione 3 - 150 min) - Demetrescu===
Deletions:
===Lunedì 9 ottobre 2017 (Lezione 4 - 150 min) - Demetrescu===
Additions:
===Lunedì 9 ottobre 2017 (Lezione 4 - 150 min) - Demetrescu===
==Esempio 1: costrutto ##if##==
==Esempio 2: costrutto ##if##==
==Esempio 3: costrutto ##while##==
Deletions:
==Lunedì 9 ottobre 2017 (Lezione 4 - 150 min) - Demetrescu==
===Esempio 1: costrutto ##if##===
===Esempio 2: costrutto ##if##===
===Esempio 3: costrutto ##while##===
Additions:
decl %ecx # n--;
Deletions:
decl %eax # n--;
Additions:
# C equivalente:
# C equivalente:
# C equivalente:
Additions:
===Esempio 2: costrutto ##if##===
Calcolo del minimo di due ##short##:
%%(c;min.c)
short min(short x, short y);
short m = min(-7, -22);
printf("%hd\n", m);
%%(c;min.c)
short min(short x, short y) {
if (x < y) return x;
return y;
%%(c;min.s)
# short min(short x, short y) {
# if (x < y) return x;
# return y;
# short min(short x, short y) {
# if (x >= y) goto E; # x <-> ax, y <-> cx
# return x;
# E return y;
.globl min
min:
movw 4(%esp), %ax
movw 8(%esp), %cx
cmpw %cx, %ax # if (x >= y) goto E
jge E
ret # return x;
E: movw %cx, %ax
ret
===Esempio 3: costrutto ##while##===
%%(c;fact.c)
%%(c;fact.s)
Deletions:
===Esempio 2: costrutto ##while##===
Additions:
===Esempio 2: costrutto ##while##===
Calcolo del fattoriale di un intero senza segno:
unsigned fact(unsigned);
int main(){
unsigned f = fact(6);
printf("%u\n", f);
unsigned fact(unsigned n) {
unsigned f = 1;
while (n > 1) {
f *= n;
n--;
}
return f;
# unsigned fact(unsigned n) {
# unsigned f = 1;
# while (n > 1) {
# f *= n;
# n--;
# }
# return f;
# unsigned fact(unsigned n) { # n <->ecx
# unsigned f = 1; # f <-> eax
# L: if (n <= 1) goto E;
# f *= n;
# n--;
# goto L;
# E: return f;
.globl fact
fact:
movl 4(%esp), %ecx # carica parametro n in ecx
movl $1, %eax # unsigned f = 1;
L: cmpl $1, %ecx # L: if (n <= 1) goto E;
jbe E
imull %ecx, %eax # f *= n;
decl %eax # n--;
jmp L # goto L;
E: ret # E: return f;
Additions:
===Esempio 1: costrutto ##if##===
Calcolo del valore assoluto di un intero:
Deletions:
===Esempio 1: funzioni senza parametri e creazione file .s===
Programma con funzione senza parametri con valore di ritorno intero: