--*- coding: utf-8; -*-- INF2270 Løsningsforslag oppgaver uke 7 2011 Oppgave 1 Vi kan beregne (0-a)-b som gir samme resultat. .globl f2 f2: movl $0,%eax subl 4(%esp),%eax subl 8(%esp),%eax ret Oppgave 2 #define STREQ(s1,s2) (strcmp((s1),(s2))==0) Oppgave 3 Det finnes mange løsninger, blant annet x = MIN(a,b) + 1; x = 1 - MIN(a,4); Disse vil bli ekspandert til henholdsvis x = a #include int main(int argc, char *argv[]) { FILE *f; int nc = 0, nw = 0, nl = 0, /* Antall tegn, ord, linjer */ c, in_word = 0; if (argc != 2) { printf("Usage: wc file\n"); return 1; } f = fopen(argv[1],"r"); if (f == NULL) { printf("wc: %s: No such file or directory\n", argv[1]); return 2; } c = fgetc(f); while (c != EOF) { nc++; if (c == '\n') nl++; if (isspace(c)) { in_word = 0; } else { if (! in_word) nw++; in_word = 1; } c = fgetc(f); } fclose(f); printf("%8d%8d%8d %s\n", nl, nw, nc, argv[1]); return 0; }