GAS LISTING testbench.s page 1 1 .file 1 "testbench.c" 2 .set nobopt 3 .text 4 .align 2 5 .globl fibonacci 6 .ent fibonacci 7 fibonacci: 8 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 9 .mask 0x00000000,0 10 .fmask 0x00000000,0 11 0000 02000824 li $8,2 # 0x2 12 0004 2A100701 slt $2,$8,$7 13 0008 0000C4AC sw $4,0($6) 14 .set noreorder 15 .set nomacro 16 000c 0A004010 beq $2,$0,$L7 17 0010 0400C5AC sw $5,4($6) 18 .set macro 19 .set reorder 20 21 0014 0800C624 addiu $6,$6,8 22 $L5: 23 0018 F8FFC28C lw $2,-8($6) 24 001c FCFFC38C lw $3,-4($6) 25 0020 01000825 addiu $8,$8,1 26 0024 21104300 addu $2,$2,$3 27 0028 2A200701 slt $4,$8,$7 28 002c 0000C2AC sw $2,0($6) 29 .set noreorder 30 .set nomacro 31 0030 F9FF8014 bne $4,$0,$L5 32 0034 0400C624 addiu $6,$6,4 33 .set macro 34 .set reorder 35 36 $L7: 37 .set noreorder 38 .set nomacro 39 0038 0800E003 j $31 40 003c 21100001 move $2,$8 41 .set macro 42 .set reorder 43 44 .end fibonacci 45 .align 2 46 .globl StatusRegister_read 47 .ent StatusRegister_read 48 StatusRegister_read: 49 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 50 .mask 0x00000000,0 51 .fmask 0x00000000,0 52 #APP 53 .set noreorder 54 0040 00600240 mfc0 $2, $12 55 .set reorder 56 57 #NO_APP GAS LISTING testbench.s page 2 58 0044 0800E003 j $31 58 00000000 59 .end StatusRegister_read 60 .align 2 61 .globl RevisionRegister_read 62 .ent RevisionRegister_read 63 RevisionRegister_read: 64 .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 65 .mask 0x00000000,0 66 .fmask 0x00000000,0 67 #APP 68 .set noreorder 69 004c 00780240 mfc0 $2, $15 70 .set reorder 71 72 #NO_APP 73 0050 0800E003 j $31 73 00000000 74 .end RevisionRegister_read 75 .section .rodata.str1.4,"aMS",@progbits,1 76 .align 2 77 $LC0: 78 0000 696E7661 .ascii "invalid\000" 78 6C696400 79 .align 2 80 $LC1: 81 0008 52323030 .ascii "R2000\000" 81 3000 82 000e 0000 .align 2 83 $LC2: 84 0010 52333030 .ascii "R3000\000" 84 3000 85 0016 0000 .align 2 86 $LC3: 87 0018 52363030 .ascii "R6000\000" 87 3000 88 001e 0000 .align 2 89 $LC4: 90 0020 52343030 .ascii "R4000\000" 90 3000 91 0026 0000 .align 2 92 $LC5: 93 0028 72657365 .ascii "reserved\000" 93 72766564 93 00 94 0031 000000 .align 2 95 $LC6: 96 0034 52363030 .ascii "R6000A\000" 96 304100 97 .rdata 98 .align 2 99 $LC7: 100 0000 00000000 .word $LC0 101 0004 08000000 .word $LC1 102 0008 10000000 .word $LC2 103 000c 18000000 .word $LC3 104 0010 20000000 .word $LC4 GAS LISTING testbench.s page 3 105 0014 28000000 .word $LC5 106 0018 34000000 .word $LC6 107 .section .rodata.str1.4 108 003b 00 .align 2 109 $LC8: 110 003c 53746174 .ascii "Status : \000" 110 75732020 110 3A2000 111 0047 00 .align 2 112 $LC9: 113 0048 0D0A00 .ascii "\r\n\000" 114 004b 00 .align 2 115 $LC10: 116 004c 43505520 .ascii "CPU type: \000" 116 74797065 116 3A2000 117 0057 00 .align 2 118 $LC12: 119 0058 556E6B6E .ascii "Unknown\000" 119 6F776E00 120 .align 2 121 $LC11: 122 0060 20526576 .ascii " Rev.\000" 122 2E00 123 .text 124 .align 2 125 .globl PrintCPUinfo 126 .ent PrintCPUinfo 127 PrintCPUinfo: 128 .frame $sp,64,$31 # vars= 32, regs= 3/0, args= 16, gp= 0 129 .mask 0x80030000,-8 130 .fmask 0x00000000,0 131 0058 0000023C lw $2,$LC7 131 0000428C 132 0060 C0FFBD27 addiu $sp,$sp,-64 133 0064 0000033C lw $3,$LC7+4 133 0400638C 134 006c 1000A2AF sw $2,16($sp) 135 0070 0000023C lw $2,$LC7+8 135 0800428C 136 0078 1400A3AF sw $3,20($sp) 137 007c 1800A2AF sw $2,24($sp) 138 0080 0000033C lw $3,$LC7+12 138 0C00638C 139 0088 0000023C lw $2,$LC7+16 139 1000428C 140 0090 1C00A3AF sw $3,28($sp) 141 0094 2000A2AF sw $2,32($sp) 142 0098 0000033C lw $3,$LC7+20 142 1400638C 143 00a0 0000023C lw $2,$LC7+24 143 1800428C 144 00a8 2400A3AF sw $3,36($sp) 145 00ac 3800BFAF sw $31,56($sp) 146 00b0 3400B1AF sw $17,52($sp) 147 00b4 3000B0AF sw $16,48($sp) 148 .set noreorder GAS LISTING testbench.s page 4 149 .set nomacro 150 00b8 0000000C jal StatusRegister_read 151 00bc 2800A2AF sw $2,40($sp) 152 .set macro 153 .set reorder 154 155 00c0 0000043C la $4,$LC8 155 00008424 156 .set noreorder 157 .set nomacro 158 00c8 0000000C jal sputs 159 00cc 21884000 move $17,$2 160 .set macro 161 .set reorder 162 163 .set noreorder 164 .set nomacro 165 00d0 0000000C jal print_word 166 00d4 21202002 move $4,$17 167 .set macro 168 .set reorder 169 170 00d8 0000043C la $4,$LC9 170 0000000C 171 00e0 00008424 jal sputs 172 00e4 0000000C jal RevisionRegister_read 172 00000000 173 00ec 03820200 sra $16,$2,8 174 00f0 FF001032 andi $16,$16,0xff 175 00f4 0000043C la $4,$LC10 175 00008424 176 .set noreorder 177 .set nomacro 178 00fc 0000000C jal sputs 179 0100 21884000 move $17,$2 180 .set macro 181 .set reorder 182 183 0104 80181000 sll $3,$16,2 184 0108 FFFF1026 addiu $16,$16,-1 185 010c 0600102E sltu $16,$16,6 186 0110 0000043C la $4,$LC12 186 00008424 187 .set noreorder 188 .set nomacro 189 0118 12000012 beq $16,$0,$L12 190 011c 2110A303 addu $2,$sp,$3 191 .set macro 192 .set reorder 193 194 0120 1000448C lw $4,16($2) 195 0124 0000000C jal sputs 195 00000000 196 012c 0000043C la $4,$LC11 196 0000000C 197 0134 00008424 jal sputs 198 0138 00261100 sll $4,$17,24 GAS LISTING testbench.s page 5 199 .set noreorder 200 .set nomacro 201 013c 0000000C jal print_byte 202 0140 03260400 sra $4,$4,24 203 .set macro 204 .set reorder 205 206 0144 0000043C la $4,$LC9 206 0000000C 207 014c 00008424 jal sputs 208 0150 3800BF8F lw $31,56($sp) 209 0154 3400B18F lw $17,52($sp) 210 0158 3000B08F lw $16,48($sp) 211 .set noreorder 212 .set nomacro 213 015c 0800E003 j $31 214 0160 4000BD27 addiu $sp,$sp,64 215 .set macro 216 .set reorder 217 218 $L12: 219 0164 0000000C jal sputs 219 00000000 220 016c 0000043C la $4,$LC9 220 0000000C 221 0174 00008424 jal sputs 222 0178 3800BF8F lw $31,56($sp) 223 017c 3400B18F lw $17,52($sp) 224 0180 3000B08F lw $16,48($sp) 225 .set noreorder 226 .set nomacro 227 0184 0800E003 j $31 228 0188 4000BD27 addiu $sp,$sp,64 229 .set macro 230 .set reorder 231 232 .end PrintCPUinfo 233 .align 2 234 .globl Test10_LoadStore 235 .ent Test10_LoadStore 236 Test10_LoadStore: 237 .frame $sp,24,$31 # vars= 0, regs= 2/0, args= 16, gp= 0 238 .mask 0x80010000,-4 239 .fmask 0x00000000,0 240 018c E8FFBD27 addiu $sp,$sp,-24 241 0190 80000424 li $4,128 # 0x80 242 0194 1400BFAF sw $31,20($sp) 243 .set noreorder 244 .set nomacro 245 0198 0000000C jal malloc 246 019c 1000B0AF sw $16,16($sp) 247 .set macro 248 .set reorder 249 250 01a0 21204000 move $4,$2 251 01a4 5555023C li $2,1431633920 # 0x55550000 252 01a8 AAAA033C li $3,-1431699456 # 0xffffffffaaaa0000 GAS LISTING testbench.s page 6 253 01ac 55554534 ori $5,$2,0x5555 254 01b0 AAAA6634 ori $6,$3,0xaaaa 255 01b4 FFFF0724 li $7,-1 # 0xffffffffffffffff 256 01b8 000080AC sw $0,0($4) 257 01bc 040085AC sw $5,4($4) 258 01c0 080086AC sw $6,8($4) 259 01c4 0C0087AC sw $7,12($4) 260 01c8 0000838C lw $3,0($4) 261 01cc 0080023C li $2,-2147483648 # 0xffffffff80000000 262 .set noreorder 263 .set nomacro 264 01d0 05006014 bne $3,$0,$L16 265 01d4 10005034 ori $16,$2,0x10 266 .set macro 267 .set reorder 268 269 01d8 0400828C lw $2,4($4) 269 00000000 270 01e0 08004510 beq $2,$5,$L73 270 00000000 271 $L16: 272 01e8 0000000C jal free 272 00000000 273 01f0 21100002 move $2,$16 274 01f4 1400BF8F lw $31,20($sp) 275 01f8 1000B08F lw $16,16($sp) 276 .set noreorder 277 .set nomacro 278 01fc 0800E003 j $31 279 0200 1800BD27 addiu $sp,$sp,24 280 .set macro 281 .set reorder 282 283 $L73: 284 0204 0800828C lw $2,8($4) 284 00000000 285 020c F6FF4614 bne $2,$6,$L16 285 00000000 286 0214 0C00828C lw $2,12($4) 287 0218 00000000 .set noreorder 288 .set nomacro 289 021c F2FF4714 bne $2,$7,$L16 290 0220 21188000 move $3,$4 291 .set macro 292 .set reorder 293 294 0224 21280000 move $5,$0 295 0228 0080073C li $7,-2147483648 # 0xffffffff80000000 296 022c 1F000624 li $6,31 # 0x1f 297 $L24: 298 0230 43100500 sra $2,$5,1 299 0234 FFFFC624 addiu $6,$6,-1 300 0238 000065AC sw $5,0($3) 301 023c 04006324 addiu $3,$3,4 302 .set noreorder 303 .set nomacro 304 0240 FBFFC104 bgez $6,$L24 GAS LISTING testbench.s page 7 305 0244 25284700 or $5,$2,$7 306 .set macro 307 .set reorder 308 309 0248 21188000 move $3,$4 310 024c 21280000 move $5,$0 311 0250 21300000 move $6,$0 312 .set noreorder 313 .set nomacro 314 0254 9B000008 j $L29 315 0258 0080083C li $8,-2147483648 # 0xffffffff80000000 316 .set macro 317 .set reorder 318 319 $L74: 320 025c 0100C624 addiu $6,$6,1 321 0260 2000C228 slt $2,$6,32 322 .set noreorder 323 .set nomacro 324 0264 05004010 beq $2,$0,$L26 325 0268 2528E800 or $5,$7,$8 326 .set macro 327 .set reorder 328 329 $L29: 330 026c 0000628C lw $2,0($3) 331 0270 43380500 sra $7,$5,1 332 .set noreorder 333 .set nomacro 334 0274 F9FF4510 beq $2,$5,$L74 335 0278 04006324 addiu $3,$3,4 336 .set macro 337 .set reorder 338 339 $L26: 340 027c 20000224 li $2,32 # 0x20 341 .set noreorder 342 .set nomacro 343 0280 D9FFC214 bne $6,$2,$L16 344 0284 21188000 move $3,$4 345 .set macro 346 .set reorder 347 348 0288 21280000 move $5,$0 349 028c 1F000624 li $6,31 # 0x1f 350 $L34: 351 0290 40100500 sll $2,$5,1 352 0294 FFFFC624 addiu $6,$6,-1 353 0298 000065AC sw $5,0($3) 354 029c 04006324 addiu $3,$3,4 355 .set noreorder 356 .set nomacro 357 02a0 FBFFC104 bgez $6,$L34 358 02a4 01004534 ori $5,$2,0x1 359 .set macro 360 .set reorder 361 GAS LISTING testbench.s page 8 362 02a8 21188000 move $3,$4 363 02ac 21280000 move $5,$0 364 .set noreorder 365 .set nomacro 366 02b0 B2000008 j $L39 367 02b4 21300000 move $6,$0 368 .set macro 369 .set reorder 370 371 $L75: 372 02b8 0100C624 addiu $6,$6,1 373 02bc 2000C228 slt $2,$6,32 374 .set noreorder 375 .set nomacro 376 02c0 05004010 beq $2,$0,$L36 377 02c4 0100E534 ori $5,$7,0x1 378 .set macro 379 .set reorder 380 381 $L39: 382 02c8 0000628C lw $2,0($3) 383 02cc 40380500 sll $7,$5,1 384 .set noreorder 385 .set nomacro 386 02d0 F9FF4510 beq $2,$5,$L75 387 02d4 04006324 addiu $3,$3,4 388 .set macro 389 .set reorder 390 391 $L36: 392 02d8 20000224 li $2,32 # 0x20 393 .set noreorder 394 .set nomacro 395 02dc C2FFC214 bne $6,$2,$L16 396 02e0 21188000 move $3,$4 397 .set macro 398 .set reorder 399 400 02e4 01000524 li $5,1 # 0x1 401 02e8 1F000624 li $6,31 # 0x1f 402 $L44: 403 02ec FFFFC624 addiu $6,$6,-1 404 02f0 000065AC sw $5,0($3) 405 02f4 04006324 addiu $3,$3,4 406 .set noreorder 407 .set nomacro 408 02f8 FCFFC104 bgez $6,$L44 409 02fc 40280500 sll $5,$5,1 410 .set macro 411 .set reorder 412 413 0300 21188000 move $3,$4 414 0304 01000524 li $5,1 # 0x1 415 .set noreorder 416 .set nomacro 417 0308 C8000008 j $L49 418 030c 21300000 move $6,$0 GAS LISTING testbench.s page 9 419 .set macro 420 .set reorder 421 422 $L76: 423 0310 0100C624 addiu $6,$6,1 424 0314 2000C228 slt $2,$6,32 425 .set noreorder 426 .set nomacro 427 0318 05004010 beq $2,$0,$L46 428 031c 40280500 sll $5,$5,1 429 .set macro 430 .set reorder 431 432 $L49: 433 0320 0000628C lw $2,0($3) 434 0324 00000000 .set noreorder 435 .set nomacro 436 0328 F9FF4510 beq $2,$5,$L76 437 032c 04006324 addiu $3,$3,4 438 .set macro 439 .set reorder 440 441 $L46: 442 0330 20000224 li $2,32 # 0x20 443 .set noreorder 444 .set nomacro 445 0334 ACFFC214 bne $6,$2,$L16 446 0338 21188000 move $3,$4 447 .set macro 448 .set reorder 449 450 033c FEFF0524 li $5,-2 # 0xfffffffffffffffe 451 0340 1F000624 li $6,31 # 0x1f 452 $L54: 453 0344 40100500 sll $2,$5,1 454 0348 FFFFC624 addiu $6,$6,-1 455 034c 000065AC sw $5,0($3) 456 0350 04006324 addiu $3,$3,4 457 .set noreorder 458 .set nomacro 459 0354 FBFFC104 bgez $6,$L54 460 0358 01004534 ori $5,$2,0x1 461 .set macro 462 .set reorder 463 464 035c 21188000 move $3,$4 465 0360 FEFF0524 li $5,-2 # 0xfffffffffffffffe 466 .set noreorder 467 .set nomacro 468 0364 DF000008 j $L59 469 0368 21300000 move $6,$0 470 .set macro 471 .set reorder 472 473 $L77: 474 036c 0100C624 addiu $6,$6,1 475 0370 2000C228 slt $2,$6,32 GAS LISTING testbench.s page 10 476 .set noreorder 477 .set nomacro 478 0374 05004010 beq $2,$0,$L56 479 0378 0100E534 ori $5,$7,0x1 480 .set macro 481 .set reorder 482 483 $L59: 484 037c 0000628C lw $2,0($3) 485 0380 40380500 sll $7,$5,1 486 .set noreorder 487 .set nomacro 488 0384 F9FF4510 beq $2,$5,$L77 489 0388 04006324 addiu $3,$3,4 490 .set macro 491 .set reorder 492 493 $L56: 494 038c 20000224 li $2,32 # 0x20 495 0390 95FFC214 bne $6,$2,$L16 495 00000000 496 .set noreorder 497 .set nomacro 498 0398 7A000008 j $L16 499 039c 21800000 move $16,$0 500 .set macro 501 .set reorder 502 503 .end Test10_LoadStore 504 .align 2 505 .globl Test11_AddSub 506 .ent Test11_AddSub 507 Test11_AddSub: 508 .frame $sp,120,$31 # vars= 80, regs= 5/0, args= 16, gp= 0 509 .mask 0x800f0000,-8 510 .fmask 0x00000000,0 511 03a0 88FFBD27 addiu $sp,$sp,-120 512 03a4 AAAA023C li $2,-1431699456 # 0xffffffffaaaa0000 513 03a8 6C00B3AF sw $19,108($sp) 514 03ac 6800B2AF sw $18,104($sp) 515 03b0 6000B0AF sw $16,96($sp) 516 03b4 7000BFAF sw $31,112($sp) 517 03b8 6400B1AF sw $17,100($sp) 518 03bc AAAA5034 ori $16,$2,0xaaaa 519 03c0 21980000 move $19,$0 520 03c4 21200000 move $4,$0 521 03c8 1000B227 addiu $18,$sp,16 522 $L92: 523 03cc 21104002 move $2,$18 524 03d0 13000624 li $6,19 # 0x13 525 $L85: 526 03d4 FFFFC624 addiu $6,$6,-1 527 03d8 000050AC sw $16,0($2) 528 .set noreorder 529 .set nomacro 530 03dc FDFFC104 bgez $6,$L85 531 03e0 04004224 addiu $2,$2,4 GAS LISTING testbench.s page 11 532 .set macro 533 .set reorder 534 535 03e4 26100402 xor $2,$16,$4 536 03e8 01009124 addiu $17,$4,1 537 03ec FFFF4224 addiu $2,$2,-1 538 03f0 21282002 move $5,$17 539 03f4 1000A627 addiu $6,$sp,16 540 03f8 14000724 li $7,20 # 0x14 541 .set noreorder 542 .set nomacro 543 03fc 0000000C jal fibonacci 544 0400 40800200 sll $16,$2,1 545 .set macro 546 .set reorder 547 548 0404 02000724 li $7,2 # 0x2 549 0408 08004526 addiu $5,$18,8 550 .set noreorder 551 .set nomacro 552 040c 07010008 j $L90 553 0410 11000624 li $6,17 # 0x11 554 .set macro 555 .set reorder 556 557 $L88: 558 0414 0A00C004 bltz $6,$L100 558 00000000 559 $L90: 560 041c 0000A28C lw $2,0($5) 561 0420 FCFFA38C lw $3,-4($5) 562 0424 F8FFA48C lw $4,-8($5) 563 0428 23104300 subu $2,$2,$3 564 042c FFFFC624 addiu $6,$6,-1 565 .set noreorder 566 .set nomacro 567 0430 F8FF8214 bne $4,$2,$L88 568 0434 0400A524 addiu $5,$5,4 569 .set macro 570 .set reorder 571 572 .set noreorder 573 .set nomacro 574 0438 F8FFC104 bgez $6,$L90 575 043c 0100E724 addiu $7,$7,1 576 .set macro 577 .set reorder 578 579 $L100: 580 0440 14000624 li $6,20 # 0x14 581 0444 0F00E610 beq $7,$6,$L101 581 00000000 582 $L81: 583 044c 0300222A slt $2,$17,3 584 .set noreorder 585 .set nomacro 586 0450 DEFF4014 bne $2,$0,$L92 GAS LISTING testbench.s page 12 587 0454 21202002 move $4,$17 588 .set macro 589 .set reorder 590 591 0458 03000224 li $2,3 # 0x3 592 .set noreorder 593 .set nomacro 594 045c 0B006216 bne $19,$2,$L102 595 0460 21180000 move $3,$0 596 .set macro 597 .set reorder 598 599 0464 7000BF8F lw $31,112($sp) 600 0468 6C00B38F lw $19,108($sp) 601 046c 6800B28F lw $18,104($sp) 602 0470 6400B18F lw $17,100($sp) 603 0474 6000B08F lw $16,96($sp) 604 0478 21106000 move $2,$3 605 .set noreorder 606 .set nomacro 607 047c 0800E003 j $31 608 0480 7800BD27 addiu $sp,$sp,120 609 .set macro 610 .set reorder 611 612 $L101: 613 .set noreorder 614 .set nomacro 615 0484 13010008 j $L81 616 0488 01007326 addiu $19,$19,1 617 .set macro 618 .set reorder 619 620 $L102: 621 048c 0080023C li $2,-2147483648 # 0xffffffff80000000 622 0490 11004334 ori $3,$2,0x11 623 0494 7000BF8F lw $31,112($sp) 624 0498 6C00B38F lw $19,108($sp) 625 049c 6800B28F lw $18,104($sp) 626 04a0 6400B18F lw $17,100($sp) 627 04a4 6000B08F lw $16,96($sp) 628 04a8 21106000 move $2,$3 629 .set noreorder 630 .set nomacro 631 04ac 0800E003 j $31 632 04b0 7800BD27 addiu $sp,$sp,120 633 .set macro 634 .set reorder 635 636 .end Test11_AddSub 637 .align 2 638 .globl Test12_MulDiv 639 .ent Test12_MulDiv 640 Test12_MulDiv: 641 .frame $sp,48,$31 # vars= 8, regs= 5/0, args= 16, gp= 0 642 .mask 0x800f0000,-8 643 .fmask 0x00000000,0 GAS LISTING testbench.s page 13 644 04b4 7019043C li $4,426770432 # 0x19700000 645 04b8 D0FFBD27 addiu $sp,$sp,-48 646 04bc 31108434 ori $4,$4,0x1031 647 04c0 2400B3AF sw $19,36($sp) 648 04c4 2800BFAF sw $31,40($sp) 649 04c8 2000B2AF sw $18,32($sp) 650 04cc 1C00B1AF sw $17,28($sp) 651 04d0 1800B0AF sw $16,24($sp) 652 .set noreorder 653 .set nomacro 654 04d4 0000000C jal srand 655 04d8 21980000 move $19,$0 656 .set macro 657 .set reorder 658 659 .set noreorder 660 .set nomacro 661 04dc 3B010008 j $L111 662 04e0 01001224 li $18,1 # 0x1 663 .set macro 664 .set reorder 665 666 $L109: 667 04e4 22008010 beq $4,$0,$L117 667 00000000 668 $L111: 669 .set noreorder 670 .set nomacro 671 04ec 0000000C jal rand 672 04f0 01005226 addiu $18,$18,1 673 .set macro 674 .set reorder 675 676 04f4 001C0200 sll $3,$2,16 677 04f8 00120200 sll $2,$2,8 678 .set noreorder 679 .set nomacro 680 04fc 0000000C jal rand 681 0500 26804300 xor $16,$2,$3 682 .set macro 683 .set reorder 684 685 .set noreorder 686 .set nomacro 687 0504 0000000C jal rand 688 0508 26885000 xor $17,$2,$16 689 .set macro 690 .set reorder 691 692 050c 001C0200 sll $3,$2,16 693 0510 00120200 sll $2,$2,8 694 .set noreorder 695 .set nomacro 696 0514 0000000C jal rand 697 0518 26804300 xor $16,$2,$3 698 .set macro 699 .set reorder GAS LISTING testbench.s page 14 700 701 051c 26805000 xor $16,$2,$16 702 0520 1000A427 addiu $4,$sp,16 703 0524 21282002 move $5,$17 704 .set noreorder 705 .set nomacro 706 0528 0000000C jal div 707 052c 21300002 move $6,$16 708 .set macro 709 .set reorder 710 711 0530 1000A38F lw $3,16($sp) 712 0534 1400A28F lw $2,20($sp) 713 0538 18007000 mult $3,$16 714 053c 12180000 mflo $3 715 0540 21104300 addu $2,$2,$3 716 .set noreorder 717 .set nomacro 718 0544 E7FF5110 beq $2,$17,$L109 719 0548 E803442A slt $4,$18,1000 720 .set macro 721 .set reorder 722 723 054c 0080023C li $2,-2147483648 # 0xffffffff80000000 724 0550 12004234 ori $2,$2,0x12 725 $L103: 726 0554 2800BF8F lw $31,40($sp) 727 0558 2400B38F lw $19,36($sp) 728 055c 2000B28F lw $18,32($sp) 729 0560 1C00B18F lw $17,28($sp) 730 0564 1800B08F lw $16,24($sp) 731 .set noreorder 732 .set nomacro 733 0568 0800E003 j $31 734 056c 3000BD27 addiu $sp,$sp,48 735 .set macro 736 .set reorder 737 738 $L117: 739 0570 01007326 addiu $19,$19,1 740 0574 6400622A slt $2,$19,100 741 .set noreorder 742 .set nomacro 743 0578 DCFF4014 bne $2,$0,$L111 744 057c 01001224 li $18,1 # 0x1 745 .set macro 746 .set reorder 747 748 .set noreorder 749 .set nomacro 750 0580 55010008 j $L103 751 0584 21100000 move $2,$0 752 .set macro 753 .set reorder 754 755 .end Test12_MulDiv 756 .section .rodata.str1.4 GAS LISTING testbench.s page 15 757 0066 0000 .align 2 758 $LC13: 759 0068 49746572 .ascii "Iteration %d: Passed\r\n\000" 759 6174696F 759 6E202564 759 3A205061 759 73736564 760 007f 00 .align 2 761 $LC14: 762 0080 49746572 .ascii "Iteration \000" 762 6174696F 762 6E2000 763 008b 00 .align 2 764 $LC15: 765 008c 3A205061 .ascii ": Passed\r\n\000" 765 73736564 765 0D0A00 766 0097 00 .align 2 767 $LC16: 768 0098 3A00 .ascii ":\000" 769 009a 0000 .align 2 770 $LC17: 771 009c 4661696C .ascii "Failed with error \000" 771 65642077 771 69746820 771 6572726F 771 722000 772 00af 00 .align 2 773 $LC18: 774 00b0 200D0A00 .ascii " \r\n\000" 775 .text 776 .align 2 777 .globl main 778 .ent main 779 main: 780 .frame $sp,48,$31 # vars= 8, regs= 5/0, args= 16, gp= 0 781 .mask 0x800f0000,-8 782 .fmask 0x00000000,0 783 0588 0080033C li $3,-2147483648 # 0xffffffff80000000 784 058c 0D000224 li $2,13 785 0590 09006334 ori $3,$3,0x9 786 0594 D0FFBD27 addiu $sp,$sp,-48 787 0598 000062A0 sb $2,0($3) 788 059c 2400B3AF sw $19,36($sp) 789 05a0 2000B2AF sw $18,32($sp) 790 05a4 1C00B1AF sw $17,28($sp) 791 05a8 2800BFAF sw $31,40($sp) 792 .set noreorder 793 .set nomacro 794 05ac 0000000C jal PrintCPUinfo 795 05b0 1800B0AF sw $16,24($sp) 796 .set macro 797 .set reorder 798 799 05b4 FF3F023C li $2,1073676288 # 0x3fff0000 800 05b8 FFFF5334 ori $19,$2,0xffff 801 05bc 0080123C li $18,-2147483648 # 0xffffffff80000000 GAS LISTING testbench.s page 16 802 .set noreorder 803 .set nomacro 804 05c0 9F010008 j $L119 805 05c4 21880000 move $17,$0 806 .set macro 807 .set reorder 808 809 $L124: 810 05c8 0000000C jal Test11_AddSub 810 00000000 811 .set noreorder 812 .set nomacro 813 05d0 2F004004 bltz $2,$L120 814 05d4 21804000 move $16,$2 815 .set macro 816 .set reorder 817 818 05d8 0000000C jal Test12_MulDiv 818 00000000 819 05e0 21804000 move $16,$2 820 05e4 0000043C la $4,$LC13 820 00008424 821 .set noreorder 822 .set nomacro 823 05ec 28004004 bltz $2,$L120 824 05f0 21282002 move $5,$17 825 .set macro 826 .set reorder 827 828 .set noreorder 829 .set nomacro 830 05f4 0000000C jal printf 831 05f8 01003126 addiu $17,$17,1 832 .set macro 833 .set reorder 834 835 05fc 0000043C la $4,$LC14 835 0000000C 836 0604 00008424 jal sputs 837 .set noreorder 838 .set nomacro 839 0608 0000000C jal print_word 840 060c 21202002 move $4,$17 841 .set macro 842 .set reorder 843 844 0610 0000043C la $4,$LC15 844 00008424 845 .set noreorder 846 .set nomacro 847 0618 0000000C jal sputs 848 061c 01003126 addiu $17,$17,1 849 .set macro 850 .set reorder 851 852 .set noreorder 853 .set nomacro GAS LISTING testbench.s page 17 854 0620 0000000C jal time 855 0624 21200000 move $4,$0 856 .set macro 857 .set reorder 858 859 0628 1000A427 addiu $4,$sp,16 860 .set noreorder 861 .set nomacro 862 062c 0000000C jal gmtime 863 0630 1000A2AF sw $2,16($sp) 864 .set macro 865 .set reorder 866 867 0634 08004480 lb $4,8($2) 868 .set noreorder 869 .set nomacro 870 0638 0000000C jal print_byte 871 063c 21804000 move $16,$2 872 .set macro 873 .set reorder 874 875 0640 0000043C la $4,$LC16 875 0000000C 876 0648 00008424 jal sputs 877 064c 04000482 lb $4,4($16) 878 0650 0000000C jal print_byte 878 00000000 879 0658 0000043C la $4,$LC16 879 0000000C 880 0660 00008424 jal sputs 881 0664 00000482 lb $4,0($16) 882 0668 0000000C jal print_byte 882 00000000 883 0670 0000043C la $4,$LC9 883 0000000C 884 0678 00008424 jal sputs 885 $L119: 886 067c 24103302 and $2,$17,$19 887 0680 0000000C sw $2,0($18) 888 0684 000042AE jal Test10_LoadStore 889 .set noreorder 890 .set nomacro 891 0688 CFFF4104 bgez $2,$L124 892 068c 21804000 move $16,$2 893 .set macro 894 .set reorder 895 896 $L120: 897 0690 0040023C li $2,1073741824 # 0x40000000 898 0694 25102202 or $2,$17,$2 899 0698 0000043C la $4,$LC17 899 00008424 900 06a0 0000000C sw $2,0($18) 901 06a4 000042AE jal sputs 902 .set noreorder 903 .set nomacro 904 06a8 0000000C jal print_word GAS LISTING testbench.s page 18 905 06ac 21200002 move $4,$16 906 .set macro 907 .set reorder 908 909 06b0 0000043C la $4,$LC18 909 0000000C 910 06b8 00008424 jal sputs 911 06bc 2800BF8F lw $31,40($sp) 912 06c0 2400B38F lw $19,36($sp) 913 06c4 2000B28F lw $18,32($sp) 914 06c8 1C00B18F lw $17,28($sp) 915 06cc 1800B08F lw $16,24($sp) 916 06d0 01000224 li $2,1 # 0x1 917 .set noreorder 918 .set nomacro 919 06d4 0800E003 j $31 920 06d8 3000BD27 addiu $sp,$sp,48 921 .set macro 922 .set reorder 923 924 .end main