## $t0-$t9  temporary registers
## $s0-$s7  saved values
## $a0-$a3  function arguments
## $v0-$v1  return values
## $ra      return address
## $sp      stack pointer
## $fp      frame pointer

#include    <xc.h>
## Data is defined here
            .data
x:          .long       255

## Code is defined here
            .global     main
            .text
            .set        noreorder
            .ent        main
main:
            addi    $sp, $sp, -4
            sw      $ra, 0($sp)

forever:
            lw      $t0, x
            add     $t1, $t0, $t0
            add     $t0, $t0, $t1
            sw      $t0, x
            j       forever
            nop

            lw      $ra, 0($sp)
            addi    $sp, $sp, 4
            jr      $ra
            nop

            .end    main
