go to previous page   go to home page   go to next page

Answer:

Yes. A general purpose register can hold any 32-bit pattern.

Full-Word Aligned

However, if you want to perform floating point arithmetic, then the floating point number must be in a floating point register.

The previous program exchanged the bit patterns held at two memory locations. It could just as easily been written using general purpose registers:

## swap.asm
##
## Exchange the values in valA and valB

        .text
        .globl  main

main:
        lw      $t0,valA        # $t0  <-- valA
        lw      $t1,valB        # $t1  <-- valB
        sw      $t0,valB        # $t0  --> valB
        sw      $t1,valA        # $t1  --> valA

        li      $v0,10          # code 10 == exit
        syscall                 # Return to OS.
                
        .data
valA:   .float  8.32            # 32 bit floating point value
valB:   .float  -0.6234e4       # 32 bit floating point value
                                # small 'e' only

For both single precision load and store instructions (as with the general purpose load and store instructions) the memory address must be full-word alligned. It must be a multiple of four. Ordinarily this is not a problem. The assembler takes care of this.

QUESTION 8:

Do you think that the SPIM service that prints an integer can be used for floating point values?