instruction.ha (553B)
1 use fmt; 2 export type instruction = struct { 3 instr: u32, 4 func: u32, 5 t: u32, 6 s: u32, 7 d: u32, 8 imm: u32, 9 imm_se: u32, 10 sub: u32, 11 shift: u32, 12 imm_jump: u32, 13 cop_opcode: u32, 14 }; 15 16 export fn new(ins: u32) instruction = { 17 18 let i = instruction { 19 instr = ins, 20 func = ins >> 26, 21 t = (ins >> 16) & 0x1f, 22 s = (ins >> 21) & 0x1f, 23 d = (ins >> 11) & 0x1f, 24 imm = ins & 0xffff, 25 imm_se = ((ins & 0xffff): i16): u32, 26 sub = ins & 0x3f, 27 shift = (ins >> 6) & 0x1f, 28 imm_jump = ins & 0x3ffffff, 29 cop_opcode = (ins >> 21) & 0x1f 30 }; 31 32 return i; 33 };