Additions:
===Lunedì 16 e giovedì 19 ottobre 2017 (Lezione 5 - 150 min) - Demetrescu/Coppa===
Deletions:
===Lunedì 16 ottobre e Giovedì 19 ottobre 2017 (Lezione 6 - 150 min) - Demetrescu/Coppa===
Additions:
===Lunedì 16 ottobre e Giovedì 19 ottobre 2017 (Lezione 6 - 150 min) - Demetrescu/Coppa===
Deletions:
===Lunedì 16 ottobre + Giovedì 19 ottobre 2017 (Lezione 6 - 150 min) - Demetrescu/Coppa===
Additions:
===Lunedì 16 ottobre + Giovedì 19 ottobre 2017 (Lezione 6 - 150 min) - Demetrescu/Coppa===
Deletions:
===Lunedì 16 ottobre 2017 (Lezione 6 - 150 min) - Demetrescu===
===Giovedì 19 ottobre 2017 (Lezione 5 - 150 min) - Coppa===
Additions:
===Lunedì 16 ottobre 2017 (Lezione 6 - 150 min) - Demetrescu===
===Giovedì 19 ottobre 2017 (Lezione 5 - 150 min) - Coppa===
Deletions:
===Lunedì 16 ottobre 2017 (Lezione 6 - 150 min) - Demetrescu e Giovedì 19 ottobre 2017 (Lezione 5 - 150 min) - Coppa===
Additions:
===Lunedì 16 ottobre 2017 (Lezione 6 - 150 min) - Demetrescu e Giovedì 19 ottobre 2017 (Lezione 5 - 150 min) - Coppa===
Deletions:
===Lunedì 16 ottobre 2017 (Lezione 6 - 150 min) - Demetrescu===
Additions:
==Esempio 1: verifica se due stringhe sono uguali==
%%(c;main.c)
#include
int streq(char* x, char* y);
int main() {
printf("%d\n", streq("ciao", "ciaooo")); // 0
printf("%d\n", streq("ciao", "ciao")); // 1
printf("%d\n", streq("ciaooo", "ciao")); // 0
return 0;
}
%%
%%(c;incr.c)
int streq(char* x, char* y) {
while (*x == *y) {
if (*x == 0) return 1;
x++;
y++;
}
return 0;
}
%%
%%(asm;incr.s)
# int streq(char* x, char* y) {
# while (*x == *y) {
# if (*x == 0) return 1;
# x++;
# y++;
# }
# return 0;
# }
# int streq(char* x, char* y) {
# char *c = x, *d = y, a;
# L: a = *c;
# if (a != *d) goto E;
# if (a != 0) goto Q;
# return 1;
# Q: c++;
# d++;
# goto L;
# E: return 0;
# }
.globl streq
streq:
movl 4(%esp), %ecx # char* c = x
movl 8(%esp), %edx # char* d = y
L: movb (%ecx), %al # L: a = *c;
cmpb (%edx), %al # if (a != *d) goto E;
jne E
cmpb $0, %al # if (a != 0) goto Q;
jne Q
movl $1, %eax # return 1;
ret
Q: incl %ecx # Q: c++;
incl %edx # d++;
jmp L # goto L;
E: movl $0, %eax # E: return 0;
ret
%%