PC       = 0
EPC      = 0
Cause    = 0
BadVAddr = 0
Status   = 3000ff10

HI       = 0
LO       = 0

R0  [r0] = 0
R1  [at] = 0
R2  [v0] = 0
R3  [v1] = 0
R4  [a0] = 1
R5  [a1] = 7ffffa38
R6  [a2] = 7ffffa40
R7  [a3] = 0
R8  [t0] = 0
R9  [t1] = 0
R10 [t2] = 0
R11 [t3] = 0
R12 [t4] = 0
R13 [t5] = 0
R14 [t6] = 0
R15 [t7] = 0
R16 [s0] = 0
R17 [s1] = 0
R18 [s2] = 0
R19 [s3] = 0
R20 [s4] = 0
R21 [s5] = 0
R22 [s6] = 0
R23 [s7] = 0
R24 [t8] = 0
R25 [t9] = 0
R26 [k0] = 0
R27 [k1] = 0
R28 [gp] = 10008000
R29 [sp] = 7ffffa34
R30 [s8] = 0
R31 [ra] = 0


User Text Segment [00400000]..[00440000]
[00400000] 8fa40000  lw $4, 0($29)            ; 183: lw $a0 0($sp) # argc 
[00400004] 27a50004  addiu $5, $29, 4         ; 184: addiu $a1 $sp 4 # argv 
[00400008] 24a60004  addiu $6, $5, 4          ; 185: addiu $a2 $a1 4 # envp 
[0040000c] 00041080  sll $2, $4, 2            ; 186: sll $v0 $a0 2 
[00400010] 00c23021  addu $6, $6, $2          ; 187: addu $a2 $a2 $v0 
[00400014] 0c100009  jal 0x00400024 [main]    ; 188: jal main 
[00400018] 00000000  nop                      ; 189: nop 
[0040001c] 3402000a  ori $2, $0, 10           ; 191: li $v0 10 
[00400020] 0000000c  syscall                  ; 192: syscall # syscall 10 (exit) 
[00400024] 3402000f  ori $2, $0, 15           ; 5: li $2,15 
[00400028] 34030014  ori $3, $0, 20           ; 6: li $3,20 
[0040002c] 3c01ffff  lui $1, -1               ; 7: li $4,-5 
[00400030] 3424fffb  ori $4, $1, -5           
[00400034] 00042821  addu $5, $0, $4          ; 8: abs $5,$4 
[00400038] 04810002  bgez $4 8                
[0040003c] 00042822  sub $5, $0, $4           
[00400040] 00043022  sub $6, $0, $4           ; 9: neg $6,$4 
[00400044] 00803827  nor $7, $4, $0           ; 10: not $7,$4 
[00400048] 10620003  beq $3, $2, 12           ; 11: seq $8,$2,$3 
[0040004c] 34080000  ori $8, $0, 0            
[00400050] 10000002  beq $0, $0, 8            
[00400054] 34080001  ori $8, $0, 1            
[00400058] 14620003  bne $3, $2, 12           ; 12: sge $9,$2,$3 
[0040005c] 34090001  ori $9, $0, 1            
[00400060] 10000002  beq $0, $0, 8            
[00400064] 0062482a  slt $9, $3, $2           
[00400068] 14620003  bne $3, $2, 12           ; 13: sgeu $9,$2,$3 
[0040006c] 34090001  ori $9, $0, 1            
[00400070] 10000002  beq $0, $0, 8            
[00400074] 0062482b  sltu $9, $3, $2          
[00400078] 0062502b  sltu $10, $3, $2         ; 14: sgtu $10,$2,$3 
[0040007c] 0062502a  slt $10, $3, $2          ; 15: sgt $10,$2,$3 
[00400080] 14620003  bne $3, $2, 12           ; 16: sleu $11,$2,$3 
[00400084] 340b0001  ori $11, $0, 1           
[00400088] 10000002  beq $0, $0, 8            
[0040008c] 0043582b  sltu $11, $2, $3         
[00400090] 14620003  bne $3, $2, 12           ; 17: sle $11,$2,$3 
[00400094] 340b0001  ori $11, $0, 1           
[00400098] 10000002  beq $0, $0, 8            
[0040009c] 0043582a  slt $11, $2, $3          
[004000a0] 10620003  beq $3, $2, 12           ; 18: sne $12,$2,$3 
[004000a4] 340c0001  ori $12, $0, 1           
[004000a8] 10000002  beq $0, $0, 8            
[004000ac] 340c0000  ori $12, $0, 0           
[004000b0] 10400010  beq $2, $0, 64 [end-0x004000b0]; 19: beqz $2,end 
[004000b4] 0043082a  slt $1, $2, $3           ; 20: bge $2,$3,end 
[004000b8] 1020000e  beq $1, $0, 56 [end-0x004000b8] 
[004000bc] 0043082b  sltu $1, $2, $3          ; 21: bgeu $2,$3,end 
[004000c0] 1020000c  beq $1, $0, 48 [end-0x004000c0] 
[004000c4] 0062082a  slt $1, $3, $2           ; 22: bgt $2,$3,end 
[004000c8] 1420000a  bne $1, $0, 40 [end-0x004000c8] 
[004000cc] 0043082a  slt $1, $2, $3           ; 23: ble $3,$2,end 
[004000d0] 10200008  beq $1, $0, 32 [end-0x004000d0] 
[004000d4] 0043082b  sltu $1, $2, $3          ; 24: bleu $3,$2,end 
[004000d8] 10200006  beq $1, $0, 24 [end-0x004000d8] 
[004000dc] 0062082b  sltu $1, $3, $2          ; 25: bltu $3,$2,end 
[004000e0] 14200004  bne $1, $0, 16 [end-0x004000e0] 
[004000e4] 0062082a  slt $1, $3, $2           ; 26: blt $3,$2,end 
[004000e8] 14200002  bne $1, $0, 8 [end-0x004000e8] 
[004000ec] 14600001  bne $3, $0, 4 [end-0x004000ec]; 27: bnez $3,end 
[004000f0] 04010000  bgez $0 0 [end-0x004000f0]; 30: b end # wait here once the program has completed 

Kernel Text Segment [80000000]..[80010000]
[80000180] 0001d821  addu $27, $0, $1         ; 90: move $k1 $at # Save $at 
[80000184] 3c019000  lui $1, -28672           ; 92: sw $v0 s1 # Not re-entrant and we can't trust $sp 
[80000188] ac220200  sw $2, 512($1)           
[8000018c] 3c019000  lui $1, -28672           ; 93: sw $a0 s2 # But we need to use these registers 
[80000190] ac240204  sw $4, 516($1)           
[80000194] 401a6800  mfc0 $26, $13            ; 95: mfc0 $k0 $13 # Cause register 
[80000198] 001a2082  srl $4, $26, 2           ; 96: srl $a0 $k0 2 # Extract ExcCode Field 
[8000019c] 3084001f  andi $4, $4, 31          ; 97: andi $a0 $a0 0x1f 
[800001a0] 34020004  ori $2, $0, 4            ; 101: li $v0 4 # syscall 4 (print_str) 
[800001a4] 3c049000  lui $4, -28672 [__m1_]   ; 102: la $a0 __m1_ 
[800001a8] 0000000c  syscall                  ; 103: syscall 
[800001ac] 34020001  ori $2, $0, 1            ; 105: li $v0 1 # syscall 1 (print_int) 
[800001b0] 001a2082  srl $4, $26, 2           ; 106: srl $a0 $k0 2 # Extract ExcCode Field 
[800001b4] 3084001f  andi $4, $4, 31          ; 107: andi $a0 $a0 0x1f 
[800001b8] 0000000c  syscall                  ; 108: syscall 
[800001bc] 34020004  ori $2, $0, 4            ; 110: li $v0 4 # syscall 4 (print_str) 
[800001c0] 3344003c  andi $4, $26, 60         ; 111: andi $a0 $k0 0x3c 
[800001c4] 3c019000  lui $1, -28672           ; 112: lw $a0 __excp($a0) 
[800001c8] 00240821  addu $1, $1, $4          
[800001cc] 8c240180  lw $4, 384($1)           
[800001d0] 00000000  nop                      ; 113: nop 
[800001d4] 0000000c  syscall                  ; 114: syscall 
[800001d8] 34010018  ori $1, $0, 24           ; 116: bne $k0 0x18 ok_pc # Bad PC exception requires special checks 
[800001dc] 143a0008  bne $1, $26, 32 [ok_pc-0x800001dc] 
[800001e0] 00000000  nop                      ; 117: nop 
[800001e4] 40047000  mfc0 $4, $14             ; 119: mfc0 $a0 $14 # EPC 
[800001e8] 30840003  andi $4, $4, 3           ; 120: andi $a0 $a0 0x3 # Is EPC word-aligned? 
[800001ec] 10040004  beq $0, $4, 16 [ok_pc-0x800001ec]
[800001f0] 00000000  nop                      ; 122: nop 
[800001f4] 3402000a  ori $2, $0, 10           ; 124: li $v0 10 # Exit on really bad PC 
[800001f8] 0000000c  syscall                  ; 125: syscall 
[800001fc] 34020004  ori $2, $0, 4            ; 128: li $v0 4 # syscall 4 (print_str) 
[80000200] 3c019000  lui $1, -28672 [__m2_]   ; 129: la $a0 __m2_ 
[80000204] 3424000d  ori $4, $1, 13 [__m2_]   
[80000208] 0000000c  syscall                  ; 130: syscall 
[8000020c] 001a2082  srl $4, $26, 2           ; 132: srl $a0 $k0 2 # Extract ExcCode Field 
[80000210] 3084001f  andi $4, $4, 31          ; 133: andi $a0 $a0 0x1f 
[80000214] 14040002  bne $0, $4, 8 [ret-0x80000214]; 134: bne $a0 0 ret # 0 means exception was an interrupt 
[80000218] 00000000  nop                      ; 135: nop 
[8000021c] 401a7000  mfc0 $26, $14            ; 145: mfc0 $k0 $14 # Bump EPC register 
[80000220] 275a0004  addiu $26, $26, 4        ; 146: addiu $k0 $k0 4 # Skip faulting instruction 
[80000224] 409a7000  mtc0 $26, $14            ; 148: mtc0 $k0 $14 
[80000228] 3c019000  lui $1, -28672           ; 153: lw $v0 s1 # Restore other registers 
[8000022c] 8c220200  lw $2, 512($1)           
[80000230] 3c019000  lui $1, -28672           ; 154: lw $a0 s2 
[80000234] 8c240204  lw $4, 516($1)           
[80000238] 001b0821  addu $1, $0, $27         ; 157: move $at $k1 # Restore $at 
[8000023c] 40806800  mtc0 $0, $13             ; 160: mtc0 $0 $13 # Clear Cause register 
[80000240] 401a6000  mfc0 $26, $12            ; 162: mfc0 $k0 $12 # Set Status register 
[80000244] 375a0001  ori $26, $26, 1          ; 163: ori $k0 0x1 # Interrupts enabled 
[80000248] 409a6000  mtc0 $26, $12            ; 164: mtc0 $k0 $12 
[8000024c] 42000018  eret                     ; 167: eret 



