For Emacs: -*- coding: utf-8 -*- IN1020 L?sningsforslag for ?velsesoppgaver 29.9-4.10.2017 Oppgave 1 # div10(v): Beregn v delt p? 10. # Registre: %RAX - resultatet # %RDI - v # %R8 - verdien 10 .globl div10 div10: movq %rdi,%rax # Hent v. movq $10,%r8 # Legg 10 i %R8 cqo # og idivq %r8 # del v med 10. ret Oppgave 2 # sub(a,b): Beregner a-b. # Hvordan: Beregner a+(-b). # Registre: %RAX - svaret # %RDI - a # %RSI - b .globl sub sub: movq %RDI,%RAX negq %RSI addq %RSI,%RAX ret Oppgave 3 imulq $0,%RAX subq %RAX,%RAX andq $0,%RAX xorq %RAX,%RAX Oppgave 4 # mul10(v): Ganger v med 10. # Hvordan: Beregner f?rst v+v=2v og s? 2v+2v=4v i %RAX. # Legger s? til v og f?r 5v i %RAX. # Beregner s? 5v+5v=10v i %RAX. # Registre: %RAX - svaret # %RDI - v .globl mul10 mul10: movq %RDI,%RAX # Hent v og addq %RAX,%RAX # beregn 2v addq %RAX,%RAX # og 2(2v) = 4v. addq %RDI,%RAX # Beregn v + 4v = 5v. addq %RAX,%RAX # Beregn 2(5v) = 10v. ret