Advertisement
Guest User

Untitled

a guest
Jul 10th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     .data
  2. _scratch:
  3.     .space 64
  4.     .text
  5. __crt0:
  6.     jal main
  7.     move $a0, $v0
  8.     li $v0, 17
  9.     syscall
  10. print_integer:
  11.     li $v0, 1
  12.     syscall
  13.     jr $ra
  14. print_string:
  15.     li $v0, 4
  16.     syscall
  17.     jr $ra
  18. print_char:
  19.     li $v0, 11
  20.     syscall
  21.     jr $ra
  22. malloc:
  23.     li $v0, 9
  24.     syscall
  25.     jr $ra
  26. get_scratch:
  27.     la $v0, _scratch
  28.     jr $ra
  29.     .globl MergeSort
  30. MergeSort:
  31.     addiu   $sp, $sp, -32
  32.     sw      $s0, ($sp)
  33.     sw      $s1, 4($sp)
  34.     sw      $s2, 8($sp)
  35.     sw      $s3, 12($sp)
  36.     sw      $s4, 16($sp)
  37.     sw      $s5, 20($sp)
  38.     sw      $s6, 24($sp)
  39.     sw      $s7, 28($sp)
  40.     addiu   $sp, $sp, -32
  41.     sw      $ra, 28($sp)
  42.     sw      $a0, ($sp)
  43.     sw      $a1, 4($sp)
  44.     addiu   $s0, $sp, 4
  45.     lw      $s0, ($s0)
  46.     addiu   $s1, $zero, 1
  47.     slt     $s0, $s1, $s0
  48.     beq     $s0, $zero, ifAlt_T0
  49.     addiu   $s0, $sp, 8
  50.     addiu   $a0, $sp, 4
  51.     lw      $a0, ($a0)
  52.     addiu   $s1, $zero, 2
  53.     div     $a0, $s1
  54.     mflo    $a0
  55.     addiu   $s1, $zero, 4
  56.     mul     $a0, $a0, $s1
  57.     jal     malloc
  58.     add     $s1, $zero, $v0
  59.     sw      $s1, ($s0)
  60.     add     $s0, $zero, $s1
  61.     addiu   $s0, $sp, 12
  62.     addiu   $a0, $sp, 4
  63.     lw      $a0, ($a0)
  64.     addiu   $s1, $zero, 1
  65.     add     $a0, $a0, $s1
  66.     addiu   $s1, $zero, 2
  67.     div     $a0, $s1
  68.     mflo    $a0
  69.     addiu   $s1, $zero, 4
  70.     mul     $a0, $a0, $s1
  71.     jal     malloc
  72.     add     $s1, $zero, $v0
  73.     sw      $s1, ($s0)
  74.     add     $s0, $zero, $s1
  75.     addiu   $s0, $sp, 16
  76.     addiu   $s1, $zero, 0
  77.     sw      $s1, ($s0)
  78.     add     $s0, $zero, $s1
  79.     j       whileEnd_T3
  80.     .globl whileLoop_T2
  81. whileLoop_T2:
  82.     addiu   $s0, $sp, 8
  83.     lw      $s0, ($s0)
  84.     addiu   $s1, $sp, 16
  85.     lw      $s1, ($s1)
  86.     sll     $s1, $s1, 2
  87.     add     $s0, $s0, $s1
  88.     addiu   $s1, $sp, 0
  89.     lw      $s1, ($s1)
  90.     addiu   $s2, $sp, 16
  91.     lw      $s2, ($s2)
  92.     sll     $s2, $s2, 2
  93.     add     $s1, $s1, $s2
  94.     lw      $s1, ($s1)
  95.     sw      $s1, ($s0)
  96.     add     $s0, $zero, $s1
  97.     addiu   $s0, $sp, 16
  98.     lw      $s1, ($s0)
  99.     add     $s2, $zero, $s1
  100.     addiu   $s1, $s1, 1
  101.     sw      $s1, ($s0)
  102.     add     $s0, $zero, $s2
  103.     .globl whileEnd_T3
  104. whileEnd_T3:
  105.     addiu   $s0, $sp, 4
  106.     lw      $s0, ($s0)
  107.     addiu   $s1, $zero, 2
  108.     div     $s0, $s1
  109.     mflo    $s0
  110.     addiu   $s1, $sp, 16
  111.     lw      $s1, ($s1)
  112.     slt     $s1, $s1, $s0
  113.     bne     $s1, $zero, whileLoop_T2
  114.     addiu   $s1, $sp, 4
  115.     lw      $s1, ($s1)
  116.     addiu   $s0, $zero, 2
  117.     div     $s1, $s0
  118.     mflo    $s1
  119.     addiu   $s0, $sp, 16
  120.     sw      $s1, ($s0)
  121.     add     $s0, $zero, $s1
  122.     j       whileEnd_T5
  123.     .globl whileLoop_T4
  124. whileLoop_T4:
  125.     addiu   $s0, $sp, 4
  126.     lw      $s0, ($s0)
  127.     addiu   $s1, $zero, 2
  128.     div     $s0, $s1
  129.     mflo    $s0
  130.     addiu   $s1, $sp, 16
  131.     lw      $s1, ($s1)
  132.     sub     $s1, $s1, $s0
  133.     addiu   $s0, $sp, 12
  134.     lw      $s0, ($s0)
  135.     sll     $s1, $s1, 2
  136.     add     $s0, $s0, $s1
  137.     addiu   $s1, $sp, 0
  138.     lw      $s1, ($s1)
  139.     addiu   $s2, $sp, 16
  140.     lw      $s2, ($s2)
  141.     sll     $s2, $s2, 2
  142.     add     $s1, $s1, $s2
  143.     lw      $s1, ($s1)
  144.     sw      $s1, ($s0)
  145.     add     $s0, $zero, $s1
  146.     addiu   $s0, $sp, 16
  147.     lw      $s1, ($s0)
  148.     add     $s2, $zero, $s1
  149.     addiu   $s1, $s1, 1
  150.     sw      $s1, ($s0)
  151.     add     $s0, $zero, $s2
  152.     .globl whileEnd_T5
  153. whileEnd_T5:
  154.     addiu   $s0, $sp, 16
  155.     lw      $s0, ($s0)
  156.     addiu   $s1, $sp, 4
  157.     lw      $s1, ($s1)
  158.     slt     $s0, $s0, $s1
  159.     bne     $s0, $zero, whileLoop_T4
  160.     addiu   $a0, $sp, 8
  161.     lw      $a0, ($a0)
  162.     addiu   $a1, $sp, 4
  163.     lw      $a1, ($a1)
  164.     addiu   $s0, $zero, 2
  165.     div     $a1, $s0
  166.     mflo    $a1
  167.     jal     MergeSort
  168.     add     $s0, $zero, $v0
  169.     addiu   $a0, $sp, 12
  170.     lw      $a0, ($a0)
  171.     addiu   $a1, $sp, 4
  172.     lw      $a1, ($a1)
  173.     addiu   $s0, $zero, 1
  174.     add     $a1, $a1, $s0
  175.     addiu   $s0, $zero, 2
  176.     div     $a1, $s0
  177.     mflo    $a1
  178.     jal     MergeSort
  179.     add     $s0, $zero, $v0
  180.     addiu   $s0, $sp, 20
  181.     addiu   $s1, $sp, 8
  182.     lw      $s1, ($s1)
  183.     addiu   $s2, $zero, 0
  184.     sll     $s2, $s2, 2
  185.     add     $s1, $s1, $s2
  186.     sw      $s1, ($s0)
  187.     add     $s0, $zero, $s1
  188.     addiu   $s0, $sp, 24
  189.     addiu   $s1, $sp, 12
  190.     lw      $s1, ($s1)
  191.     addiu   $s2, $zero, 0
  192.     sll     $s2, $s2, 2
  193.     add     $s1, $s1, $s2
  194.     sw      $s1, ($s0)
  195.     add     $s0, $zero, $s1
  196.     addiu   $s0, $sp, 16
  197.     addiu   $s1, $zero, 0
  198.     sw      $s1, ($s0)
  199.     add     $s0, $zero, $s1
  200.     j       whileEnd_T7
  201.     .globl whileLoop_T6
  202. whileLoop_T6:
  203.     addiu   $s0, $sp, 20
  204.     lw      $s0, ($s0)
  205.     lw      $s0, ($s0)
  206.     addiu   $s1, $sp, 24
  207.     lw      $s1, ($s1)
  208.     lw      $s1, ($s1)
  209.     slt     $s0, $s0, $s1
  210.     bne     $s0, $zero, orEnd_T8
  211.     addiu   $s0, $sp, 20
  212.     lw      $s0, ($s0)
  213.     lw      $s0, ($s0)
  214.     addiu   $s1, $sp, 24
  215.     lw      $s1, ($s1)
  216.     lw      $s1, ($s1)
  217.     xor     $s0, $s0, $s1
  218.     sltiu   $s0, $s0, 1
  219.     .globl orEnd_T8
  220. orEnd_T8:
  221.     beq     $s0, $zero, ifAlt_T9
  222.     addiu   $s0, $sp, 0
  223.     lw      $s0, ($s0)
  224.     addiu   $s1, $sp, 16
  225.     lw      $s1, ($s1)
  226.     sll     $s1, $s1, 2
  227.     add     $s0, $s0, $s1
  228.     addiu   $s1, $sp, 20
  229.     lw      $s1, ($s1)
  230.     lw      $s1, ($s1)
  231.     sw      $s1, ($s0)
  232.     add     $s0, $zero, $s1
  233.     addiu   $s0, $sp, 20
  234.     lw      $s0, ($s0)
  235.     addiu   $s1, $sp, 4
  236.     lw      $s1, ($s1)
  237.     addiu   $s2, $zero, 1
  238.     add     $s1, $s1, $s2
  239.     addiu   $s2, $zero, 2
  240.     div     $s1, $s2
  241.     mflo    $s1
  242.     addiu   $s2, $zero, 1
  243.     sub     $s1, $s1, $s2
  244.     addiu   $s2, $sp, 12
  245.     lw      $s2, ($s2)
  246.     sll     $s1, $s1, 2
  247.     add     $s2, $s2, $s1
  248.     xor     $s0, $s0, $s2
  249.     beq     $s0, $zero, ifAlt_T11
  250.     addiu   $s0, $sp, 20
  251.     lw      $s0, ($s0)
  252.     addiu   $s2, $sp, 4
  253.     lw      $s2, ($s2)
  254.     addiu   $s1, $zero, 2
  255.     div     $s2, $s1
  256.     mflo    $s2
  257.     addiu   $s1, $zero, 1
  258.     sub     $s2, $s2, $s1
  259.     addiu   $s1, $sp, 8
  260.     lw      $s1, ($s1)
  261.     sll     $s2, $s2, 2
  262.     add     $s1, $s1, $s2
  263.     xor     $s0, $s0, $s1
  264.     sltiu   $s0, $s0, 1
  265.     beq     $s0, $zero, ifAlt_T13
  266.     addiu   $s0, $sp, 20
  267.     addiu   $s1, $sp, 4
  268.     lw      $s1, ($s1)
  269.     addiu   $s2, $zero, 1
  270.     add     $s1, $s1, $s2
  271.     addiu   $s2, $zero, 2
  272.     div     $s1, $s2
  273.     mflo    $s1
  274.     addiu   $s2, $zero, 1
  275.     sub     $s1, $s1, $s2
  276.     addiu   $s2, $sp, 12
  277.     lw      $s2, ($s2)
  278.     sll     $s1, $s1, 2
  279.     add     $s2, $s2, $s1
  280.     sw      $s2, ($s0)
  281.     add     $s0, $zero, $s2
  282.     j       ifEnd_T14
  283.     .globl ifAlt_T13
  284. ifAlt_T13:
  285.     addiu   $s0, $sp, 20
  286.     lw      $s2, ($s0)
  287.     addiu   $s2, $s2, 4
  288.     sw      $s2, ($s0)
  289.     add     $s0, $zero, $s2
  290.     .globl ifEnd_T14
  291. ifEnd_T14:
  292.     j       ifEnd_T12
  293.     .globl ifAlt_T11
  294. ifAlt_T11:
  295.     .globl ifEnd_T12
  296. ifEnd_T12:
  297.     j       ifEnd_T10
  298.     .globl ifAlt_T9
  299. ifAlt_T9:
  300.     addiu   $s0, $sp, 0
  301.     lw      $s0, ($s0)
  302.     addiu   $s2, $sp, 16
  303.     lw      $s2, ($s2)
  304.     sll     $s2, $s2, 2
  305.     add     $s0, $s0, $s2
  306.     addiu   $s2, $sp, 24
  307.     lw      $s2, ($s2)
  308.     lw      $s2, ($s2)
  309.     sw      $s2, ($s0)
  310.     add     $s0, $zero, $s2
  311.     addiu   $s0, $sp, 24
  312.     lw      $s0, ($s0)
  313.     addiu   $s2, $sp, 4
  314.     lw      $s2, ($s2)
  315.     addiu   $s1, $zero, 1
  316.     add     $s2, $s2, $s1
  317.     addiu   $s1, $zero, 2
  318.     div     $s2, $s1
  319.     mflo    $s2
  320.     addiu   $s1, $zero, 1
  321.     sub     $s2, $s2, $s1
  322.     addiu   $s1, $sp, 12
  323.     lw      $s1, ($s1)
  324.     sll     $s2, $s2, 2
  325.     add     $s1, $s1, $s2
  326.     xor     $s0, $s0, $s1
  327.     sltiu   $s0, $s0, 1
  328.     beq     $s0, $zero, ifAlt_T15
  329.     addiu   $s0, $sp, 24
  330.     addiu   $s1, $sp, 4
  331.     lw      $s1, ($s1)
  332.     addiu   $s2, $zero, 2
  333.     div     $s1, $s2
  334.     mflo    $s1
  335.     addiu   $s2, $zero, 1
  336.     sub     $s1, $s1, $s2
  337.     addiu   $s2, $sp, 8
  338.     lw      $s2, ($s2)
  339.     sll     $s1, $s1, 2
  340.     add     $s2, $s2, $s1
  341.     sw      $s2, ($s0)
  342.     add     $s0, $zero, $s2
  343.     j       ifEnd_T16
  344.     .globl ifAlt_T15
  345. ifAlt_T15:
  346.     addiu   $s0, $sp, 24
  347.     lw      $s2, ($s0)
  348.     addiu   $s2, $s2, 4
  349.     sw      $s2, ($s0)
  350.     add     $s0, $zero, $s2
  351.     .globl ifEnd_T16
  352. ifEnd_T16:
  353.     .globl ifEnd_T10
  354. ifEnd_T10:
  355.     addiu   $s0, $sp, 16
  356.     lw      $s2, ($s0)
  357.     add     $s1, $zero, $s2
  358.     addiu   $s2, $s2, 1
  359.     sw      $s2, ($s0)
  360.     add     $s0, $zero, $s1
  361.     .globl whileEnd_T7
  362. whileEnd_T7:
  363.     addiu   $s0, $sp, 16
  364.     lw      $s0, ($s0)
  365.     addiu   $s2, $sp, 4
  366.     lw      $s2, ($s2)
  367.     slt     $s0, $s0, $s2
  368.     bne     $s0, $zero, whileLoop_T6
  369.     j       ifEnd_T1
  370.     .globl ifAlt_T0
  371. ifAlt_T0:
  372.     .globl ifEnd_T1
  373. ifEnd_T1:
  374.     .globl MergeSort_end
  375. MergeSort_end:
  376.     add     $v0, $zero, $s0
  377.     lw      $ra, 28($sp)
  378.     addiu   $sp, $sp, 32
  379.     lw      $s0, ($sp)
  380.     lw      $s1, 4($sp)
  381.     lw      $s2, 8($sp)
  382.     lw      $s3, 12($sp)
  383.     lw      $s4, 16($sp)
  384.     lw      $s5, 20($sp)
  385.     lw      $s6, 24($sp)
  386.     lw      $s7, 28($sp)
  387.     addiu   $sp, $sp, 32
  388.     jr      $ra
  389.     .globl main
  390. main:
  391.     addiu   $sp, $sp, -32
  392.     sw      $s0, ($sp)
  393.     sw      $s1, 4($sp)
  394.     sw      $s2, 8($sp)
  395.     sw      $s3, 12($sp)
  396.     sw      $s4, 16($sp)
  397.     sw      $s5, 20($sp)
  398.     sw      $s6, 24($sp)
  399.     sw      $s7, 28($sp)
  400.     addiu   $sp, $sp, -16
  401.     sw      $ra, 12($sp)
  402.     addiu   $s0, $sp, 0
  403.     addiu   $s2, $zero, 5
  404.     sw      $s2, ($s0)
  405.     add     $s0, $zero, $s2
  406.     addiu   $s0, $sp, 4
  407.     addiu   $a0, $sp, 0
  408.     lw      $a0, ($a0)
  409.     addiu   $s2, $zero, 4
  410.     mul     $a0, $a0, $s2
  411.     jal     malloc
  412.     add     $s2, $zero, $v0
  413.     sw      $s2, ($s0)
  414.     add     $s0, $zero, $s2
  415.     addiu   $s0, $sp, 4
  416.     lw      $s0, ($s0)
  417.     addiu   $s2, $zero, 0
  418.     sll     $s2, $s2, 2
  419.     add     $s0, $s0, $s2
  420.     addiu   $s2, $zero, 42
  421.     sw      $s2, ($s0)
  422.     add     $s0, $zero, $s2
  423.     addiu   $s0, $sp, 4
  424.     lw      $s0, ($s0)
  425.     addiu   $s2, $zero, 1
  426.     sll     $s2, $s2, 2
  427.     add     $s0, $s0, $s2
  428.     addiu   $s2, $zero, 1
  429.     sw      $s2, ($s0)
  430.     add     $s0, $zero, $s2
  431.     addiu   $s0, $sp, 4
  432.     lw      $s0, ($s0)
  433.     addiu   $s2, $zero, 2
  434.     sll     $s2, $s2, 2
  435.     add     $s0, $s0, $s2
  436.     addiu   $s2, $zero, 7
  437.     sw      $s2, ($s0)
  438.     add     $s0, $zero, $s2
  439.     addiu   $s0, $sp, 4
  440.     lw      $s0, ($s0)
  441.     addiu   $s2, $zero, 3
  442.     sll     $s2, $s2, 2
  443.     add     $s0, $s0, $s2
  444.     addiu   $s2, $zero, 3
  445.     sw      $s2, ($s0)
  446.     add     $s0, $zero, $s2
  447.     addiu   $s0, $sp, 4
  448.     lw      $s0, ($s0)
  449.     addiu   $s2, $zero, 4
  450.     sll     $s2, $s2, 2
  451.     add     $s0, $s0, $s2
  452.     addiu   $s2, $zero, 37
  453.     sw      $s2, ($s0)
  454.     add     $s0, $zero, $s2
  455.     addiu   $a0, $sp, 4
  456.     lw      $a0, ($a0)
  457.     addiu   $a1, $sp, 0
  458.     lw      $a1, ($a1)
  459.     jal     MergeSort
  460.     add     $s0, $zero, $v0
  461.     addiu   $s0, $sp, 8
  462.     addiu   $s2, $zero, 0
  463.     sw      $s2, ($s0)
  464.     add     $s0, $zero, $s2
  465.     j       whileEnd_T18
  466.     .globl whileLoop_T17
  467. whileLoop_T17:
  468.     addiu   $a0, $sp, 4
  469.     lw      $a0, ($a0)
  470.     addiu   $s0, $sp, 8
  471.     lw      $s0, ($s0)
  472.     sll     $s0, $s0, 2
  473.     add     $a0, $a0, $s0
  474.     lw      $a0, ($a0)
  475.     jal     print_integer
  476.     add     $s0, $zero, $v0
  477.     addiu   $a0, $zero, 10
  478.     jal     print_char
  479.     add     $s0, $zero, $v0
  480.     addiu   $s0, $sp, 8
  481.     lw      $s2, ($s0)
  482.     add     $s1, $zero, $s2
  483.     addiu   $s2, $s2, 1
  484.     sw      $s2, ($s0)
  485.     add     $s0, $zero, $s1
  486.     .globl whileEnd_T18
  487. whileEnd_T18:
  488.     addiu   $s0, $sp, 8
  489.     lw      $s0, ($s0)
  490.     addiu   $s2, $sp, 0
  491.     lw      $s2, ($s2)
  492.     slt     $s0, $s0, $s2
  493.     bne     $s0, $zero, whileLoop_T17
  494.     addiu   $s0, $zero, 42
  495.     j       main_end
  496.     .globl main_end
  497. main_end:
  498.     add     $v0, $zero, $s0
  499.     lw      $ra, 12($sp)
  500.     addiu   $sp, $sp, 16
  501.     lw      $s0, ($sp)
  502.     lw      $s1, 4($sp)
  503.     lw      $s2, 8($sp)
  504.     lw      $s3, 12($sp)
  505.     lw      $s4, 16($sp)
  506.     lw      $s5, 20($sp)
  507.     lw      $s6, 24($sp)
  508.     lw      $s7, 28($sp)
  509.     addiu   $sp, $sp, 32
  510.     jr      $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement