]> rtime.felk.cvut.cz Git - fpga/plasma.git/blob - tools/opcodes.asm
Local copy of Plasma MIPS project.
[fpga/plasma.git] / tools / opcodes.asm
1 ##################################################################
2 # TITLE: Opcode Tester
3 # AUTHOR: Steve Rhoads (rhoadss@yahoo.com)
4 # DATE CREATED: 1/10/02
5 # FILENAME: opcodes.asm
6 # PROJECT: Plasma CPU core
7 # COPYRIGHT: Software placed into the public domain by the author.
8 #    Software 'as is' without warranty.  Author liable for nothing.
9 # DESCRIPTION:
10 #    This assembly file tests all of the opcodes supported by the
11 #    Plasma core.
12 #    This test assumes that address 0x20000000 is the UART write register
13 #    Successful tests will print out "A" or "AB" or "ABC" or ....
14 #    Missing letters or letters out of order indicate a failure.
15 ##################################################################
16         .text
17         .align  2
18         .globl  entry
19         .ent    entry
20 entry:
21    .set noreorder
22
23    la    $gp, _gp           #initialize stack pointer
24    la    $4, __bss_start    #$4 = .sbss_start
25    la    $5, _end           #$5 = .bss_end
26    nop                      #no stack needed
27    nop
28
29    b     StartTest
30    nop                      #nops required to place ISR at 0x3c
31    nop
32
33 OS_AsmPatchValue:
34    #Code to place at address 0x3c
35    lui   $26, 0x1000
36    ori   $26, $26, 0x3c
37    jr    $26
38    nop
39
40 InterruptVector:            #Address=0x3c
41    mfc0  $26,$14            #C0_EPC=14 (Exception PC)
42    jr    $26
43    add   $4,$4,5
44    
45 StartTest:
46    mtc0  $0,$12             #disable interrupts
47    lui   $20,0x2000         #serial port write address
48    ori   $21,$0,'\n'        #<CR> letter
49    ori   $22,$0,'X'         #'X' letter
50    ori   $23,$0,'\r'
51    ori   $24,$0,0x0f80      #temp memory
52
53    sb    $23,0($20)
54    sb    $21,0($20)
55    sb    $23,0($20)
56    sb    $21,0($20)
57    sb    $23,0($20)
58    sb    $21,0($20)
59    sb    $23,0($20)
60    sb    $21,0($20)
61
62    #Patch interrupt vector to 0x1000003c
63    la    $5, OS_AsmPatchValue
64    sub   $6,$5,0x1000
65    blez  $6,NoPatch
66    
67    lw    $6, 0($5)
68    sw    $6, 0x3c($0)
69    lw    $6, 4($5)
70    sw    $6, 0x40($0)
71    lw    $6, 8($5)
72    sw    $6, 0x44($0)
73    lw    $6, 12($5)
74    sw    $6, 0x48($0)
75 NoPatch:
76
77    ######################################
78    #Arithmetic Instructions
79    ######################################
80 ArthmeticTest:
81    ori   $2,$0,'A'
82    sb    $2,0($20)
83    ori   $2,$0,'r'
84    sb    $2,0($20)
85    ori   $2,$0,'i'
86    sb    $2,0($20)
87    ori   $2,$0,'t'
88    sb    $2,0($20)
89    ori   $2,$0,'h'
90    sb    $2,0($20)
91    sb    $23,0($20)
92    sb    $21,0($20)
93
94    #a: ADD
95    ori   $2,$0,'a'
96    sb    $2,0($20)
97    ori   $3,$0,5
98    ori   $4,$0,60
99    add   $2,$3,$4
100    sb    $2,0($20)    #A
101    sb    $23,0($20)
102    sb    $21,0($20)
103
104    #b: ADDI
105    ori   $2,$0,'b'
106    sb    $2,0($20)
107    ori   $4,$0,60
108    addi  $2,$4,5
109    sb    $2,0($20)    #A
110    sb    $23,0($20)
111    sb    $21,0($20)
112
113    #c: ADDIU
114    ori   $2,$0,'c'
115    sb    $2,0($20)
116    ori   $4,$0,50
117    addiu $5,$4,15
118    sb    $5,0($20)    #A
119    sb    $23,0($20)
120    sb    $21,0($20)
121
122    #d: ADDU
123    ori   $2,$0,'d'
124    sb    $2,0($20)
125    ori   $3,$0,5
126    ori   $4,$0,60
127    add   $2,$3,$4
128    sb    $2,0($20)    #A
129    sb    $23,0($20)
130    sb    $21,0($20)
131
132    #e: DIV
133    ori   $2,$0,'e'
134    sb    $2,0($20)
135    ori   $2,$0,65*117+41
136    ori   $3,$0,117
137    div   $2,$3
138    nop
139    mflo  $4
140    sb    $4,0($20)    #A
141    mfhi  $4
142    addi  $4,$4,66-41
143    sb    $4,0($20)    #B
144    li    $2,-67*19
145    ori   $3,$0,19
146    div   $2,$3
147    nop
148    mflo  $4
149    sub   $4,$0,$4
150    sb    $4,0($20)    #C
151    ori   $2,$0,68*23
152    li    $3,-23
153    div   $2,$3
154    nop
155    mflo  $4
156    sub   $4,$0,$4
157    sb    $4,0($20)    #D
158    li    $2,-69*13
159    li    $3,-13
160    div   $2,$3
161    mflo  $4
162    sb    $4,0($20)    #E
163    sb    $23,0($20)
164    sb    $21,0($20)
165
166    #f: DIVU
167    ori   $2,$0,'f'
168    sb    $2,0($20)
169    ori   $2,$0,65*13
170    ori   $3,$0,13
171    divu  $2,$3
172    nop
173    mflo  $4
174    sb    $4,0($20)    #A
175    sb    $23,0($20)
176    sb    $21,0($20)
177
178    #g: MULT
179    ori   $2,$0,'g'
180    sb    $2,0($20)
181    ori   $2,$0,5
182    ori   $3,$0,13
183    mult  $2,$3
184    nop
185    mflo  $4
186    sb    $4,0($20)    #A
187    li    $2,-5
188    ori   $3,$0,13
189    mult  $2,$3
190    mfhi  $5
191    mflo  $4
192    sub   $4,$0,$4
193    addu  $4,$4,$5
194    addi  $4,$4,2
195    sb    $4,0($20)    #B
196    ori   $2,$0,5
197    li    $3,-13
198    mult  $2,$3
199    mfhi  $5
200    mflo  $4
201    sub   $4,$0,$4
202    addu  $4,$4,$5
203    addi  $4,$4,3
204    sb    $4,0($20)    #C
205    li    $2,-5
206    li    $3,-13
207    mult  $2,$3
208    mfhi  $5
209    mflo  $4
210    addu  $4,$4,$5
211    addi  $4,$4,3
212    sb    $4,0($20)    #D
213    lui   $4,0xfe98
214    ori   $4,$4,0x62e5
215    lui   $5,0x6
216    ori   $5,0x8db8
217    mult  $4,$5
218    mfhi  $6
219    addiu $7,$6,2356+1+'E' #E
220    sb    $7,0($20)
221    sb    $23,0($20)
222    sb    $21,0($20)
223
224    #h: MULTU
225    ori   $2,$0,'h'
226    sb    $2,0($20)
227    ori   $2,$0,5
228    ori   $3,$0,13
229    multu $2,$3
230    nop
231    mflo  $4
232    sb    $4,0($20)    #A
233    sb    $23,0($20)
234    sb    $21,0($20)
235
236    #i: SLT
237    ori   $2,$0,'i'
238    sb    $2,0($20)
239    ori   $2,$0,10
240    ori   $3,$0,12
241    slt   $4,$2,$3
242    addi  $5,$4,64
243    sb    $5,0($20)    #A
244    slt   $4,$3,$2
245    addi  $5,$4,66
246    sb    $5,0($20)    #B
247    li    $2,0xfffffff0
248    slt   $4,$2,$3
249    addi  $5,$4,66
250    sb    $5,0($20)    #C
251    slt   $4,$3,$2
252    addi  $5,$4,68
253    sb    $5,0($20)    #D
254    li    $3,0xffffffff
255    slt   $4,$2,$3
256    addi  $5,$4,68
257    sb    $5,0($20)    #E
258    slt   $4,$3,$2
259    addi  $5,$4,70
260    sb    $5,0($20)    #F
261    sb    $23,0($20)
262    sb    $21,0($20)
263
264    #j: SLTI
265    ori   $2,$0,'j'
266    sb    $2,0($20)
267    ori   $2,$0,10
268    slti  $4,$2,12
269    addi  $5,$4,64
270    sb    $5,0($20)    #A
271    slti  $4,$2,8
272    addi  $5,$4,66
273    sb    $5,0($20)    #B
274    sb    $23,0($20)
275    sb    $21,0($20)
276
277    #k: SLTIU
278    ori   $2,$0,'k'
279    sb    $2,0($20)
280    ori   $2,$0,10
281    sltiu $4,$2,12
282    addi  $5,$4,64
283    sb    $5,0($20)    #A
284    sltiu $4,$2,8
285    addi  $5,$4,66
286    sb    $5,0($20)    #B
287    sb    $23,0($20)
288    sb    $21,0($20)
289
290    #l: SLTU
291    ori   $2,$0,'l'
292    sb    $2,0($20)
293    ori   $2,$0,10
294    ori   $3,$0,12
295    slt   $4,$2,$3
296    addi  $5,$4,64
297    sb    $5,0($20)    #A
298    slt   $4,$3,$2
299    addi  $5,$4,66
300    sb    $5,0($20)    #B
301    sb    $23,0($20)
302    sb    $21,0($20)
303
304    #m: SUB
305    ori   $2,$0,'m'
306    sb    $2,0($20)
307    ori   $3,$0,70
308    ori   $4,$0,5
309    sub   $2,$3,$4
310    sb    $2,0($20)    #A
311    sb    $23,0($20)
312    sb    $21,0($20)
313
314    #n: SUBU
315    ori   $2,$0,'n'
316    sb    $2,0($20)
317    ori   $3,$0,70
318    ori   $4,$0,5
319    sub   $2,$3,$4
320    sb    $2,0($20)    #A
321    sb    $23,0($20)
322    sb    $21,0($20)
323
324    ######################################
325    #Branch and Jump Instructions
326    ######################################
327 BranchTest:
328    ori   $2,$0,'B'
329    sb    $2,0($20)
330    ori   $2,$0,'r'
331    sb    $2,0($20)
332    ori   $2,$0,'a'
333    sb    $2,0($20)
334    ori   $2,$0,'n'
335    sb    $2,0($20)
336    ori   $2,$0,'c'
337    sb    $2,0($20)
338    ori   $2,$0,'h'
339    sb    $2,0($20)
340    sb    $23,0($20)
341    sb    $21,0($20)
342
343    #a: B
344    ori   $2,$0,'a'
345    sb    $2,0($20)
346    ori   $10,$0,'A'
347    ori   $11,$0,'B'
348    b     $B1
349    sb    $10,0($20)
350    sb    $22,0($20)
351 $B1:
352    sb    $11,0($20)
353    sb    $23,0($20)
354    sb    $21,0($20)
355
356    #b: BAL
357    ori   $2,$0,'b'
358    sb    $2,0($20)
359    ori   $10,$0,'A'
360    ori   $11,$0,'B'
361    ori   $12,$0,'C'
362    ori   $13,$0,'D'
363    ori   $14,$0,'E'
364    ori   $15,$0,'X'
365    bal   $BAL1
366    sb    $10,0($20)
367    sb    $13,0($20)
368    b     $BAL2
369    sb    $14,0($20)
370    sb    $15,0($20)
371 $BAL1:
372    sb    $11,0($20)
373    jr    $31
374    sb    $12,0($20)
375    sb    $22,0($20)
376 $BAL2:
377    sb    $23,0($20)
378    sb    $21,0($20)
379
380    #c: BEQ
381    ori   $2,$0,'c'
382    sb    $2,0($20)
383    ori   $10,$0,'A'
384    ori   $11,$0,'B'
385    ori   $12,$0,'C'
386    ori   $13,$0,'D'
387    ori   $2,$0,100
388    ori   $3,$0,123
389    ori   $4,$0,123
390    beq   $2,$3,$BEQ1
391    sb    $10,0($20)
392    sb    $11,0($20)
393    beq   $3,$4,$BEQ1
394    sb    $12,0($20)
395    sb    $22,0($20)
396 $BEQ1:
397    sb    $13,0($20)
398    sb    $23,0($20)
399    sb    $21,0($20)
400
401    #d: BGEZ
402    ori   $2,$0,'d'
403    sb    $2,0($20)
404    ori   $10,$0,'A'
405    ori   $11,$0,'B'
406    ori   $12,$0,'C'
407    ori   $13,$0,'D'
408    or    $15,$0,'X'
409    ori   $2,$0,100
410    li    $3,0xffff1234
411    ori   $4,$0,123
412    bgez  $3,$BGEZ1
413    sb    $10,0($20)
414    sb    $11,0($20)
415    bgez  $2,$BGEZ1
416    sb    $12,0($20)
417    sb    $22,0($20)
418 $BGEZ1:
419    bgez  $0,$BGEZ2
420    nop
421    sb    $15,0($20)
422 $BGEZ2:
423    sb    $13,0($20)
424    sb    $23,0($20)
425    sb    $21,0($20)
426
427    #e: BGEZAL
428    ori   $2,$0,'e'
429    sb    $2,0($20)
430    ori   $10,$0,'A'
431    ori   $11,$0,'B'
432    ori   $12,$0,'C'
433    ori   $13,$0,'D'
434    ori   $14,$0,'E'
435    ori   $15,$0,'X'
436    li    $3,0xffff1234
437    bgezal $3,$BGEZAL1
438    nop
439    sb    $10,0($20)
440    bgezal $0,$BGEZAL1
441    nop
442    sb    $13,0($20)
443    b     $BGEZAL2
444    sb    $14,0($20)
445    sb    $15,0($20)
446 $BGEZAL1:
447    sb    $11,0($20)
448    jr    $31
449    sb    $12,0($20)
450    sb    $22,0($20)
451 $BGEZAL2:
452    sb    $23,0($20)
453    sb    $21,0($20)
454
455    #f: BGTZ
456    ori   $2,$0,'f'
457    sb    $2,0($20)
458    ori   $10,$0,'A'
459    ori   $11,$0,'B'
460    ori   $12,$0,'C'
461    ori   $13,$0,'D'
462    ori   $2,$0,100
463    li    $3,0xffff1234
464    bgtz  $3,$BGTZ1
465    sb    $10,0($20)
466    sb    $11,0($20)
467    bgtz  $2,$BGTZ1
468    sb    $12,0($20)
469    sb    $22,0($20)
470 $BGTZ1:
471    sb    $13,0($20)
472    sb    $23,0($20)
473    sb    $21,0($20)
474
475    #g: BLEZ
476    ori   $2,$0,'g'
477    sb    $2,0($20)
478    ori   $10,$0,'A'
479    ori   $11,$0,'B'
480    ori   $12,$0,'C'
481    ori   $13,$0,'D'
482    ori   $2,$0,100
483    li    $3,0xffff1234
484    blez  $2,$BLEZ1
485    sb    $10,0($20)
486    sb    $11,0($20)
487    blez  $3,$BLEZ1
488    sb    $12,0($20)
489    sb    $22,0($20)
490 $BLEZ1:
491    blez  $0,$BLEZ2
492    nop
493    sb    $22,0($20)
494 $BLEZ2:
495    sb    $13,0($20)
496    sb    $23,0($20)
497    sb    $21,0($20)
498
499    #h: BLTZ
500    ori   $2,$0,'h'
501    sb    $2,0($20)
502    ori   $10,$0,'A'
503    ori   $11,$0,'B'
504    ori   $12,$0,'C'
505    ori   $13,$0,'D'
506    ori   $14,$0,'E'
507    ori   $2,$0,100
508    li    $3,0xffff1234
509    ori   $4,$0,0
510    bltz  $2,$BLTZ1
511    sb    $10,0($20)
512    sb    $11,0($20)
513    bltz  $3,$BLTZ1
514    sb    $12,0($20)
515    sb    $22,0($20)
516 $BLTZ1:
517    bltz  $4,$BLTZ2
518    nop
519    sb    $13,0($20)
520 $BLTZ2:
521    sb    $14,0($20)
522    sb    $23,0($20)
523    sb    $21,0($20)
524
525    #i: BLTZAL
526    ori   $2,$0,'i'
527    sb    $2,0($20)
528    ori   $10,$0,'A'
529    ori   $11,$0,'B'
530    ori   $12,$0,'C'
531    ori   $13,$0,'D'
532    ori   $14,$0,'E'
533    ori   $15,$0,'X'
534    li    $3,0xffff1234
535    bltzal $0,$BLTZAL1
536    nop
537    sb    $10,0($20)
538    bltzal $3,$BLTZAL1
539    nop
540    sb    $13,0($20)
541    b     $BLTZAL2
542    sb    $14,0($20)
543    sb    $15,0($20)
544 $BLTZAL1:
545    sb    $11,0($20)
546    jr    $31
547    sb    $12,0($20)
548    sb    $22,0($20)
549 $BLTZAL2:
550    sb    $23,0($20)
551    sb    $21,0($20)
552
553    #j: BNE
554    ori   $2,$0,'j'
555    sb    $2,0($20)
556    ori   $10,$0,'A'
557    ori   $11,$0,'B'
558    ori   $12,$0,'C'
559    ori   $13,$0,'D'
560    ori   $2,$0,100
561    ori   $3,$0,123
562    ori   $4,$0,123
563    bne   $3,$4,$BNE1
564    sb    $10,0($20)
565    sb    $11,0($20)
566    bne   $2,$3,$BNE1
567    sb    $12,0($20)
568    sb    $22,0($20)
569 $BNE1:
570    sb    $13,0($20)
571    sb    $23,0($20)
572    sb    $21,0($20)
573
574    #k: J
575    ori   $2,$0,'k'
576    sb    $2,0($20)
577    ori   $10,$0,'A'
578    ori   $11,$0,'B'
579    ori   $15,$0,'X'
580    j     $J1
581    sb    $10,0($20)
582    sb    $15,0($20)
583 $J1:
584    sb    $11,0($20)
585    sb    $23,0($20)
586    sb    $21,0($20)
587
588    #l: JAL
589    ori   $2,$0,'l'
590    sb    $2,0($20)
591    ori   $10,$0,'A'
592    ori   $11,$0,'B'
593    ori   $12,$0,'C'
594    ori   $13,$0,'D'
595    ori   $14,$0,'E'
596    ori   $15,$0,'X'
597    jal   $JAL1
598    sb    $10,0($20)
599    sb    $13,0($20)
600    b     $JAL2
601    sb    $14,0($20)
602    sb    $15,0($20)
603 $JAL1:
604    sb    $11,0($20)
605    jr    $31
606    sb    $12,0($20)
607    sb    $22,0($20)
608 $JAL2:
609    sb    $23,0($20)
610    sb    $21,0($20)
611
612    #m: JALR
613    ori   $2,$0,'m'
614    sb    $2,0($20)
615    ori   $10,$0,'A'
616    ori   $11,$0,'B'
617    ori   $12,$0,'C'
618    ori   $13,$0,'D'
619    ori   $14,$0,'E'
620    ori   $15,$0,'X'
621    la    $3,$JALR1
622    jalr  $3
623    sb    $10,0($20)
624    sb    $13,0($20)
625    b     $JALR2
626    sb    $14,0($20)
627    sb    $15,0($20)
628 $JALR1:
629    sb    $11,0($20)
630    jr    $31
631    sb    $12,0($20)
632    sb    $22,0($20)
633 $JALR2:
634    sb    $23,0($20)
635    sb    $21,0($20)
636
637    #n: JR
638    ori   $2,$0,'n'
639    sb    $2,0($20)
640    ori   $10,$0,'A'
641    ori   $11,$0,'B'
642    ori   $15,$0,'X'
643    la    $3,$JR1
644    jr    $3
645    sb    $10,0($20)
646    sb    $15,0($20)
647 $JR1:
648    sb    $11,0($20)
649    sb    $23,0($20)
650    sb    $21,0($20)
651
652    #o: NOP
653    ori   $2,$0,'o'
654    sb    $2,0($20)
655    ori   $2,$0,65
656    nop
657    sb    $2,0($20)
658    sb    $23,0($20)
659    sb    $21,0($20)
660
661 #   b     LoadTest
662
663 BreakTest:
664    #p: BREAK
665    ori   $2,$0,'p'
666    sb    $2,0($20)
667    ori   $2,$0,'z'
668    ori   $4,$0,59
669    break 0
670    addi  $4,$4,1
671    sb    $4,0($20)
672    sb    $23,0($20)
673    sb    $21,0($20)
674
675    #q: SYSCALL
676    ori   $2,$0,'q'
677    sb    $2,0($20)
678    ori   $4,$0,61
679    syscall 0
680    addi  $4,$4,-1
681    sb    $4,0($20)
682    sb    $23,0($20)
683    sb    $21,0($20)
684
685
686    ######################################
687    #Load, Store, and Memory Control Instructions
688    ######################################
689 LoadTest:
690    ori   $2,$0,'L'
691    sb    $2,0($20)
692    ori   $2,$0,'o'
693    sb    $2,0($20)
694    ori   $2,$0,'a'
695    sb    $2,0($20)
696    ori   $2,$0,'d'
697    sb    $2,0($20)
698    sb    $23,0($20)
699    sb    $21,0($20)
700
701    #a: LB
702    ori   $2,$0,'a'
703    sb    $2,0($20)
704    or    $2,$0,$24
705    li    $3,0x414243fc
706    sw    $3,16($2)
707    lb    $4,16($2)
708    sb    $4,0($20)
709    lb    $4,17($2)
710    sb    $4,0($20)
711    lb    $4,18($2)
712    sb    $4,0($20)
713    lb    $2,19($2)
714    sra   $3,$2,8
715    addi  $3,$3,0x45
716    sb    $3,0($20)
717    addi  $2,$2,0x49
718    sb    $2,0($20)
719    sb    $23,0($20)
720    sb    $21,0($20)
721
722    #b: LBU
723    ori   $2,$0,'b'
724    sb    $2,0($20)
725    or    $2,$0,$24
726    li    $3,0x41424344
727    sw    $3,16($2)
728    lb    $4,16($2)
729    sb    $4,0($20)
730    lb    $4,17($2)
731    sb    $4,0($20)
732    lb    $4,18($2)
733    sb    $4,0($20)
734    lb    $2,19($2)
735    sb    $2,0($20)
736    sb    $23,0($20)
737    sb    $21,0($20)
738
739    #c: LH
740    ori   $2,$0,'c'
741    sb    $2,0($20)
742    or    $2,$0,$24
743    li    $3,0x00410042
744    sw    $3,16($2)
745    lh    $4,16($2)
746    sb    $4,0($20)
747    lh    $2,18($2)
748    sb    $2,0($20)
749    sb    $23,0($20)
750    sb    $21,0($20)
751
752    #d: LHU
753    ori   $2,$0,'d'
754    sb    $2,0($20)
755    or    $2,$0,$24
756    li    $3,0x00410042
757    sw    $3,16($2)
758    lh    $4,16($2)
759    sb    $4,0($20)
760    lh    $2,18($2)
761    sb    $2,0($20)
762    sb    $23,0($20)
763    sb    $21,0($20)
764
765    #e: LW
766    ori   $2,$0,'e'
767    sb    $2,0($20)
768    or    $2,$0,$24
769    li    $3,'A'
770    sw    $3,16($2)
771    ori   $3,$0,0
772    lw    $2,16($2)
773    sb    $2,0($20)
774    sb    $23,0($20)
775    sb    $21,0($20)
776
777    #f: LWL & LWR
778    ori   $2,$0,'f'
779    sb    $2,0($20)
780    or    $2,$0,$24
781    li    $3,'A'
782    sw    $3,16($2)
783    ori   $3,$0,0
784    lwl   $2,16($2)
785    lwr   $2,16($2)
786    sb    $2,0($20)
787    sb    $23,0($20)
788    sb    $21,0($20)
789
790    #g: SB
791    ori   $2,$0,'g'
792    sb    $2,0($20)
793    ori   $2,$0,'A'
794    sb    $2,0($20)
795    sb    $23,0($20)
796    sb    $21,0($20)
797
798    #h: SH
799    ori   $2,$0,'h'
800    sb    $2,0($20)
801    or    $4,$0,$24
802    ori   $2,$0,0x4142
803    sh    $2,16($4)
804    lb    $3,16($4)
805    sb    $3,0($20)
806    lb    $2,17($4)
807    sb    $2,0($20)
808    sb    $23,0($20)
809    sb    $21,0($20)
810
811    #i: SW
812    ori   $2,$0,'i'
813    sb    $2,0($20)
814    or    $2,$0,$24
815    li    $3,0x41424344
816    sw    $3,16($2)
817    lb    $4,16($2)
818    sb    $4,0($20)
819    lb    $4,17($2)
820    sb    $4,0($20)
821    lb    $4,18($2)
822    sb    $4,0($20)
823    lb    $2,19($2)
824    sb    $2,0($20)
825    sb    $23,0($20)
826    sb    $21,0($20)
827
828    #j: SWL & SWR
829    ori   $2,$0,'j'
830    sb    $2,0($20)
831    or    $2,$0,$24
832    li    $3,0x41424344
833    swl   $3,16($2)
834    swr   $3,16($2)
835    lb    $4,16($2)
836    sb    $4,0($20)
837    lb    $4,17($2)
838    sb    $4,0($20)
839    lb    $4,18($2)
840    sb    $4,0($20)
841    lb    $2,19($2)
842    sb    $2,0($20)
843    sb    $23,0($20)
844    sb    $21,0($20)
845
846
847    ######################################
848    #Logical Instructions
849    ######################################
850 LogicalTest:
851    ori   $2,$0,'L'
852    sb    $2,0($20)
853    ori   $2,$0,'o'
854    sb    $2,0($20)
855    ori   $2,$0,'g'
856    sb    $2,0($20)
857    ori   $2,$0,'i'
858    sb    $2,0($20)
859    ori   $2,$0,'c'
860    sb    $2,0($20)
861    sb    $23,0($20)
862    sb    $21,0($20)
863
864    #a: AND
865    ori   $2,$0,'a'
866    sb    $2,0($20)
867    ori   $2,$0,0x0741
868    ori   $3,$0,0x60f3
869    and   $4,$2,$3
870    sb    $4,0($20)
871    sb    $23,0($20)
872    sb    $21,0($20)
873
874    #b: ANDI
875    ori   $2,$0,'b'
876    sb    $2,0($20)
877    ori   $2,$0,0x0741
878    andi  $4,$2,0x60f3
879    sb    $4,0($20)
880    sb    $23,0($20)
881    sb    $21,0($20)
882
883    #c: LUI
884    ori   $2,$0,'c'
885    sb    $2,0($20)
886    lui   $2,0x41
887    srl   $3,$2,16
888    sb    $3,0($20)
889    sb    $23,0($20)
890    sb    $21,0($20)
891
892    #d: NOR
893    ori   $2,$0,'d'
894    sb    $2,0($20)
895    li    $2,0xf0fff08e
896    li    $3,0x0f0f0f30
897    nor   $4,$2,$3
898    sb    $4,0($20)
899    sb    $23,0($20)
900    sb    $21,0($20)
901
902    #e: OR
903    ori   $2,$0,'e'
904    sb    $2,0($20)
905    ori   $2,$0,0x40
906    ori   $3,$0,0x01
907    or    $4,$2,$3
908    sb    $4,0($20)
909    sb    $23,0($20)
910    sb    $21,0($20)
911
912    #f: ORI
913    ori   $2,$0,'f'
914    sb    $2,0($20)
915    ori   $2,$0,0x40
916    ori   $4,$2,0x01
917    sb    $4,0($20)
918    sb    $23,0($20)
919    sb    $21,0($20)
920
921    #g: XOR
922    ori   $2,$0,'g'
923    sb    $2,0($20)
924    ori   $2,$0,0xf043
925    ori   $3,$0,0xf002
926    xor   $4,$2,$3
927    sb    $4,0($20)
928    sb    $23,0($20)
929    sb    $21,0($20)
930
931    #h: XORI
932    ori   $2,$0,'h'
933    sb    $2,0($20)
934    ori   $2,$0,0xf043
935    xor   $4,$2,0xf002
936    sb    $4,0($20)
937    sb    $23,0($20)
938    sb    $21,0($20)
939
940  
941    ######################################
942    #Move Instructions
943    ######################################
944 MoveTest:
945    ori   $2,$0,'M'
946    sb    $2,0($20)
947    ori   $2,$0,'o'
948    sb    $2,0($20)
949    ori   $2,$0,'v'
950    sb    $2,0($20)
951    ori   $2,$0,'e'
952    sb    $2,0($20)
953    sb    $23,0($20)
954    sb    $21,0($20)
955
956    #a: MFHI
957    ori   $2,$0,'a'
958    sb    $2,0($20)
959    ori   $2,$0,65
960    mthi  $2
961    mfhi  $3
962    sb    $3,0($20)
963    sb    $23,0($20)
964    sb    $21,0($20)
965
966    #b: MFLO
967    ori   $2,$0,'b'
968    sb    $2,0($20)
969    ori   $2,$0,65
970    mtlo  $2
971    mflo  $3
972    sb    $3,0($20)
973    sb    $23,0($20)
974    sb    $21,0($20)
975
976    #c: MTHI
977    ori   $2,$0,'c'
978    sb    $2,0($20)
979    ori   $2,$0,65
980    mthi  $2
981    mfhi  $3
982    sb    $3,0($20)
983    sb    $23,0($20)
984    sb    $21,0($20)
985
986    #d: MTLO
987    ori   $2,$0,'d'
988    sb    $2,0($20)
989    ori   $2,$0,65
990    mtlo  $2
991    mflo  $3
992    sb    $3,0($20)
993    sb    $23,0($20)
994    sb    $21,0($20)
995
996
997    ######################################
998    #Shift Instructions
999    ######################################
1000 ShiftTest:
1001    ori   $2,$0,'S'
1002    sb    $2,0($20)
1003    ori   $2,$0,'h'
1004    sb    $2,0($20)
1005    ori   $2,$0,'i'
1006    sb    $2,0($20)
1007    ori   $2,$0,'f'
1008    sb    $2,0($20)
1009    ori   $2,$0,'t'
1010    sb    $2,0($20)
1011    sb    $23,0($20)
1012    sb    $21,0($20)
1013
1014    #a: SLL
1015    ori   $2,$0,'a'
1016    sb    $2,0($20)
1017    li    $2,0x40414243
1018    sll   $3,$2,8
1019    srl   $3,$3,24
1020    sb    $3,0($20)
1021    sb    $23,0($20)
1022    sb    $21,0($20)
1023
1024    #b: SLLV
1025    ori   $2,$0,'b'
1026    sb    $2,0($20)
1027    li    $2,0x40414243
1028    ori   $3,$0,8
1029    sllv  $3,$2,$3
1030    srl   $3,$3,24
1031    sb    $3,0($20)
1032    sb    $23,0($20)
1033    sb    $21,0($20)
1034
1035    #c: SRA
1036    ori   $2,$0,'c'
1037    sb    $2,0($20)
1038    li    $2,0x40414243
1039    sra   $3,$2,16
1040    sb    $3,0($20)
1041    li    $2,0x84000000
1042    sra   $3,$2,25
1043    sub   $3,$3,0x80
1044    sb    $3,0($20)
1045    sb    $23,0($20)
1046    sb    $21,0($20)
1047
1048    #d: SRAV
1049    ori   $2,$0,'d'
1050    sb    $2,0($20)
1051    li    $2,0x40414243
1052    ori   $3,$0,16
1053    srav  $3,$2,$3
1054    sb    $3,0($20)
1055    ori   $3,$0,25
1056    li    $2,0x84000000
1057    srav  $3,$2,$3
1058    sub   $3,$3,0x80
1059    sb    $3,0($20)
1060    sb    $23,0($20)
1061    sb    $21,0($20)
1062
1063    #e: SRL
1064    ori   $2,$0,'e'
1065    sb    $2,0($20)
1066    li    $2,0x40414243
1067    srl   $3,$2,16
1068    sb    $3,0($20)
1069    li    $2,0x84000000
1070    srl   $3,$2,25
1071    sb    $3,0($20)
1072    sb    $23,0($20)
1073    sb    $21,0($20)
1074
1075    #f: SRLV
1076    ori   $2,$0,'f'
1077    sb    $2,0($20)
1078    li    $2,0x40414243
1079    ori   $3,$0,16
1080    srlv  $4,$2,$3
1081    sb    $4,0($20)
1082    ori   $3,$0,25
1083    li    $2,0x84000000
1084    srlv  $3,$2,$3
1085    sb    $3,0($20)
1086    sb    $23,0($20)
1087    sb    $21,0($20)
1088
1089
1090    ori   $2,$0,'D'
1091    sb    $2,0($20)
1092    ori   $2,$0,'o'
1093    sb    $2,0($20)
1094    ori   $2,$0,'n'
1095    sb    $2,0($20)
1096    ori   $2,$0,'e'
1097    sb    $2,0($20)
1098    sb    $23,0($20)
1099    sb    $21,0($20)
1100
1101
1102 $DONE:
1103    j     $DONE
1104    nop
1105
1106    .set reorder
1107         .end    entry
1108