Example: (Material [in brackets] is optional.) lw $t0, -4($s0), at addr 0x4 with PC = 0x4, $s0 = 0x10001000 instruction 8e08fffc opcode 100011 (lw) rs 0x16 rt 0x8 imm 0xfffc PC: input 0x8 output 0x4 Instruction memory: input 0x4 output 8e08fffc Inputs and output of top-left adder: in1 0x4 [current PC] in2 4 out 0x8 [incremented PC] Inputs and output of top-right adder: in1 not used in2 not used output not used Control signals: RegDst 0 ALUSrc 1 MemtoReg 1 RegWrite 1 MemRead 1 MemWrite 0 Branch 0 ALUOp 00 Inputs and output of register file: Read register 1 0x16 [($s0)] Read register 2 0x8 [($t0)] Write register 0x8 [($t0)] Write data whatever is at 0x1000fffc [(-4($s0))] Read data 1 0x10001000 Read data 2 ?? Inputs and output of the main ALU, including the control signals: ALU control 0010 (add) ALU input 1 0x10001000 [from $s0] ALU input 2 0xfffffffc [sign-extended value from "imm" field] ALU result 0x10000ffc (-4($s0))] Zero not used Inputs and output of data memory: Address 0x1000fffc [(-4($s0))] Write data not used Write 0 Read 1 Read data whatever is at 0x1000fffc State elements to be changed: PC, new value 0x8 register file, register $t0 to whatever is at 0x1000fffc