go to previous page   go to home page   go to next page hear noise

Answer:

A 16-bit two's complement negative one:

FF FF  = 1111 1111 1111 1111

Sign-extended:

FF FF FF FF  =  1111 1111 1111 1111 1111 1111 1111 1111 

The sign-extended version is a 32-bit negative one.


The Fond addiu Instruction

The addiu instruction includes a 16-bit immediate operand. When the ALU executes the instruction, the immediate operand is sign-extended to 32 bits. If two's complement overflow occurs during the addition, it is ignored.

addiu   d,s,const        # d <—— s + const. 
                         # Const is 16-bit two's comp. sign-extended to 32 bits
                         # when the addition is done. No overflow trap.

There is also an add immediate instruction that does trap if overflow is detected during addition. We won't use it:

addi    d,s,const        # d <—— s + const. 
                         # Const is 16-bit two's comp. sign-extended to 32 bits
                         # when the addition is done. Overflow trap.

QUESTION 10:

Here is the previous program, that added +146 with -82. Rewrite it using the addiu instruction. Put the result in $10.

    ori      $7, $0, 146        # put +146 into $7
    ori      $8, $0,  82        # put 82 into $8
    nor      $8, $8,  $0        # reflect
    ori      $9, $9,   1        # 
    addu     $8, $8,  $9        # add 1: $8 = -82
    addu    $10, $7,  $8        # (+146) + (-82)