LeonardCHoo

vecadd.s

Jun 27th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.91 KB | None | 0 0
  1. User Text Segment [00400000]..[00440000]
  2. [00400000] 8fa40000 lw $4, 0($29) ; 183: lw $a0 0($sp) # argc
  3. [00400004] 27a50004 addiu $5, $29, 4 ; 184: addiu $a1 $sp 4 # argv
  4. [00400008] 24a60004 addiu $6, $5, 4 ; 185: addiu $a2 $a1 4 # envp
  5. [0040000c] 00041080 sll $2, $4, 2 ; 186: sll $v0 $a0 2
  6. [00400010] 00c23021 addu $6, $6, $2 ; 187: addu $a2 $a2 $v0
  7. [00400014] 0c100009 jal 0x00400024 [main] ; 188: jal main
  8. [00400018] 00000000 nop ; 189: nop
  9. [0040001c] 3402000a ori $2, $0, 10 ; 191: li $v0 10
  10. [00400020] 0000000c syscall ; 192: syscall # syscall 10 (exit)
  11. [00400024] 3c011001 lui $1, 4097 ; 25: sw $31 saved_ret_pc
  12. [00400028] ac3f0000 sw $31, 0($1)
  13. [0040002c] 34020004 ori $2, $0, 4 ; 32: li $v0 4 # syscall 4 (print_str)
  14. [00400030] 3c011001 lui $1, 4097 [lb_] ; 33: la $a0 lb_
  15. [00400034] 342400d4 ori $4, $1, 212 [lb_]
  16. [00400038] 0000000c syscall ; 34: syscall
  17. [0040003c] 21080004 addi $8, $8, 4 ; 38: addi $t0 4 # loop counter
  18. [00400040] 3c011001 lui $1, 4097 [array1] ; 39: la $t1 array1
  19. [00400044] 342900a4 ori $9, $1, 164 [array1]
  20. [00400048] 3c011001 lui $1, 4097 [array2] ; 40: la $t2 array2
  21. [0040004c] 342a00b4 ori $10, $1, 180 [array2]
  22. [00400050] 3c011001 lui $1, 4097 [array3] ; 41: la $t3 array3
  23. [00400054] 342b00c4 ori $11, $1, 196 [array3]
  24. [00400058] c5200000 lwc1 $f0, 0($9) ; 43: lwc1 $f0 0($t1)
  25. [0040005c] c5410000 lwc1 $f1, 0($10) ; 44: lwc1 $f1 0($t2)
  26. [00400060] 00000000 nop ; 45: nop
  27. [00400064] 46000880 add.s $f2, $f1, $f0 ; 46: add.s $f2 $f1 $f0
  28. [00400068] 00000000 nop ; 47: nop
  29. [0040006c] e5620000 swc1 $f2, 0($11) ; 48: swc1 $f2 0($t3)
  30. [00400070] 2108ffff addi $8, $8, -1 ; 49: addi $t0 $t0 -1
  31. [00400074] 21290004 addi $9, $9, 4 ; 50: addi $t1 $t1 4
  32. [00400078] 214a0004 addi $10, $10, 4 ; 51: addi $t2 $t2 4
  33. [0040007c] 216b0004 addi $11, $11, 4 ; 52: addi $t3 $t3 4
  34. [00400080] 1500fff6 bne $8, $0, -40 [ladd-0x00400080]
  35. [00400084] 34020004 ori $2, $0, 4 ; 59: li $v0 4 # syscall 4 (print_str)
  36. [00400088] 3c011001 lui $1, 4097 [sm] ; 60: la $a0 sm
  37. [0040008c] 342400f4 ori $4, $1, 244 [sm]
  38. [00400090] 0000000c syscall ; 61: syscall
  39. [00400094] 3c011001 lui $1, 4097 [array3] ; 65: la $a1 array3
  40. [00400098] 342500c4 ori $5, $1, 196 [array3]
  41. [0040009c] 20080004 addi $8, $0, 4 ; 66: addi $t0 $0 4
  42. [004000a0] c4ac0000 lwc1 $f12, 0($5) ; 67: lwc1 $f12 0($a1)
  43. [004000a4] 34020002 ori $2, $0, 2 ; 68: li $v0 2 # syscall 2 (print_float)
  44. [004000a8] 0000000c syscall ; 69: syscall
  45. [004000ac] 34020004 ori $2, $0, 4 ; 73: li $v0 4 # syscall 4 (print_str)
  46. [004000b0] 3c011001 lui $1, 4097 [sm2] ; 74: la $a0 sm2
  47. [004000b4] 34240101 ori $4, $1, 257 [sm2]
  48. [004000b8] 0000000c syscall ; 75: syscall
  49. [004000bc] 2108ffff addi $8, $8, -1 ; 77: addi $t0 $t0 -1
  50. [004000c0] 20a50004 addi $5, $5, 4 ; 78: addi $a1 $a1 4
  51. [004000c4] 1500fff7 bne $8, $0, -36 [ploop-0x004000c4]
  52. [004000c8] 3c011001 lui $1, 4097 ; 82: lw $31 saved_ret_pc
  53. [004000cc] 8c3f0000 lw $31, 0($1)
  54. [004000d0] 03e00008 jr $31 ; 83: jr $31 # Return from main
  55. [004000d4] 3c011001 lui $1, 4097 ; 25: sw $31 saved_ret_pc
  56. [004000d8] ac3f0104 sw $31, 260($1)
  57. [004000dc] 34020004 ori $2, $0, 4 ; 32: li $v0 4 # syscall 4 (print_str)
  58. [004000e0] 3c011001 lui $1, 4097 [lb_] ; 33: la $a0 lb_
  59. [004000e4] 342401a6 ori $4, $1, 422 [lb_]
  60. [004000e8] 0000000c syscall ; 34: syscall
  61. [004000ec] 21080004 addi $8, $8, 4 ; 38: addi $t0 4 # loop counter
  62. [004000f0] 3c011001 lui $1, 4097 [array1] ; 39: la $t1 array1
  63. [004000f4] 342900a4 ori $9, $1, 164 [array1]
  64. [004000f8] 3c011001 lui $1, 4097 [array2] ; 40: la $t2 array2
  65. [004000fc] 342a00b4 ori $10, $1, 180 [array2]
  66. [00400100] 3c011001 lui $1, 4097 [array3] ; 41: la $t3 array3
  67. [00400104] 342b00c4 ori $11, $1, 196 [array3]
  68. [00400108] c5200000 lwc1 $f0, 0($9) ; 43: lwc1 $f0 0($t1)
  69. [0040010c] c5410000 lwc1 $f1, 0($10) ; 44: lwc1 $f1 0($t2)
  70. [00400110] 00000000 nop ; 45: nop
  71. [00400114] 46000880 add.s $f2, $f1, $f0 ; 46: add.s $f2 $f1 $f0
  72. [00400118] 00000000 nop ; 47: nop
  73. [0040011c] e5620000 swc1 $f2, 0($11) ; 48: swc1 $f2 0($t3)
  74. [00400120] 2108ffff addi $8, $8, -1 ; 49: addi $t0 $t0 -1
  75. [00400124] 21290004 addi $9, $9, 4 ; 50: addi $t1 $t1 4
  76. [00400128] 214a0004 addi $10, $10, 4 ; 51: addi $t2 $t2 4
  77. [0040012c] 216b0004 addi $11, $11, 4 ; 52: addi $t3 $t3 4
  78. [00400130] 1500fff6 bne $8, $0, -40 [ladd-0x00400130]
  79. [00400134] 34020004 ori $2, $0, 4 ; 59: li $v0 4 # syscall 4 (print_str)
  80. [00400138] 3c011001 lui $1, 4097 [sm] ; 60: la $a0 sm
  81. [0040013c] 342401c4 ori $4, $1, 452 [sm]
  82. [00400140] 0000000c syscall ; 61: syscall
  83. [00400144] 3c011001 lui $1, 4097 [array3] ; 65: la $a1 array3
  84. [00400148] 342500c4 ori $5, $1, 196 [array3]
  85. [0040014c] 20080004 addi $8, $0, 4 ; 66: addi $t0 $0 4
  86. [00400150] c4ac0000 lwc1 $f12, 0($5) ; 67: lwc1 $f12 0($a1)
  87. [00400154] 34020002 ori $2, $0, 2 ; 68: li $v0 2 # syscall 2 (print_float)
  88. [00400158] 0000000c syscall ; 69: syscall
  89. [0040015c] 34020004 ori $2, $0, 4 ; 73: li $v0 4 # syscall 4 (print_str)
  90. [00400160] 3c011001 lui $1, 4097 [sm2] ; 74: la $a0 sm2
  91. [00400164] 342401d1 ori $4, $1, 465 [sm2]
  92. [00400168] 0000000c syscall ; 75: syscall
  93. [0040016c] 2108ffff addi $8, $8, -1 ; 77: addi $t0 $t0 -1
  94. [00400170] 20a50004 addi $5, $5, 4 ; 78: addi $a1 $a1 4
  95. [00400174] 1500fff7 bne $8, $0, -36 [ploop-0x00400174]
  96. [00400178] 3c011001 lui $1, 4097 ; 82: lw $31 saved_ret_pc
  97. [0040017c] 8c3f0104 lw $31, 260($1)
  98. [00400180] 03e00008 jr $31 ; 83: jr $31 # Return from main
  99. [00400184] 3c011001 lui $1, 4097 ; 25: sw $31 saved_ret_pc
  100. [00400188] ac3f01d4 sw $31, 468($1)
  101. [0040018c] 34020004 ori $2, $0, 4 ; 32: li $v0 4 # syscall 4 (print_str)
  102. [00400190] 3c011001 lui $1, 4097 [lb_] ; 33: la $a0 lb_
  103. [00400194] 34240276 ori $4, $1, 630 [lb_]
  104. [00400198] 0000000c syscall ; 34: syscall
  105. [0040019c] 21080004 addi $8, $8, 4 ; 38: addi $t0 4 # loop counter
  106. [004001a0] 3c011001 lui $1, 4097 [array1] ; 39: la $t1 array1
  107. [004001a4] 342900a4 ori $9, $1, 164 [array1]
  108. [004001a8] 3c011001 lui $1, 4097 [array2] ; 40: la $t2 array2
  109. [004001ac] 342a00b4 ori $10, $1, 180 [array2]
  110. [004001b0] 3c011001 lui $1, 4097 [array3] ; 41: la $t3 array3
  111. [004001b4] 342b00c4 ori $11, $1, 196 [array3]
  112. [004001b8] c5200000 lwc1 $f0, 0($9) ; 43: lwc1 $f0 0($t1)
  113. [004001bc] c5410000 lwc1 $f1, 0($10) ; 44: lwc1 $f1 0($t2)
  114. [004001c0] 00000000 nop ; 45: nop
  115. [004001c4] 46000880 add.s $f2, $f1, $f0 ; 46: add.s $f2 $f1 $f0
  116. [004001c8] 00000000 nop ; 47: nop
  117. [004001cc] e5620000 swc1 $f2, 0($11) ; 48: swc1 $f2 0($t3)
  118. [004001d0] 2108ffff addi $8, $8, -1 ; 49: addi $t0 $t0 -1
  119. [004001d4] 21290004 addi $9, $9, 4 ; 50: addi $t1 $t1 4
  120. [004001d8] 214a0004 addi $10, $10, 4 ; 51: addi $t2 $t2 4
  121. [004001dc] 216b0004 addi $11, $11, 4 ; 52: addi $t3 $t3 4
  122. [004001e0] 1500fff6 bne $8, $0, -40 [ladd-0x004001e0]
  123. [004001e4] 34020004 ori $2, $0, 4 ; 59: li $v0 4 # syscall 4 (print_str)
  124. [004001e8] 3c011001 lui $1, 4097 [sm] ; 60: la $a0 sm
  125. [004001ec] 34240294 ori $4, $1, 660 [sm]
  126. [004001f0] 0000000c syscall ; 61: syscall
  127. [004001f4] 3c011001 lui $1, 4097 [array3] ; 65: la $a1 array3
  128. [004001f8] 342500c4 ori $5, $1, 196 [array3]
  129. [004001fc] 20080004 addi $8, $0, 4 ; 66: addi $t0 $0 4
  130. [00400200] c4ac0000 lwc1 $f12, 0($5) ; 67: lwc1 $f12 0($a1)
  131. [00400204] 34020002 ori $2, $0, 2 ; 68: li $v0 2 # syscall 2 (print_float)
  132. [00400208] 0000000c syscall ; 69: syscall
  133. [0040020c] 34020004 ori $2, $0, 4 ; 73: li $v0 4 # syscall 4 (print_str)
  134. [00400210] 3c011001 lui $1, 4097 [sm2] ; 74: la $a0 sm2
  135. [00400214] 342402a1 ori $4, $1, 673 [sm2]
  136. [00400218] 0000000c syscall ; 75: syscall
  137. [0040021c] 2108ffff addi $8, $8, -1 ; 77: addi $t0 $t0 -1
  138. [00400220] 20a50004 addi $5, $5, 4 ; 78: addi $a1 $a1 4
  139. [00400224] 1500fff7 bne $8, $0, -36 [ploop-0x00400224]
  140. [00400228] 3c011001 lui $1, 4097 ; 82: lw $31 saved_ret_pc
  141. [0040022c] 8c3f01d4 lw $31, 468($1)
  142. [00400230] 03e00008 jr $31 ; 83: jr $31 # Return from main
  143.  
  144. Kernel Text Segment [80000000]..[80010000]
  145. [80000180] 0001d821 addu $27, $0, $1 ; 90: move $k1 $at # Save $at
  146. [80000184] 3c019000 lui $1, -28672 ; 92: sw $v0 s1 # Not re-entrant and we can't trust $sp
  147. [80000188] ac220200 sw $2, 512($1)
  148. [8000018c] 3c019000 lui $1, -28672 ; 93: sw $a0 s2 # But we need to use these registers
  149. [80000190] ac240204 sw $4, 516($1)
  150. [80000194] 401a6800 mfc0 $26, $13 ; 95: mfc0 $k0 $13 # Cause register
  151. [80000198] 001a2082 srl $4, $26, 2 ; 96: srl $a0 $k0 2 # Extract ExcCode Field
  152. [8000019c] 3084001f andi $4, $4, 31 ; 97: andi $a0 $a0 0x1f
  153. [800001a0] 34020004 ori $2, $0, 4 ; 101: li $v0 4 # syscall 4 (print_str)
  154. [800001a4] 3c049000 lui $4, -28672 [__m1_] ; 102: la $a0 __m1_
  155. [800001a8] 0000000c syscall ; 103: syscall
  156. [800001ac] 34020001 ori $2, $0, 1 ; 105: li $v0 1 # syscall 1 (print_int)
  157. [800001b0] 001a2082 srl $4, $26, 2 ; 106: srl $a0 $k0 2 # Extract ExcCode Field
  158. [800001b4] 3084001f andi $4, $4, 31 ; 107: andi $a0 $a0 0x1f
  159. [800001b8] 0000000c syscall ; 108: syscall
  160. [800001bc] 34020004 ori $2, $0, 4 ; 110: li $v0 4 # syscall 4 (print_str)
  161. [800001c0] 3344003c andi $4, $26, 60 ; 111: andi $a0 $k0 0x3c
  162. [800001c4] 3c019000 lui $1, -28672 ; 112: lw $a0 __excp($a0)
  163. [800001c8] 00240821 addu $1, $1, $4
  164. [800001cc] 8c240180 lw $4, 384($1)
  165. [800001d0] 00000000 nop ; 113: nop
  166. [800001d4] 0000000c syscall ; 114: syscall
  167. [800001d8] 34010018 ori $1, $0, 24 ; 116: bne $k0 0x18 ok_pc # Bad PC exception requires special checks
  168. [800001dc] 143a0008 bne $1, $26, 32 [ok_pc-0x800001dc]
  169. [800001e0] 00000000 nop ; 117: nop
  170. [800001e4] 40047000 mfc0 $4, $14 ; 119: mfc0 $a0 $14 # EPC
  171. [800001e8] 30840003 andi $4, $4, 3 ; 120: andi $a0 $a0 0x3 # Is EPC word-aligned?
  172. [800001ec] 10040004 beq $0, $4, 16 [ok_pc-0x800001ec]
  173. [800001f0] 00000000 nop ; 122: nop
  174. [800001f4] 3402000a ori $2, $0, 10 ; 124: li $v0 10 # Exit on really bad PC
  175. [800001f8] 0000000c syscall ; 125: syscall
  176. [800001fc] 34020004 ori $2, $0, 4 ; 128: li $v0 4 # syscall 4 (print_str)
  177. [80000200] 3c019000 lui $1, -28672 [__m2_] ; 129: la $a0 __m2_
  178. [80000204] 3424000d ori $4, $1, 13 [__m2_]
  179. [80000208] 0000000c syscall ; 130: syscall
  180. [8000020c] 001a2082 srl $4, $26, 2 ; 132: srl $a0 $k0 2 # Extract ExcCode Field
  181. [80000210] 3084001f andi $4, $4, 31 ; 133: andi $a0 $a0 0x1f
  182. [80000214] 14040002 bne $0, $4, 8 [ret-0x80000214]; 134: bne $a0 0 ret # 0 means exception was an interrupt
  183. [80000218] 00000000 nop ; 135: nop
  184. [8000021c] 401a7000 mfc0 $26, $14 ; 145: mfc0 $k0 $14 # Bump EPC register
  185. [80000220] 275a0004 addiu $26, $26, 4 ; 146: addiu $k0 $k0 4 # Skip faulting instruction
  186. [80000224] 409a7000 mtc0 $26, $14 ; 148: mtc0 $k0 $14
  187. [80000228] 3c019000 lui $1, -28672 ; 153: lw $v0 s1 # Restore other registers
  188. [8000022c] 8c220200 lw $2, 512($1)
  189. [80000230] 3c019000 lui $1, -28672 ; 154: lw $a0 s2
  190. [80000234] 8c240204 lw $4, 516($1)
  191. [80000238] 001b0821 addu $1, $0, $27 ; 157: move $at $k1 # Restore $at
  192. [8000023c] 40806800 mtc0 $0, $13 ; 160: mtc0 $0 $13 # Clear Cause register
  193. [80000240] 401a6000 mfc0 $26, $12 ; 162: mfc0 $k0 $12 # Set Status register
  194. [80000244] 375a0001 ori $26, $26, 1 ; 163: ori $k0 0x1 # Interrupts enabled
  195. [80000248] 409a6000 mtc0 $26, $12 ; 164: mtc0 $k0 $12
  196. [8000024c] 42000018 eret ; 167: eret
Add Comment
Please, Sign In to add comment