1045 lines
32 KiB
Plaintext
1045 lines
32 KiB
Plaintext
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
|