		   Ukeoppgaver 4.-5. november 2010


Oppgave 1
---------

Her er fem fors酶k p氓 氓 oversette enkle tilordninger fra C< 
til x86-kode. Alle er gale! Finn ut hva som er galt og hva 
x86-koden skulle ha v忙rt.

1a   v1 = -17;

        movl    $-17,%eax               # -17
        movl    v1,%eax                 # v1 =

1b   v2 = v1 - 1;

        movl    v1,%eax                 # v1
        movl    $1,%eax                 # 1
        movl    %eax,%ecx               
        subl    %ecx,%eax               # Compute -
        movl    %eax,v2                 # v2 =

1c   v3 = v1*-2;

        movl    v1,%eax                 # v1
        pushl   %eax                    
        movl    $-2,%eax                # -2
        movl    %eax,%ecx               
        popl    %eax                    
        mull    %ecx,%eax               # Compute *
        movl    %eax,v3                 # v3 =

1d   v4 = 2*(v2 + 2);

        movl    $2,%eax                 # 2
        pushl   %eax                    
        movl    v2,%eax                 # v2
        pushl   %eax                    
        movl    $2,%eax                 # 2
        movl    %eax,%ecx               
        popl    %eax                    
        addl    %ecx,%eax               # Compute +
        popl    %eax                    
        imull   %ecx,%eax               # Compute *
        movl    %eax,v4                 # v4 =

1e   v5 = (v1*3) / (v2*2);

        movl    v1,%eax                 # v1
        pushl   %eax                    
        movl    $3,%eax                 # 3
        movl    %eax,%ecx               
        popl    %eax                    
        imull   %ecx,%eax               # Compute *
        pushl   %eax                    
        movl    v2,%eax                 # v2
        pushl   %eax                    
        movl    $2,%eax                 # 2
        movl    %eax,%ecx               
        popl    %eax                    
        imull   %ecx,%eax               # Compute *
        movl    %eax,%ecx               
        popl    %eax                    
        idivl   %ecx                    # Compute /
        movl    %eax,v5                 # v5 =


Oppgave 2
---------

Skriv ferdig metodene EmptyStatm.genCode og ArithOperator.genCode.


Oppgave 3
---------

I prekoden finner vi

    class Expression extends Operand {

Hvorfor er Expression en subklasse av Operand?
