anchor.diff:  import FShow::*;
   
  -typedef  Bit#( 5) Ridx;  // Register index
  -typedef UInt#(16) Uimm;  // Unsigned immediate
  -typedef  Int#(16) Simm;  // Signed immediate
  -typedef  Bit#( 5) Sham;  // Shift ammount
  -typedef  Bit#(16) Joff;  // Jump offset
  -typedef  Bit#(26) Jtgt;  // Jump target
  -typedef  Bit#(16) Moff;  // Memory offset
  +typedef Bit#( 5) Ridx;  // Register index
  +typedef Bit#(16) Immd;  // Immediate
  +typedef Bit#( 5) Sham;  // Shift ammount
  +typedef Bit#(16) Joff;  // Jump offset
  +typedef Bit#(26) Jtgt;  // Jump target
  +typedef Bit#(16) Moff;  // Memory offset
   
   typedef union tagged {
       // Arithmetic Operations
       struct { Ridx rs; Ridx rt; Ridx rd; } ADD;
  -    struct { Ridx rs; Ridx rt; Simm im; } ADDI;
  -    struct { Ridx rs; Ridx rt; Simm im; } ADDIU;
  +    struct { Ridx rs; Ridx rt; Immd im; } ADDI;
  +    struct { Ridx rs; Ridx rt; Immd im; } ADDIU;
       struct { Ridx rs; Ridx rt; Ridx rd; } ADDU;
  -    struct {          Ridx rt; Uimm im; } LUI;
  +    struct {          Ridx rt; Immd im; } LUI;
       struct { Ridx rs; Ridx rt; Ridx rd; } SUB;
       struct { Ridx rs; Ridx rt; Ridx rd; } SUBU;
       
  
positive.code: 
  typedef Bit#(6) Opcode;
  
  
  
negative.code: 
      // Logical and Bit-Field Operations
      struct { Ridx rs; Ridx rt; Ridx rd; } AND;
      struct { Ridx rs; Ridx rt; Immd im; } ANDI;
      struct { Ridx rs; Ridx rt; Ridx rd; } NOR;
      struct { Ridx rs; Ridx rt; Ridx rd; } OR;
      struct { Ridx rs; Ridx rt; Immd im; } ORI;
      struct { Ridx rs; Ridx rt; Ridx rd; } XOR;
      struct { Ridx rs; Ridx rt; Immd im; } XORI;
  
      // Condition Testing and Conditional Move Operations
      struct { Ridx rd; Ridx rs; Ridx rt; } SLT;
      struct { Ridx rs; Ridx rt; Immd im; } SLTI;
      struct { Ridx rs; Ridx rt; Immd im; } SLTIU;
      struct { Ridx rs; Ridx rt; Ridx rd; } SLTU;
  
      // Multiply and divide operations
      struct { Ridx rs; Ridx rt;          } DIV;
  