Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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] 3c011001 lui $1, 4097 ; 25: sw $31 saved_ret_pc
- [00400028] ac3f0000 sw $31, 0($1)
- [0040002c] 34020004 ori $2, $0, 4 ; 32: li $v0 4 # syscall 4 (print_str)
- [00400030] 3c011001 lui $1, 4097 [lb_] ; 33: la $a0 lb_
- [00400034] 342400d4 ori $4, $1, 212 [lb_]
- [00400038] 0000000c syscall ; 34: syscall
- [0040003c] 21080004 addi $8, $8, 4 ; 38: addi $t0 4 # loop counter
- [00400040] 3c011001 lui $1, 4097 [array1] ; 39: la $t1 array1
- [00400044] 342900a4 ori $9, $1, 164 [array1]
- [00400048] 3c011001 lui $1, 4097 [array2] ; 40: la $t2 array2
- [0040004c] 342a00b4 ori $10, $1, 180 [array2]
- [00400050] 3c011001 lui $1, 4097 [array3] ; 41: la $t3 array3
- [00400054] 342b00c4 ori $11, $1, 196 [array3]
- [00400058] c5200000 lwc1 $f0, 0($9) ; 43: lwc1 $f0 0($t1)
- [0040005c] c5410000 lwc1 $f1, 0($10) ; 44: lwc1 $f1 0($t2)
- [00400060] 00000000 nop ; 45: nop
- [00400064] 46000880 add.s $f2, $f1, $f0 ; 46: add.s $f2 $f1 $f0
- [00400068] 00000000 nop ; 47: nop
- [0040006c] e5620000 swc1 $f2, 0($11) ; 48: swc1 $f2 0($t3)
- [00400070] 2108ffff addi $8, $8, -1 ; 49: addi $t0 $t0 -1
- [00400074] 21290004 addi $9, $9, 4 ; 50: addi $t1 $t1 4
- [00400078] 214a0004 addi $10, $10, 4 ; 51: addi $t2 $t2 4
- [0040007c] 216b0004 addi $11, $11, 4 ; 52: addi $t3 $t3 4
- [00400080] 1500fff6 bne $8, $0, -40 [ladd-0x00400080]
- [00400084] 34020004 ori $2, $0, 4 ; 59: li $v0 4 # syscall 4 (print_str)
- [00400088] 3c011001 lui $1, 4097 [sm] ; 60: la $a0 sm
- [0040008c] 342400f4 ori $4, $1, 244 [sm]
- [00400090] 0000000c syscall ; 61: syscall
- [00400094] 3c011001 lui $1, 4097 [array3] ; 65: la $a1 array3
- [00400098] 342500c4 ori $5, $1, 196 [array3]
- [0040009c] 20080004 addi $8, $0, 4 ; 66: addi $t0 $0 4
- [004000a0] c4ac0000 lwc1 $f12, 0($5) ; 67: lwc1 $f12 0($a1)
- [004000a4] 34020002 ori $2, $0, 2 ; 68: li $v0 2 # syscall 2 (print_float)
- [004000a8] 0000000c syscall ; 69: syscall
- [004000ac] 34020004 ori $2, $0, 4 ; 73: li $v0 4 # syscall 4 (print_str)
- [004000b0] 3c011001 lui $1, 4097 [sm2] ; 74: la $a0 sm2
- [004000b4] 34240101 ori $4, $1, 257 [sm2]
- [004000b8] 0000000c syscall ; 75: syscall
- [004000bc] 2108ffff addi $8, $8, -1 ; 77: addi $t0 $t0 -1
- [004000c0] 20a50004 addi $5, $5, 4 ; 78: addi $a1 $a1 4
- [004000c4] 1500fff7 bne $8, $0, -36 [ploop-0x004000c4]
- [004000c8] 3c011001 lui $1, 4097 ; 82: lw $31 saved_ret_pc
- [004000cc] 8c3f0000 lw $31, 0($1)
- [004000d0] 03e00008 jr $31 ; 83: jr $31 # Return from main
- [004000d4] 3c011001 lui $1, 4097 ; 25: sw $31 saved_ret_pc
- [004000d8] ac3f0104 sw $31, 260($1)
- [004000dc] 34020004 ori $2, $0, 4 ; 32: li $v0 4 # syscall 4 (print_str)
- [004000e0] 3c011001 lui $1, 4097 [lb_] ; 33: la $a0 lb_
- [004000e4] 342401a6 ori $4, $1, 422 [lb_]
- [004000e8] 0000000c syscall ; 34: syscall
- [004000ec] 21080004 addi $8, $8, 4 ; 38: addi $t0 4 # loop counter
- [004000f0] 3c011001 lui $1, 4097 [array1] ; 39: la $t1 array1
- [004000f4] 342900a4 ori $9, $1, 164 [array1]
- [004000f8] 3c011001 lui $1, 4097 [array2] ; 40: la $t2 array2
- [004000fc] 342a00b4 ori $10, $1, 180 [array2]
- [00400100] 3c011001 lui $1, 4097 [array3] ; 41: la $t3 array3
- [00400104] 342b00c4 ori $11, $1, 196 [array3]
- [00400108] c5200000 lwc1 $f0, 0($9) ; 43: lwc1 $f0 0($t1)
- [0040010c] c5410000 lwc1 $f1, 0($10) ; 44: lwc1 $f1 0($t2)
- [00400110] 00000000 nop ; 45: nop
- [00400114] 46000880 add.s $f2, $f1, $f0 ; 46: add.s $f2 $f1 $f0
- [00400118] 00000000 nop ; 47: nop
- [0040011c] e5620000 swc1 $f2, 0($11) ; 48: swc1 $f2 0($t3)
- [00400120] 2108ffff addi $8, $8, -1 ; 49: addi $t0 $t0 -1
- [00400124] 21290004 addi $9, $9, 4 ; 50: addi $t1 $t1 4
- [00400128] 214a0004 addi $10, $10, 4 ; 51: addi $t2 $t2 4
- [0040012c] 216b0004 addi $11, $11, 4 ; 52: addi $t3 $t3 4
- [00400130] 1500fff6 bne $8, $0, -40 [ladd-0x00400130]
- [00400134] 34020004 ori $2, $0, 4 ; 59: li $v0 4 # syscall 4 (print_str)
- [00400138] 3c011001 lui $1, 4097 [sm] ; 60: la $a0 sm
- [0040013c] 342401c4 ori $4, $1, 452 [sm]
- [00400140] 0000000c syscall ; 61: syscall
- [00400144] 3c011001 lui $1, 4097 [array3] ; 65: la $a1 array3
- [00400148] 342500c4 ori $5, $1, 196 [array3]
- [0040014c] 20080004 addi $8, $0, 4 ; 66: addi $t0 $0 4
- [00400150] c4ac0000 lwc1 $f12, 0($5) ; 67: lwc1 $f12 0($a1)
- [00400154] 34020002 ori $2, $0, 2 ; 68: li $v0 2 # syscall 2 (print_float)
- [00400158] 0000000c syscall ; 69: syscall
- [0040015c] 34020004 ori $2, $0, 4 ; 73: li $v0 4 # syscall 4 (print_str)
- [00400160] 3c011001 lui $1, 4097 [sm2] ; 74: la $a0 sm2
- [00400164] 342401d1 ori $4, $1, 465 [sm2]
- [00400168] 0000000c syscall ; 75: syscall
- [0040016c] 2108ffff addi $8, $8, -1 ; 77: addi $t0 $t0 -1
- [00400170] 20a50004 addi $5, $5, 4 ; 78: addi $a1 $a1 4
- [00400174] 1500fff7 bne $8, $0, -36 [ploop-0x00400174]
- [00400178] 3c011001 lui $1, 4097 ; 82: lw $31 saved_ret_pc
- [0040017c] 8c3f0104 lw $31, 260($1)
- [00400180] 03e00008 jr $31 ; 83: jr $31 # Return from main
- [00400184] 3c011001 lui $1, 4097 ; 25: sw $31 saved_ret_pc
- [00400188] ac3f01d4 sw $31, 468($1)
- [0040018c] 34020004 ori $2, $0, 4 ; 32: li $v0 4 # syscall 4 (print_str)
- [00400190] 3c011001 lui $1, 4097 [lb_] ; 33: la $a0 lb_
- [00400194] 34240276 ori $4, $1, 630 [lb_]
- [00400198] 0000000c syscall ; 34: syscall
- [0040019c] 21080004 addi $8, $8, 4 ; 38: addi $t0 4 # loop counter
- [004001a0] 3c011001 lui $1, 4097 [array1] ; 39: la $t1 array1
- [004001a4] 342900a4 ori $9, $1, 164 [array1]
- [004001a8] 3c011001 lui $1, 4097 [array2] ; 40: la $t2 array2
- [004001ac] 342a00b4 ori $10, $1, 180 [array2]
- [004001b0] 3c011001 lui $1, 4097 [array3] ; 41: la $t3 array3
- [004001b4] 342b00c4 ori $11, $1, 196 [array3]
- [004001b8] c5200000 lwc1 $f0, 0($9) ; 43: lwc1 $f0 0($t1)
- [004001bc] c5410000 lwc1 $f1, 0($10) ; 44: lwc1 $f1 0($t2)
- [004001c0] 00000000 nop ; 45: nop
- [004001c4] 46000880 add.s $f2, $f1, $f0 ; 46: add.s $f2 $f1 $f0
- [004001c8] 00000000 nop ; 47: nop
- [004001cc] e5620000 swc1 $f2, 0($11) ; 48: swc1 $f2 0($t3)
- [004001d0] 2108ffff addi $8, $8, -1 ; 49: addi $t0 $t0 -1
- [004001d4] 21290004 addi $9, $9, 4 ; 50: addi $t1 $t1 4
- [004001d8] 214a0004 addi $10, $10, 4 ; 51: addi $t2 $t2 4
- [004001dc] 216b0004 addi $11, $11, 4 ; 52: addi $t3 $t3 4
- [004001e0] 1500fff6 bne $8, $0, -40 [ladd-0x004001e0]
- [004001e4] 34020004 ori $2, $0, 4 ; 59: li $v0 4 # syscall 4 (print_str)
- [004001e8] 3c011001 lui $1, 4097 [sm] ; 60: la $a0 sm
- [004001ec] 34240294 ori $4, $1, 660 [sm]
- [004001f0] 0000000c syscall ; 61: syscall
- [004001f4] 3c011001 lui $1, 4097 [array3] ; 65: la $a1 array3
- [004001f8] 342500c4 ori $5, $1, 196 [array3]
- [004001fc] 20080004 addi $8, $0, 4 ; 66: addi $t0 $0 4
- [00400200] c4ac0000 lwc1 $f12, 0($5) ; 67: lwc1 $f12 0($a1)
- [00400204] 34020002 ori $2, $0, 2 ; 68: li $v0 2 # syscall 2 (print_float)
- [00400208] 0000000c syscall ; 69: syscall
- [0040020c] 34020004 ori $2, $0, 4 ; 73: li $v0 4 # syscall 4 (print_str)
- [00400210] 3c011001 lui $1, 4097 [sm2] ; 74: la $a0 sm2
- [00400214] 342402a1 ori $4, $1, 673 [sm2]
- [00400218] 0000000c syscall ; 75: syscall
- [0040021c] 2108ffff addi $8, $8, -1 ; 77: addi $t0 $t0 -1
- [00400220] 20a50004 addi $5, $5, 4 ; 78: addi $a1 $a1 4
- [00400224] 1500fff7 bne $8, $0, -36 [ploop-0x00400224]
- [00400228] 3c011001 lui $1, 4097 ; 82: lw $31 saved_ret_pc
- [0040022c] 8c3f01d4 lw $31, 468($1)
- [00400230] 03e00008 jr $31 ; 83: jr $31 # Return from main
- 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
Add Comment
Please, Sign In to add comment