--*- coding: utf-8; -*-- INF2270 L?sningsforslag oppgaver uke 10 2011 Oppgave 1 int utf8_n_bytes (unsigned int c) { if ((c & 0xffffff80) == 0) return 1; if ((c & 0xfffff800) == 0) return 2; if ((c & 0xffff0000) == 0) return 3; return 4; } Oppgave 2 .globl n_ones # Navn: n_ones. # Synopsis: Finn antallet 1-er-bit. # C-signatur: int n_ones (unsigned int v) # Registre: %eax: teller antall 1-er-bit # %ecx: verdien v (som stadig skiftes mot h?yre) n_ones: pushl %ebp # Standard movl %esp,%ebp # funksjonsstart. movl 8(%ebp),%edx # v. movl $0,%eax # ant = 0. # do { n_l: shrl $1,%edx # v >>= 1 /* og bit til C-flagg */ jnc n_n # if (C-flagg) incl %eax # ++ant. n_n: cmpl $0,%edx # } while (v jnz n_l # != 0) ; popl %ebp # return ant. ret #