✨
This commit is contained in:
@ -62,13 +62,9 @@ let rec removeDeadBindingsInExp (e : TypedExp) : (bool * DBRtab * TypedExp) =
|
|||||||
ArrayLit (es', t, pos) )
|
ArrayLit (es', t, pos) )
|
||||||
(* ToDO: Task 3: implement the cases of `Var`, `Index` and `Let` expressions below *)
|
(* ToDO: Task 3: implement the cases of `Var`, `Index` and `Let` expressions below *)
|
||||||
| Var (name, pos) ->
|
| Var (name, pos) ->
|
||||||
(* Task 3, Hints for the `Var` case:
|
let symtab = SymTab.empty()
|
||||||
- 1st element of result tuple: can a variable name contain IO?
|
let symtab = recordUse name symtab
|
||||||
- 2nd element of result tuple: you have discovered a name, hence
|
(false, symtab, Var(name, pos))
|
||||||
you need to record it in a new symbol table.
|
|
||||||
- 3rd element of the tuple: should be the optimised expression.
|
|
||||||
*)
|
|
||||||
failwith "Unimplemented removeDeadBindingsInExp for Var"
|
|
||||||
| Plus (x, y, pos) ->
|
| Plus (x, y, pos) ->
|
||||||
let (xios, xuses, x') = removeDeadBindingsInExp x
|
let (xios, xuses, x') = removeDeadBindingsInExp x
|
||||||
let (yios, yuses, y') = removeDeadBindingsInExp y
|
let (yios, yuses, y') = removeDeadBindingsInExp y
|
||||||
@ -113,12 +109,9 @@ let rec removeDeadBindingsInExp (e : TypedExp) : (bool * DBRtab * TypedExp) =
|
|||||||
List.fold SymTab.combine (SymTab.empty()) uses,
|
List.fold SymTab.combine (SymTab.empty()) uses,
|
||||||
Apply (fname, args', pos))
|
Apply (fname, args', pos))
|
||||||
| Index (name, e, t, pos) ->
|
| Index (name, e, t, pos) ->
|
||||||
(* Task 3, `Index` case: is similar to the `Var` case, except that,
|
let (eio, symtab, e') = removeDeadBindingsInExp e
|
||||||
additionally, you also need to recursively optimize the index
|
let symtab = recordUse name symtab
|
||||||
expression `e` and to propagate its results (in addition
|
(eio, symtab, Index(name, e', t, pos))
|
||||||
to recording the use of `name`).
|
|
||||||
*)
|
|
||||||
failwith "Unimplemented removeDeadBindingsInExp for Index"
|
|
||||||
|
|
||||||
| Let (Dec (name, e, decpos), body, pos) ->
|
| Let (Dec (name, e, decpos), body, pos) ->
|
||||||
(* Task 3, Hints for the `Let` case:
|
(* Task 3, Hints for the `Let` case:
|
||||||
@ -144,7 +137,16 @@ let rec removeDeadBindingsInExp (e : TypedExp) : (bool * DBRtab * TypedExp) =
|
|||||||
Let-expression.
|
Let-expression.
|
||||||
|
|
||||||
*)
|
*)
|
||||||
failwith "Unimplemented removeDeadBindingsInExp for Let"
|
let (eio, esymtab, e') = removeDeadBindingsInExp e
|
||||||
|
let (bodyio, bodysymtab, body') = removeDeadBindingsInExp body
|
||||||
|
if ((isUsed name bodysymtab) || eio) then
|
||||||
|
let io = eio || bodyio
|
||||||
|
let symtab = SymTab.combine esymtab bodysymtab
|
||||||
|
let exp = Let (Dec (name, e', decpos), body', pos)
|
||||||
|
(io, symtab, exp)
|
||||||
|
else
|
||||||
|
(bodyio, bodysymtab, body')
|
||||||
|
|
||||||
| Iota (e, pos) ->
|
| Iota (e, pos) ->
|
||||||
let (io, uses, e') = removeDeadBindingsInExp e
|
let (io, uses, e') = removeDeadBindingsInExp e
|
||||||
(io,
|
(io,
|
||||||
|
@ -17,29 +17,6 @@
|
|||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
# Function f
|
|
||||||
f:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_x_1_,$2,0
|
|
||||||
# ori _param_y_2_,$3,0
|
|
||||||
ori $4, $2, 0
|
|
||||||
# was: ori _plus_L_6_, _param_x_1_, 0
|
|
||||||
ori $2, $0, 2
|
|
||||||
# was: ori _plus_R_7_, $0, 2
|
|
||||||
add $2, $4, $2
|
|
||||||
# was: add _times_L_4_, _plus_L_6_, _plus_R_7_
|
|
||||||
# ori _minus_L_8_,_param_y_2_,0
|
|
||||||
ori $4, $0, 2
|
|
||||||
# was: ori _minus_R_9_, $0, 2
|
|
||||||
sub $3, $3, $4
|
|
||||||
# was: sub _times_R_5_, _minus_L_8_, _minus_R_9_
|
|
||||||
mul $2, $2, $3
|
|
||||||
# was: mul _fres_3_, _times_L_4_, _times_R_5_
|
|
||||||
# ori $2,_fres_3_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function main
|
# Function main
|
||||||
main:
|
main:
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
@ -47,20 +24,18 @@ main:
|
|||||||
addi $29, $29, -12
|
addi $29, $29, -12
|
||||||
jal getint
|
jal getint
|
||||||
# was: jal getint, $2
|
# was: jal getint, $2
|
||||||
# ori _letBind_11_,$2,0
|
# ori _letBind_2_,$2,0
|
||||||
# ori _letBind_13_,_letBind_11_,0
|
ori $2, $0, 0
|
||||||
ori $0, $0, 2
|
# was: ori _letBind_3_, $0, 0
|
||||||
# was: ori _letBind_14_, $0, 2
|
# ori _tmp_4_,_letBind_3_,0
|
||||||
ori $16, $0, 0
|
ori $16, $2, 0
|
||||||
# was: ori _letBind_12_, $0, 0
|
# was: ori _mainres_1_, _tmp_4_, 0
|
||||||
# ori _tmp_15_,_letBind_12_,0
|
|
||||||
# ori _mainres_10_,_tmp_15_,0
|
|
||||||
ori $2, $16, 0
|
ori $2, $16, 0
|
||||||
# was: ori $2, _mainres_10_, 0
|
# was: ori $2, _mainres_1_, 0
|
||||||
jal putint
|
jal putint
|
||||||
# was: jal putint, $2
|
# was: jal putint, $2
|
||||||
ori $2, $16, 0
|
ori $2, $16, 0
|
||||||
# was: ori $2, _mainres_10_, 0
|
# was: ori $2, _mainres_1_, 0
|
||||||
addi $29, $29, 12
|
addi $29, $29, 12
|
||||||
lw $16, -8($29)
|
lw $16, -8($29)
|
||||||
lw $31, -4($29)
|
lw $31, -4($29)
|
||||||
|
@ -22,75 +22,71 @@ main:
|
|||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
sw $16, -8($29)
|
sw $16, -8($29)
|
||||||
addi $29, $29, -12
|
addi $29, $29, -12
|
||||||
ori $0, $0, 40
|
|
||||||
# was: ori _letBind_2_, $0, 40
|
|
||||||
ori $3, $0, 40
|
ori $3, $0, 40
|
||||||
# was: ori _size_reg_4_, $0, 40
|
# was: ori _size_reg_3_, $0, 40
|
||||||
bgez $3, _safe_lab_5_
|
bgez $3, _safe_lab_4_
|
||||||
# was: bgez _size_reg_4_, _safe_lab_5_
|
# was: bgez _size_reg_3_, _safe_lab_4_
|
||||||
ori $5, $0, 3
|
ori $5, $0, 3
|
||||||
# was: ori $5, $0, 3
|
# was: ori $5, $0, 3
|
||||||
la $6, _Msg_IllegalArraySize_
|
la $6, _Msg_IllegalArraySize_
|
||||||
# was: la $6, _Msg_IllegalArraySize_
|
# was: la $6, _Msg_IllegalArraySize_
|
||||||
j _RuntimeError_
|
j _RuntimeError_
|
||||||
_safe_lab_5_:
|
_safe_lab_4_:
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $2, $28, 0
|
ori $2, $28, 0
|
||||||
# was: ori _letBind_3_, $28, 0
|
# was: ori _letBind_2_, $28, 0
|
||||||
sll $4, $3, 2
|
sll $4, $3, 2
|
||||||
# was: sll _tmp_11_, _size_reg_4_, 2
|
# was: sll _tmp_10_, _size_reg_3_, 2
|
||||||
addi $4, $4, 4
|
addi $4, $4, 4
|
||||||
# was: addi _tmp_11_, _tmp_11_, 4
|
# was: addi _tmp_10_, _tmp_10_, 4
|
||||||
add $28, $28, $4
|
add $28, $28, $4
|
||||||
# was: add $28, $28, _tmp_11_
|
# was: add $28, $28, _tmp_10_
|
||||||
sw $3, 0($2)
|
sw $3, 0($2)
|
||||||
# was: sw _size_reg_4_, 0(_letBind_3_)
|
# was: sw _size_reg_3_, 0(_letBind_2_)
|
||||||
addi $6, $2, 4
|
addi $6, $2, 4
|
||||||
# was: addi _addr_reg_6_, _letBind_3_, 4
|
# was: addi _addr_reg_5_, _letBind_2_, 4
|
||||||
ori $5, $0, 0
|
ori $5, $0, 0
|
||||||
# was: ori _i_reg_7_, $0, 0
|
# was: ori _i_reg_6_, $0, 0
|
||||||
_loop_beg_8_:
|
_loop_beg_7_:
|
||||||
sub $4, $5, $3
|
sub $4, $5, $3
|
||||||
# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_
|
# was: sub _tmp_reg_9_, _i_reg_6_, _size_reg_3_
|
||||||
bgez $4, _loop_end_9_
|
bgez $4, _loop_end_8_
|
||||||
# was: bgez _tmp_reg_10_, _loop_end_9_
|
# was: bgez _tmp_reg_9_, _loop_end_8_
|
||||||
sw $5, 0($6)
|
sw $5, 0($6)
|
||||||
# was: sw _i_reg_7_, 0(_addr_reg_6_)
|
# was: sw _i_reg_6_, 0(_addr_reg_5_)
|
||||||
addi $6, $6, 4
|
addi $6, $6, 4
|
||||||
# was: addi _addr_reg_6_, _addr_reg_6_, 4
|
# was: addi _addr_reg_5_, _addr_reg_5_, 4
|
||||||
addi $5, $5, 1
|
addi $5, $5, 1
|
||||||
# was: addi _i_reg_7_, _i_reg_7_, 1
|
# was: addi _i_reg_6_, _i_reg_6_, 1
|
||||||
j _loop_beg_8_
|
j _loop_beg_7_
|
||||||
_loop_end_9_:
|
_loop_end_8_:
|
||||||
ori $0, $0, 4
|
|
||||||
# was: ori _letBind_12_, $0, 4
|
|
||||||
ori $4, $0, 4
|
ori $4, $0, 4
|
||||||
# was: ori _arr_ind_14_, $0, 4
|
# was: ori _arr_ind_12_, $0, 4
|
||||||
addi $3, $2, 4
|
addi $3, $2, 4
|
||||||
# was: addi _arr_reg_15_, _letBind_3_, 4
|
# was: addi _arr_reg_13_, _letBind_2_, 4
|
||||||
lw $2, 0($2)
|
lw $2, 0($2)
|
||||||
# was: lw _size_reg_16_, 0(_letBind_3_)
|
# was: lw _size_reg_14_, 0(_letBind_2_)
|
||||||
bgez $4, _safe_lab_19_
|
bgez $4, _safe_lab_17_
|
||||||
# was: bgez _arr_ind_14_, _safe_lab_19_
|
# was: bgez _arr_ind_12_, _safe_lab_17_
|
||||||
_error_lab_18_:
|
_error_lab_16_:
|
||||||
ori $5, $0, 5
|
ori $5, $0, 5
|
||||||
# was: ori $5, $0, 5
|
# was: ori $5, $0, 5
|
||||||
la $6, _Msg_IllegalIndex_
|
la $6, _Msg_IllegalIndex_
|
||||||
# was: la $6, _Msg_IllegalIndex_
|
# was: la $6, _Msg_IllegalIndex_
|
||||||
j _RuntimeError_
|
j _RuntimeError_
|
||||||
_safe_lab_19_:
|
_safe_lab_17_:
|
||||||
sub $2, $4, $2
|
sub $2, $4, $2
|
||||||
# was: sub _tmp_reg_17_, _arr_ind_14_, _size_reg_16_
|
# was: sub _tmp_reg_15_, _arr_ind_12_, _size_reg_14_
|
||||||
bgez $2, _error_lab_18_
|
bgez $2, _error_lab_16_
|
||||||
# was: bgez _tmp_reg_17_, _error_lab_18_
|
# was: bgez _tmp_reg_15_, _error_lab_16_
|
||||||
sll $4, $4, 2
|
sll $4, $4, 2
|
||||||
# was: sll _arr_ind_14_, _arr_ind_14_, 2
|
# was: sll _arr_ind_12_, _arr_ind_12_, 2
|
||||||
add $3, $3, $4
|
add $3, $3, $4
|
||||||
# was: add _arr_reg_15_, _arr_reg_15_, _arr_ind_14_
|
# was: add _arr_reg_13_, _arr_reg_13_, _arr_ind_12_
|
||||||
lw $16, 0($3)
|
lw $16, 0($3)
|
||||||
# was: lw _letBind_13_, 0(_arr_reg_15_)
|
# was: lw _letBind_11_, 0(_arr_reg_13_)
|
||||||
# ori _tmp_20_,_letBind_13_,0
|
# ori _tmp_18_,_letBind_11_,0
|
||||||
# ori _mainres_1_,_tmp_20_,0
|
# ori _mainres_1_,_tmp_18_,0
|
||||||
ori $2, $16, 0
|
ori $2, $16, 0
|
||||||
# was: ori $2, _mainres_1_, 0
|
# was: ori $2, _mainres_1_, 0
|
||||||
jal putint
|
jal putint
|
||||||
|
@ -28,49 +28,24 @@ main:
|
|||||||
# ori _times_L_4_,_letBind_2_,0
|
# ori _times_L_4_,_letBind_2_,0
|
||||||
ori $3, $2, 0
|
ori $3, $2, 0
|
||||||
# was: ori _times_R_5_, _letBind_2_, 0
|
# was: ori _times_R_5_, _letBind_2_, 0
|
||||||
mul $4, $2, $3
|
mul $0, $2, $3
|
||||||
# was: mul _letBind_3_, _times_L_4_, _times_R_5_
|
# was: mul _letBind_3_, _times_L_4_, _times_R_5_
|
||||||
# ori _plus_L_9_,_letBind_3_,0
|
# ori _plus_L_7_,_letBind_2_,0
|
||||||
ori $3, $0, 3
|
|
||||||
# was: ori _plus_R_10_, $0, 3
|
|
||||||
add $3, $4, $3
|
|
||||||
# was: add _letBind_8_, _plus_L_9_, _plus_R_10_
|
|
||||||
# ori _plus_L_12_,_letBind_8_,0
|
|
||||||
# ori _plus_R_13_,_letBind_2_,0
|
|
||||||
add $3, $3, $2
|
|
||||||
# was: add _letBind_11_, _plus_L_12_, _plus_R_13_
|
|
||||||
# ori _plus_L_14_,_letBind_11_,0
|
|
||||||
ori $4, $0, 8
|
|
||||||
# was: ori _plus_R_15_, $0, 8
|
|
||||||
add $0, $3, $4
|
|
||||||
# was: add _letBind_7_, _plus_L_14_, _plus_R_15_
|
|
||||||
# ori _letBind_6_,_letBind_2_,0
|
|
||||||
ori $4, $2, 0
|
|
||||||
# was: ori _plus_L_17_, _letBind_2_, 0
|
|
||||||
ori $3, $0, 2
|
ori $3, $0, 2
|
||||||
# was: ori _plus_R_18_, $0, 2
|
# was: ori _plus_R_8_, $0, 2
|
||||||
add $3, $4, $3
|
add $3, $2, $3
|
||||||
# was: add _letBind_16_, _plus_L_17_, _plus_R_18_
|
# was: add _letBind_6_, _plus_L_7_, _plus_R_8_
|
||||||
# ori _plus_L_22_,_letBind_16_,0
|
# ori _plus_L_11_,_letBind_2_,0
|
||||||
ori $4, $0, 2
|
|
||||||
# was: ori _plus_R_23_, $0, 2
|
|
||||||
add $4, $3, $4
|
|
||||||
# was: add _plus_L_20_, _plus_L_22_, _plus_R_23_
|
|
||||||
ori $5, $2, 0
|
|
||||||
# was: ori _plus_R_21_, _letBind_6_, 0
|
|
||||||
add $0, $4, $5
|
|
||||||
# was: add _letBind_19_, _plus_L_20_, _plus_R_21_
|
|
||||||
# ori _plus_L_26_,_letBind_2_,0
|
|
||||||
ori $4, $0, 3
|
ori $4, $0, 3
|
||||||
# was: ori _plus_R_27_, $0, 3
|
# was: ori _plus_R_12_, $0, 3
|
||||||
add $2, $2, $4
|
add $2, $2, $4
|
||||||
# was: add _letBind_25_, _plus_L_26_, _plus_R_27_
|
# was: add _letBind_10_, _plus_L_11_, _plus_R_12_
|
||||||
# ori _times_L_28_,_letBind_16_,0
|
# ori _times_L_13_,_letBind_6_,0
|
||||||
# ori _times_R_29_,_letBind_25_,0
|
# ori _times_R_14_,_letBind_10_,0
|
||||||
mul $16, $3, $2
|
mul $16, $3, $2
|
||||||
# was: mul _letBind_24_, _times_L_28_, _times_R_29_
|
# was: mul _letBind_9_, _times_L_13_, _times_R_14_
|
||||||
# ori _tmp_30_,_letBind_24_,0
|
# ori _tmp_15_,_letBind_9_,0
|
||||||
# ori _mainres_1_,_tmp_30_,0
|
# ori _mainres_1_,_tmp_15_,0
|
||||||
ori $2, $16, 0
|
ori $2, $16, 0
|
||||||
# was: ori $2, _mainres_1_, 0
|
# was: ori $2, _mainres_1_, 0
|
||||||
jal putint
|
jal putint
|
||||||
|
@ -17,406 +17,341 @@
|
|||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
# Function write_int
|
|
||||||
write_int:
|
|
||||||
sw $31, -4($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -12
|
|
||||||
# ori _param_x_1_,$2,0
|
|
||||||
ori $16, $2, 0
|
|
||||||
# was: ori _tmp_3_, _param_x_1_, 0
|
|
||||||
# ori _write_intres_2_,_tmp_3_,0
|
|
||||||
ori $2, $16, 0
|
|
||||||
# was: ori $2, _write_intres_2_, 0
|
|
||||||
jal putint
|
|
||||||
# was: jal putint, $2
|
|
||||||
ori $2, $16, 0
|
|
||||||
# was: ori $2, _write_intres_2_, 0
|
|
||||||
addi $29, $29, 12
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function write_1darr
|
|
||||||
write_1darr:
|
|
||||||
sw $31, -4($29)
|
|
||||||
sw $20, -24($29)
|
|
||||||
sw $19, -20($29)
|
|
||||||
sw $18, -16($29)
|
|
||||||
sw $17, -12($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -28
|
|
||||||
# ori _param_x_4_,$2,0
|
|
||||||
# map
|
|
||||||
# ori _arr_reg_7_,_param_x_4_,0
|
|
||||||
lw $16, 0($2)
|
|
||||||
# was: lw _size_reg_6_, 0(_arr_reg_7_)
|
|
||||||
# dynalloc
|
|
||||||
ori $17, $28, 0
|
|
||||||
# was: ori _write_1darrres_5_, $28, 0
|
|
||||||
sll $3, $16, 2
|
|
||||||
# was: sll _tmp_16_, _size_reg_6_, 2
|
|
||||||
addi $3, $3, 4
|
|
||||||
# was: addi _tmp_16_, _tmp_16_, 4
|
|
||||||
add $28, $28, $3
|
|
||||||
# was: add $28, $28, _tmp_16_
|
|
||||||
sw $16, 0($17)
|
|
||||||
# was: sw _size_reg_6_, 0(_write_1darrres_5_)
|
|
||||||
addi $18, $17, 4
|
|
||||||
# was: addi _addr_reg_10_, _write_1darrres_5_, 4
|
|
||||||
ori $19, $0, 0
|
|
||||||
# was: ori _i_reg_11_, $0, 0
|
|
||||||
addi $20, $2, 4
|
|
||||||
# was: addi _elem_reg_8_, _arr_reg_7_, 4
|
|
||||||
_loop_beg_12_:
|
|
||||||
sub $2, $19, $16
|
|
||||||
# was: sub _tmp_reg_14_, _i_reg_11_, _size_reg_6_
|
|
||||||
bgez $2, _loop_end_13_
|
|
||||||
# was: bgez _tmp_reg_14_, _loop_end_13_
|
|
||||||
lw $2, 0($20)
|
|
||||||
# was: lw _res_reg_9_, 0(_elem_reg_8_)
|
|
||||||
addi $20, $20, 4
|
|
||||||
# was: addi _elem_reg_8_, _elem_reg_8_, 4
|
|
||||||
# ori $2,_res_reg_9_,0
|
|
||||||
jal write_int
|
|
||||||
# was: jal write_int, $2
|
|
||||||
# ori _tmp_reg_15_,$2,0
|
|
||||||
# ori _res_reg_9_,_tmp_reg_15_,0
|
|
||||||
sw $2, 0($18)
|
|
||||||
# was: sw _res_reg_9_, 0(_addr_reg_10_)
|
|
||||||
addi $18, $18, 4
|
|
||||||
# was: addi _addr_reg_10_, _addr_reg_10_, 4
|
|
||||||
addi $19, $19, 1
|
|
||||||
# was: addi _i_reg_11_, _i_reg_11_, 1
|
|
||||||
j _loop_beg_12_
|
|
||||||
_loop_end_13_:
|
|
||||||
ori $2, $17, 0
|
|
||||||
# was: ori $2, _write_1darrres_5_, 0
|
|
||||||
addi $29, $29, 28
|
|
||||||
lw $20, -24($29)
|
|
||||||
lw $19, -20($29)
|
|
||||||
lw $18, -16($29)
|
|
||||||
lw $17, -12($29)
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function write_2darr
|
|
||||||
write_2darr:
|
|
||||||
sw $31, -4($29)
|
|
||||||
sw $20, -24($29)
|
|
||||||
sw $19, -20($29)
|
|
||||||
sw $18, -16($29)
|
|
||||||
sw $17, -12($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -28
|
|
||||||
# ori _param_x_17_,$2,0
|
|
||||||
# map
|
|
||||||
# ori _arr_reg_20_,_param_x_17_,0
|
|
||||||
lw $16, 0($2)
|
|
||||||
# was: lw _size_reg_19_, 0(_arr_reg_20_)
|
|
||||||
# dynalloc
|
|
||||||
ori $17, $28, 0
|
|
||||||
# was: ori _write_2darrres_18_, $28, 0
|
|
||||||
sll $3, $16, 2
|
|
||||||
# was: sll _tmp_29_, _size_reg_19_, 2
|
|
||||||
addi $3, $3, 4
|
|
||||||
# was: addi _tmp_29_, _tmp_29_, 4
|
|
||||||
add $28, $28, $3
|
|
||||||
# was: add $28, $28, _tmp_29_
|
|
||||||
sw $16, 0($17)
|
|
||||||
# was: sw _size_reg_19_, 0(_write_2darrres_18_)
|
|
||||||
addi $18, $17, 4
|
|
||||||
# was: addi _addr_reg_23_, _write_2darrres_18_, 4
|
|
||||||
ori $19, $0, 0
|
|
||||||
# was: ori _i_reg_24_, $0, 0
|
|
||||||
addi $20, $2, 4
|
|
||||||
# was: addi _elem_reg_21_, _arr_reg_20_, 4
|
|
||||||
_loop_beg_25_:
|
|
||||||
sub $2, $19, $16
|
|
||||||
# was: sub _tmp_reg_27_, _i_reg_24_, _size_reg_19_
|
|
||||||
bgez $2, _loop_end_26_
|
|
||||||
# was: bgez _tmp_reg_27_, _loop_end_26_
|
|
||||||
lw $2, 0($20)
|
|
||||||
# was: lw _res_reg_22_, 0(_elem_reg_21_)
|
|
||||||
addi $20, $20, 4
|
|
||||||
# was: addi _elem_reg_21_, _elem_reg_21_, 4
|
|
||||||
# ori $2,_res_reg_22_,0
|
|
||||||
jal write_1darr
|
|
||||||
# was: jal write_1darr, $2
|
|
||||||
# ori _tmp_reg_28_,$2,0
|
|
||||||
# ori _res_reg_22_,_tmp_reg_28_,0
|
|
||||||
sw $2, 0($18)
|
|
||||||
# was: sw _res_reg_22_, 0(_addr_reg_23_)
|
|
||||||
addi $18, $18, 4
|
|
||||||
# was: addi _addr_reg_23_, _addr_reg_23_, 4
|
|
||||||
addi $19, $19, 1
|
|
||||||
# was: addi _i_reg_24_, _i_reg_24_, 1
|
|
||||||
j _loop_beg_25_
|
|
||||||
_loop_end_26_:
|
|
||||||
ori $2, $17, 0
|
|
||||||
# was: ori $2, _write_2darrres_18_, 0
|
|
||||||
addi $29, $29, 28
|
|
||||||
lw $20, -24($29)
|
|
||||||
lw $19, -20($29)
|
|
||||||
lw $18, -16($29)
|
|
||||||
lw $17, -12($29)
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function even
|
|
||||||
even:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_a_30_,$2,0
|
|
||||||
# ori _divide_L_36_,_param_a_30_,0
|
|
||||||
ori $3, $0, 2
|
|
||||||
# was: ori _divide_R_37_, $0, 2
|
|
||||||
div $4, $2, $3
|
|
||||||
# was: div _times_L_34_, _divide_L_36_, _divide_R_37_
|
|
||||||
ori $3, $0, 2
|
|
||||||
# was: ori _times_R_35_, $0, 2
|
|
||||||
mul $3, $4, $3
|
|
||||||
# was: mul _eq_L_32_, _times_L_34_, _times_R_35_
|
|
||||||
# ori _eq_R_33_,_param_a_30_,0
|
|
||||||
ori $4, $0, 0
|
|
||||||
# was: ori _evenres_31_, $0, 0
|
|
||||||
bne $3, $2, _false_38_
|
|
||||||
# was: bne _eq_L_32_, _eq_R_33_, _false_38_
|
|
||||||
ori $4, $0, 1
|
|
||||||
# was: ori _evenres_31_, $0, 1
|
|
||||||
_false_38_:
|
|
||||||
ori $2, $4, 0
|
|
||||||
# was: ori $2, _evenres_31_, 0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function main
|
# Function main
|
||||||
main:
|
main:
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
sw $22, -32($29)
|
sw $25, -48($29)
|
||||||
sw $21, -28($29)
|
sw $24, -44($29)
|
||||||
sw $20, -24($29)
|
sw $23, -40($29)
|
||||||
sw $19, -20($29)
|
sw $22, -36($29)
|
||||||
sw $18, -16($29)
|
sw $21, -32($29)
|
||||||
sw $17, -12($29)
|
sw $20, -28($29)
|
||||||
sw $16, -8($29)
|
sw $19, -24($29)
|
||||||
addi $29, $29, -36
|
sw $18, -20($29)
|
||||||
|
sw $17, -16($29)
|
||||||
|
sw $16, -12($29)
|
||||||
|
addi $29, $29, -52
|
||||||
|
sw $2, 0($29)
|
||||||
|
# was: sw _fun_arg_res_85_, 0($29)
|
||||||
jal getint
|
jal getint
|
||||||
# was: jal getint, $2
|
# was: jal getint, $2
|
||||||
# ori _letBind_40_,$2,0
|
# ori _letBind_2_,$2,0
|
||||||
# map
|
# map
|
||||||
ori $3, $2, 0
|
ori $3, $2, 0
|
||||||
# was: ori _size_reg_46_, _letBind_40_, 0
|
# was: ori _size_reg_8_, _letBind_2_, 0
|
||||||
bgez $3, _safe_lab_47_
|
bgez $3, _safe_lab_9_
|
||||||
# was: bgez _size_reg_46_, _safe_lab_47_
|
# was: bgez _size_reg_8_, _safe_lab_9_
|
||||||
ori $5, $0, 11
|
ori $5, $0, 11
|
||||||
# was: ori $5, $0, 11
|
# was: ori $5, $0, 11
|
||||||
la $6, _Msg_IllegalArraySize_
|
la $6, _Msg_IllegalArraySize_
|
||||||
# was: la $6, _Msg_IllegalArraySize_
|
# was: la $6, _Msg_IllegalArraySize_
|
||||||
j _RuntimeError_
|
j _RuntimeError_
|
||||||
_safe_lab_47_:
|
_safe_lab_9_:
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $2, $28, 0
|
ori $2, $28, 0
|
||||||
# was: ori _arr_reg_43_, $28, 0
|
# was: ori _arr_reg_5_, $28, 0
|
||||||
sll $4, $3, 2
|
sll $4, $3, 2
|
||||||
# was: sll _tmp_53_, _size_reg_46_, 2
|
# was: sll _tmp_15_, _size_reg_8_, 2
|
||||||
addi $4, $4, 4
|
addi $4, $4, 4
|
||||||
# was: addi _tmp_53_, _tmp_53_, 4
|
# was: addi _tmp_15_, _tmp_15_, 4
|
||||||
add $28, $28, $4
|
add $28, $28, $4
|
||||||
# was: add $28, $28, _tmp_53_
|
# was: add $28, $28, _tmp_15_
|
||||||
sw $3, 0($2)
|
sw $3, 0($2)
|
||||||
# was: sw _size_reg_46_, 0(_arr_reg_43_)
|
# was: sw _size_reg_8_, 0(_arr_reg_5_)
|
||||||
addi $6, $2, 4
|
addi $5, $2, 4
|
||||||
# was: addi _addr_reg_48_, _arr_reg_43_, 4
|
# was: addi _addr_reg_10_, _arr_reg_5_, 4
|
||||||
ori $4, $0, 0
|
ori $6, $0, 0
|
||||||
# was: ori _i_reg_49_, $0, 0
|
# was: ori _i_reg_11_, $0, 0
|
||||||
_loop_beg_50_:
|
_loop_beg_12_:
|
||||||
sub $5, $4, $3
|
sub $4, $6, $3
|
||||||
# was: sub _tmp_reg_52_, _i_reg_49_, _size_reg_46_
|
# was: sub _tmp_reg_14_, _i_reg_11_, _size_reg_8_
|
||||||
bgez $5, _loop_end_51_
|
bgez $4, _loop_end_13_
|
||||||
# was: bgez _tmp_reg_52_, _loop_end_51_
|
# was: bgez _tmp_reg_14_, _loop_end_13_
|
||||||
sw $4, 0($6)
|
sw $6, 0($5)
|
||||||
# was: sw _i_reg_49_, 0(_addr_reg_48_)
|
# was: sw _i_reg_11_, 0(_addr_reg_10_)
|
||||||
addi $6, $6, 4
|
|
||||||
# was: addi _addr_reg_48_, _addr_reg_48_, 4
|
|
||||||
addi $4, $4, 1
|
|
||||||
# was: addi _i_reg_49_, _i_reg_49_, 1
|
|
||||||
j _loop_beg_50_
|
|
||||||
_loop_end_51_:
|
|
||||||
lw $3, 0($2)
|
|
||||||
# was: lw _size_reg_42_, 0(_arr_reg_43_)
|
|
||||||
# dynalloc
|
|
||||||
ori $4, $28, 0
|
|
||||||
# was: ori _letBind_41_, $28, 0
|
|
||||||
sll $5, $3, 2
|
|
||||||
# was: sll _tmp_70_, _size_reg_42_, 2
|
|
||||||
addi $5, $5, 4
|
addi $5, $5, 4
|
||||||
# was: addi _tmp_70_, _tmp_70_, 4
|
# was: addi _addr_reg_10_, _addr_reg_10_, 4
|
||||||
add $28, $28, $5
|
addi $6, $6, 1
|
||||||
# was: add $28, $28, _tmp_70_
|
# was: addi _i_reg_11_, _i_reg_11_, 1
|
||||||
sw $3, 0($4)
|
j _loop_beg_12_
|
||||||
# was: sw _size_reg_42_, 0(_letBind_41_)
|
_loop_end_13_:
|
||||||
addi $6, $4, 4
|
lw $5, 0($2)
|
||||||
# was: addi _addr_reg_54_, _letBind_41_, 4
|
# was: lw _size_reg_4_, 0(_arr_reg_5_)
|
||||||
ori $5, $0, 0
|
# dynalloc
|
||||||
# was: ori _i_reg_55_, $0, 0
|
ori $6, $28, 0
|
||||||
addi $7, $2, 4
|
# was: ori _letBind_3_, $28, 0
|
||||||
# was: addi _elem_reg_44_, _arr_reg_43_, 4
|
sll $3, $5, 2
|
||||||
_loop_beg_56_:
|
# was: sll _tmp_32_, _size_reg_4_, 2
|
||||||
sub $2, $5, $3
|
addi $3, $3, 4
|
||||||
# was: sub _tmp_reg_58_, _i_reg_55_, _size_reg_42_
|
# was: addi _tmp_32_, _tmp_32_, 4
|
||||||
bgez $2, _loop_end_57_
|
add $28, $28, $3
|
||||||
# was: bgez _tmp_reg_58_, _loop_end_57_
|
# was: add $28, $28, _tmp_32_
|
||||||
lw $2, 0($7)
|
sw $5, 0($6)
|
||||||
# was: lw _res_reg_45_, 0(_elem_reg_44_)
|
# was: sw _size_reg_4_, 0(_letBind_3_)
|
||||||
addi $7, $7, 4
|
addi $7, $6, 4
|
||||||
# was: addi _elem_reg_44_, _elem_reg_44_, 4
|
# was: addi _addr_reg_16_, _letBind_3_, 4
|
||||||
ori $8, $2, 0
|
ori $8, $0, 0
|
||||||
# was: ori _plus_L_61_, _res_reg_45_, 0
|
# was: ori _i_reg_17_, $0, 0
|
||||||
ori $2, $0, 2
|
addi $4, $2, 4
|
||||||
# was: ori _plus_R_62_, $0, 2
|
# was: addi _elem_reg_6_, _arr_reg_5_, 4
|
||||||
add $8, $8, $2
|
_loop_beg_18_:
|
||||||
# was: add _size_reg_60_, _plus_L_61_, _plus_R_62_
|
sub $2, $8, $5
|
||||||
bgez $8, _safe_lab_63_
|
# was: sub _tmp_reg_20_, _i_reg_17_, _size_reg_4_
|
||||||
# was: bgez _size_reg_60_, _safe_lab_63_
|
bgez $2, _loop_end_19_
|
||||||
|
# was: bgez _tmp_reg_20_, _loop_end_19_
|
||||||
|
lw $2, 0($4)
|
||||||
|
# was: lw _res_reg_7_, 0(_elem_reg_6_)
|
||||||
|
addi $4, $4, 4
|
||||||
|
# was: addi _elem_reg_6_, _elem_reg_6_, 4
|
||||||
|
# ori _plus_L_23_,_res_reg_7_,0
|
||||||
|
ori $3, $0, 2
|
||||||
|
# was: ori _plus_R_24_, $0, 2
|
||||||
|
add $2, $2, $3
|
||||||
|
# was: add _size_reg_22_, _plus_L_23_, _plus_R_24_
|
||||||
|
bgez $2, _safe_lab_25_
|
||||||
|
# was: bgez _size_reg_22_, _safe_lab_25_
|
||||||
ori $5, $0, 10
|
ori $5, $0, 10
|
||||||
# was: ori $5, $0, 10
|
# was: ori $5, $0, 10
|
||||||
la $6, _Msg_IllegalArraySize_
|
la $6, _Msg_IllegalArraySize_
|
||||||
# was: la $6, _Msg_IllegalArraySize_
|
# was: la $6, _Msg_IllegalArraySize_
|
||||||
j _RuntimeError_
|
j _RuntimeError_
|
||||||
_safe_lab_63_:
|
_safe_lab_25_:
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $2, $28, 0
|
ori $3, $28, 0
|
||||||
# was: ori _fun_arg_res_59_, $28, 0
|
# was: ori _fun_arg_res_21_, $28, 0
|
||||||
sll $9, $8, 2
|
sll $9, $2, 2
|
||||||
# was: sll _tmp_69_, _size_reg_60_, 2
|
# was: sll _tmp_31_, _size_reg_22_, 2
|
||||||
addi $9, $9, 4
|
addi $9, $9, 4
|
||||||
# was: addi _tmp_69_, _tmp_69_, 4
|
# was: addi _tmp_31_, _tmp_31_, 4
|
||||||
add $28, $28, $9
|
add $28, $28, $9
|
||||||
# was: add $28, $28, _tmp_69_
|
# was: add $28, $28, _tmp_31_
|
||||||
sw $8, 0($2)
|
sw $2, 0($3)
|
||||||
# was: sw _size_reg_60_, 0(_fun_arg_res_59_)
|
# was: sw _size_reg_22_, 0(_fun_arg_res_21_)
|
||||||
addi $10, $2, 4
|
addi $11, $3, 4
|
||||||
# was: addi _addr_reg_64_, _fun_arg_res_59_, 4
|
# was: addi _addr_reg_26_, _fun_arg_res_21_, 4
|
||||||
ori $11, $0, 0
|
ori $9, $0, 0
|
||||||
# was: ori _i_reg_65_, $0, 0
|
# was: ori _i_reg_27_, $0, 0
|
||||||
_loop_beg_66_:
|
_loop_beg_28_:
|
||||||
sub $9, $11, $8
|
sub $10, $9, $2
|
||||||
# was: sub _tmp_reg_68_, _i_reg_65_, _size_reg_60_
|
# was: sub _tmp_reg_30_, _i_reg_27_, _size_reg_22_
|
||||||
bgez $9, _loop_end_67_
|
bgez $10, _loop_end_29_
|
||||||
# was: bgez _tmp_reg_68_, _loop_end_67_
|
# was: bgez _tmp_reg_30_, _loop_end_29_
|
||||||
sw $11, 0($10)
|
sw $9, 0($11)
|
||||||
# was: sw _i_reg_65_, 0(_addr_reg_64_)
|
# was: sw _i_reg_27_, 0(_addr_reg_26_)
|
||||||
addi $10, $10, 4
|
addi $11, $11, 4
|
||||||
# was: addi _addr_reg_64_, _addr_reg_64_, 4
|
# was: addi _addr_reg_26_, _addr_reg_26_, 4
|
||||||
addi $11, $11, 1
|
addi $9, $9, 1
|
||||||
# was: addi _i_reg_65_, _i_reg_65_, 1
|
# was: addi _i_reg_27_, _i_reg_27_, 1
|
||||||
j _loop_beg_66_
|
j _loop_beg_28_
|
||||||
_loop_end_67_:
|
_loop_end_29_:
|
||||||
# ori _res_reg_45_,_fun_arg_res_59_,0
|
ori $2, $3, 0
|
||||||
sw $2, 0($6)
|
# was: ori _res_reg_7_, _fun_arg_res_21_, 0
|
||||||
# was: sw _res_reg_45_, 0(_addr_reg_54_)
|
sw $2, 0($7)
|
||||||
addi $6, $6, 4
|
# was: sw _res_reg_7_, 0(_addr_reg_16_)
|
||||||
# was: addi _addr_reg_54_, _addr_reg_54_, 4
|
addi $7, $7, 4
|
||||||
addi $5, $5, 1
|
# was: addi _addr_reg_16_, _addr_reg_16_, 4
|
||||||
# was: addi _i_reg_55_, _i_reg_55_, 1
|
addi $8, $8, 1
|
||||||
j _loop_beg_56_
|
# was: addi _i_reg_17_, _i_reg_17_, 1
|
||||||
_loop_end_57_:
|
j _loop_beg_18_
|
||||||
# ori _arr_reg_73_,_letBind_41_,0
|
_loop_end_19_:
|
||||||
lw $17, 0($4)
|
ori $7, $6, 0
|
||||||
# was: lw _size_reg_72_, 0(_arr_reg_73_)
|
# was: ori _arr_reg_35_, _letBind_3_, 0
|
||||||
|
lw $2, 0($7)
|
||||||
|
# was: lw _size_reg_34_, 0(_arr_reg_35_)
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $16, $28, 0
|
ori $3, $28, 0
|
||||||
# was: ori _letBind_71_, $28, 0
|
# was: ori _letBind_33_, $28, 0
|
||||||
sll $2, $17, 2
|
sll $4, $2, 2
|
||||||
# was: sll _tmp_96_, _size_reg_72_, 2
|
# was: sll _tmp_65_, _size_reg_34_, 2
|
||||||
addi $2, $2, 4
|
addi $4, $4, 4
|
||||||
# was: addi _tmp_96_, _tmp_96_, 4
|
# was: addi _tmp_65_, _tmp_65_, 4
|
||||||
add $28, $28, $2
|
add $28, $28, $4
|
||||||
# was: add $28, $28, _tmp_96_
|
# was: add $28, $28, _tmp_65_
|
||||||
sw $17, 0($16)
|
sw $2, 0($3)
|
||||||
# was: sw _size_reg_72_, 0(_letBind_71_)
|
# was: sw _size_reg_34_, 0(_letBind_33_)
|
||||||
addi $19, $16, 4
|
addi $6, $3, 4
|
||||||
# was: addi _addr_reg_77_, _letBind_71_, 4
|
# was: addi _addr_reg_39_, _letBind_33_, 4
|
||||||
ori $20, $0, 0
|
|
||||||
# was: ori _i_reg_78_, $0, 0
|
|
||||||
ori $18, $0, 0
|
|
||||||
# was: ori _j_reg_79_, $0, 0
|
|
||||||
addi $21, $4, 4
|
|
||||||
# was: addi _elem_reg_74_, _arr_reg_73_, 4
|
|
||||||
_loop_beg_80_:
|
|
||||||
sub $2, $20, $17
|
|
||||||
# was: sub _tmp_reg_83_, _i_reg_78_, _size_reg_72_
|
|
||||||
bgez $2, _loop_end_81_
|
|
||||||
# was: bgez _tmp_reg_83_, _loop_end_81_
|
|
||||||
lw $22, 0($21)
|
|
||||||
# was: lw _res_reg_75_, 0(_elem_reg_74_)
|
|
||||||
addi $21, $21, 4
|
|
||||||
# was: addi _elem_reg_74_, _elem_reg_74_, 4
|
|
||||||
ori $3, $22, 0
|
|
||||||
# was: ori _arr_reg_86_, _res_reg_75_, 0
|
|
||||||
lw $2, 0($3)
|
|
||||||
# was: lw _size_reg_87_, 0(_arr_reg_86_)
|
|
||||||
ori $6, $0, 0
|
|
||||||
# was: ori _letBind_85_, $0, 0
|
|
||||||
addi $3, $3, 4
|
|
||||||
# was: addi _arr_reg_86_, _arr_reg_86_, 4
|
|
||||||
ori $4, $0, 0
|
ori $4, $0, 0
|
||||||
# was: ori _ind_var_88_, $0, 0
|
# was: ori _i_reg_40_, $0, 0
|
||||||
_loop_beg_90_:
|
ori $5, $0, 0
|
||||||
sub $5, $4, $2
|
# was: ori _j_reg_41_, $0, 0
|
||||||
# was: sub _tmp_reg_89_, _ind_var_88_, _size_reg_87_
|
addi $7, $7, 4
|
||||||
bgez $5, _loop_end_91_
|
# was: addi _elem_reg_36_, _arr_reg_35_, 4
|
||||||
# was: bgez _tmp_reg_89_, _loop_end_91_
|
_loop_beg_42_:
|
||||||
lw $5, 0($3)
|
sub $8, $4, $2
|
||||||
# was: lw _tmp_reg_89_, 0(_arr_reg_86_)
|
# was: sub _tmp_reg_45_, _i_reg_40_, _size_reg_34_
|
||||||
addi $3, $3, 4
|
bgez $8, _loop_end_43_
|
||||||
# was: addi _arr_reg_86_, _arr_reg_86_, 4
|
# was: bgez _tmp_reg_45_, _loop_end_43_
|
||||||
# ori _plus_L_93_,_letBind_85_,0
|
lw $8, 0($7)
|
||||||
# ori _plus_R_94_,_tmp_reg_89_,0
|
# was: lw _res_reg_37_, 0(_elem_reg_36_)
|
||||||
add $6, $6, $5
|
addi $7, $7, 4
|
||||||
# was: add _fun_arg_res_92_, _plus_L_93_, _plus_R_94_
|
# was: addi _elem_reg_36_, _elem_reg_36_, 4
|
||||||
# ori _letBind_85_,_fun_arg_res_92_,0
|
ori $11, $8, 0
|
||||||
|
# was: ori _arr_reg_48_, _res_reg_37_, 0
|
||||||
|
lw $9, 0($11)
|
||||||
|
# was: lw _size_reg_49_, 0(_arr_reg_48_)
|
||||||
|
ori $13, $0, 0
|
||||||
|
# was: ori _letBind_47_, $0, 0
|
||||||
|
addi $11, $11, 4
|
||||||
|
# was: addi _arr_reg_48_, _arr_reg_48_, 4
|
||||||
|
ori $10, $0, 0
|
||||||
|
# was: ori _ind_var_50_, $0, 0
|
||||||
|
_loop_beg_52_:
|
||||||
|
sub $12, $10, $9
|
||||||
|
# was: sub _tmp_reg_51_, _ind_var_50_, _size_reg_49_
|
||||||
|
bgez $12, _loop_end_53_
|
||||||
|
# was: bgez _tmp_reg_51_, _loop_end_53_
|
||||||
|
lw $12, 0($11)
|
||||||
|
# was: lw _tmp_reg_51_, 0(_arr_reg_48_)
|
||||||
|
addi $11, $11, 4
|
||||||
|
# was: addi _arr_reg_48_, _arr_reg_48_, 4
|
||||||
|
# ori _plus_L_55_,_letBind_47_,0
|
||||||
|
# ori _plus_R_56_,_tmp_reg_51_,0
|
||||||
|
add $13, $13, $12
|
||||||
|
# was: add _fun_arg_res_54_, _plus_L_55_, _plus_R_56_
|
||||||
|
# ori _letBind_47_,_fun_arg_res_54_,0
|
||||||
|
addi $10, $10, 1
|
||||||
|
# was: addi _ind_var_50_, _ind_var_50_, 1
|
||||||
|
j _loop_beg_52_
|
||||||
|
_loop_end_53_:
|
||||||
|
ori $10, $13, 0
|
||||||
|
# was: ori _letBind_57_, _letBind_47_, 0
|
||||||
|
# ori _divide_L_62_,_letBind_57_,0
|
||||||
|
ori $9, $0, 2
|
||||||
|
# was: ori _divide_R_63_, $0, 2
|
||||||
|
div $10, $10, $9
|
||||||
|
# was: div _times_L_60_, _divide_L_62_, _divide_R_63_
|
||||||
|
ori $9, $0, 2
|
||||||
|
# was: ori _times_R_61_, $0, 2
|
||||||
|
mul $9, $10, $9
|
||||||
|
# was: mul _eq_L_58_, _times_L_60_, _times_R_61_
|
||||||
|
# ori _eq_R_59_,_letBind_47_,0
|
||||||
|
ori $10, $0, 0
|
||||||
|
# was: ori _fun_arg_res_46_, $0, 0
|
||||||
|
bne $9, $13, _false_64_
|
||||||
|
# was: bne _eq_L_58_, _eq_R_59_, _false_64_
|
||||||
|
ori $10, $0, 1
|
||||||
|
# was: ori _fun_arg_res_46_, $0, 1
|
||||||
|
_false_64_:
|
||||||
|
# ori _bool_reg_38_,_fun_arg_res_46_,0
|
||||||
|
beq $10, $0, _not_true_44_
|
||||||
|
# was: beq _bool_reg_38_, $0, _not_true_44_
|
||||||
|
sw $8, 0($6)
|
||||||
|
# was: sw _res_reg_37_, 0(_addr_reg_39_)
|
||||||
|
addi $5, $5, 1
|
||||||
|
# was: addi _j_reg_41_, _j_reg_41_, 1
|
||||||
|
addi $6, $6, 4
|
||||||
|
# was: addi _addr_reg_39_, _addr_reg_39_, 4
|
||||||
|
_not_true_44_:
|
||||||
addi $4, $4, 1
|
addi $4, $4, 1
|
||||||
# was: addi _ind_var_88_, _ind_var_88_, 1
|
# was: addi _i_reg_40_, _i_reg_40_, 1
|
||||||
j _loop_beg_90_
|
j _loop_beg_42_
|
||||||
_loop_end_91_:
|
_loop_end_43_:
|
||||||
ori $2, $6, 0
|
sw $5, 0($3)
|
||||||
# was: ori _arg_95_, _letBind_85_, 0
|
# was: sw _j_reg_41_, 0(_letBind_33_)
|
||||||
# ori $2,_arg_95_,0
|
# map
|
||||||
jal even
|
# ori _arr_reg_67_,_letBind_33_,0
|
||||||
# was: jal even, $2
|
lw $16, 0($3)
|
||||||
# ori _fun_arg_res_84_,$2,0
|
# was: lw _size_reg_66_, 0(_arr_reg_67_)
|
||||||
# ori _bool_reg_76_,_fun_arg_res_84_,0
|
# dynalloc
|
||||||
beq $2, $0, _not_true_82_
|
ori $17, $28, 0
|
||||||
# was: beq _bool_reg_76_, $0, _not_true_82_
|
# was: ori _mainres_1_, $28, 0
|
||||||
sw $22, 0($19)
|
sll $2, $16, 2
|
||||||
# was: sw _res_reg_75_, 0(_addr_reg_77_)
|
# was: sll _tmp_88_, _size_reg_66_, 2
|
||||||
addi $18, $18, 1
|
addi $2, $2, 4
|
||||||
# was: addi _j_reg_79_, _j_reg_79_, 1
|
# was: addi _tmp_88_, _tmp_88_, 4
|
||||||
|
add $28, $28, $2
|
||||||
|
# was: add $28, $28, _tmp_88_
|
||||||
|
sw $16, 0($17)
|
||||||
|
# was: sw _size_reg_66_, 0(_mainres_1_)
|
||||||
|
addi $19, $17, 4
|
||||||
|
# was: addi _addr_reg_70_, _mainres_1_, 4
|
||||||
|
ori $18, $0, 0
|
||||||
|
# was: ori _i_reg_71_, $0, 0
|
||||||
|
addi $20, $3, 4
|
||||||
|
# was: addi _elem_reg_68_, _arr_reg_67_, 4
|
||||||
|
_loop_beg_72_:
|
||||||
|
sub $2, $18, $16
|
||||||
|
# was: sub _tmp_reg_74_, _i_reg_71_, _size_reg_66_
|
||||||
|
bgez $2, _loop_end_73_
|
||||||
|
# was: bgez _tmp_reg_74_, _loop_end_73_
|
||||||
|
lw $2, 0($20)
|
||||||
|
# was: lw _res_reg_69_, 0(_elem_reg_68_)
|
||||||
|
addi $20, $20, 4
|
||||||
|
# was: addi _elem_reg_68_, _elem_reg_68_, 4
|
||||||
|
# map
|
||||||
|
# ori _arr_reg_77_,_res_reg_69_,0
|
||||||
|
lw $22, 0($2)
|
||||||
|
# was: lw _size_reg_76_, 0(_arr_reg_77_)
|
||||||
|
# dynalloc
|
||||||
|
ori $21, $28, 0
|
||||||
|
# was: ori _fun_arg_res_75_, $28, 0
|
||||||
|
sll $3, $22, 2
|
||||||
|
# was: sll _tmp_87_, _size_reg_76_, 2
|
||||||
|
addi $3, $3, 4
|
||||||
|
# was: addi _tmp_87_, _tmp_87_, 4
|
||||||
|
add $28, $28, $3
|
||||||
|
# was: add $28, $28, _tmp_87_
|
||||||
|
sw $22, 0($21)
|
||||||
|
# was: sw _size_reg_76_, 0(_fun_arg_res_75_)
|
||||||
|
addi $23, $21, 4
|
||||||
|
# was: addi _addr_reg_80_, _fun_arg_res_75_, 4
|
||||||
|
ori $24, $0, 0
|
||||||
|
# was: ori _i_reg_81_, $0, 0
|
||||||
|
addi $25, $2, 4
|
||||||
|
# was: addi _elem_reg_78_, _arr_reg_77_, 4
|
||||||
|
_loop_beg_82_:
|
||||||
|
sub $2, $24, $22
|
||||||
|
# was: sub _tmp_reg_84_, _i_reg_81_, _size_reg_76_
|
||||||
|
bgez $2, _loop_end_83_
|
||||||
|
# was: bgez _tmp_reg_84_, _loop_end_83_
|
||||||
|
lw $2, 0($25)
|
||||||
|
# was: lw _res_reg_79_, 0(_elem_reg_78_)
|
||||||
|
addi $25, $25, 4
|
||||||
|
# was: addi _elem_reg_78_, _elem_reg_78_, 4
|
||||||
|
# ori _tmp_86_,_res_reg_79_,0
|
||||||
|
# ori _fun_arg_res_85_,_tmp_86_,0
|
||||||
|
sw $2, 0($29)
|
||||||
|
# was: sw _fun_arg_res_85_, 0($29)
|
||||||
|
lw $2, 0($29)
|
||||||
|
# was: lw _fun_arg_res_85_, 0($29)
|
||||||
|
# ori $2,_fun_arg_res_85_,0
|
||||||
|
jal putint
|
||||||
|
# was: jal putint, $2
|
||||||
|
lw $2, 0($29)
|
||||||
|
# was: lw _fun_arg_res_85_, 0($29)
|
||||||
|
# ori _res_reg_79_,_fun_arg_res_85_,0
|
||||||
|
sw $2, 0($23)
|
||||||
|
# was: sw _res_reg_79_, 0(_addr_reg_80_)
|
||||||
|
addi $23, $23, 4
|
||||||
|
# was: addi _addr_reg_80_, _addr_reg_80_, 4
|
||||||
|
addi $24, $24, 1
|
||||||
|
# was: addi _i_reg_81_, _i_reg_81_, 1
|
||||||
|
j _loop_beg_82_
|
||||||
|
_loop_end_83_:
|
||||||
|
ori $2, $21, 0
|
||||||
|
# was: ori _res_reg_69_, _fun_arg_res_75_, 0
|
||||||
|
sw $2, 0($19)
|
||||||
|
# was: sw _res_reg_69_, 0(_addr_reg_70_)
|
||||||
addi $19, $19, 4
|
addi $19, $19, 4
|
||||||
# was: addi _addr_reg_77_, _addr_reg_77_, 4
|
# was: addi _addr_reg_70_, _addr_reg_70_, 4
|
||||||
_not_true_82_:
|
addi $18, $18, 1
|
||||||
addi $20, $20, 1
|
# was: addi _i_reg_71_, _i_reg_71_, 1
|
||||||
# was: addi _i_reg_78_, _i_reg_78_, 1
|
j _loop_beg_72_
|
||||||
j _loop_beg_80_
|
_loop_end_73_:
|
||||||
_loop_end_81_:
|
ori $2, $17, 0
|
||||||
sw $18, 0($16)
|
# was: ori $2, _mainres_1_, 0
|
||||||
# was: sw _j_reg_79_, 0(_letBind_71_)
|
addi $29, $29, 52
|
||||||
ori $2, $16, 0
|
lw $25, -48($29)
|
||||||
# was: ori _arg_97_, _letBind_71_, 0
|
lw $24, -44($29)
|
||||||
# ori $2,_arg_97_,0
|
lw $23, -40($29)
|
||||||
jal write_2darr
|
lw $22, -36($29)
|
||||||
# was: jal write_2darr, $2
|
lw $21, -32($29)
|
||||||
# ori _mainres_39_,$2,0
|
lw $20, -28($29)
|
||||||
# ori $2,_mainres_39_,0
|
lw $19, -24($29)
|
||||||
addi $29, $29, 36
|
lw $18, -20($29)
|
||||||
lw $22, -32($29)
|
lw $17, -16($29)
|
||||||
lw $21, -28($29)
|
lw $16, -12($29)
|
||||||
lw $20, -24($29)
|
|
||||||
lw $19, -20($29)
|
|
||||||
lw $18, -16($29)
|
|
||||||
lw $17, -12($29)
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
lw $31, -4($29)
|
||||||
jr $31
|
jr $31
|
||||||
ord:
|
ord:
|
||||||
|
422
tests/filter.asm
422
tests/filter.asm
@ -2,194 +2,293 @@
|
|||||||
.globl main
|
.globl main
|
||||||
la $28, _heap_
|
la $28, _heap_
|
||||||
la $4, _true
|
la $4, _true
|
||||||
|
# was: la _true_addr, _true
|
||||||
ori $3, $0, 4
|
ori $3, $0, 4
|
||||||
|
# was: ori _true_init, $0, 4
|
||||||
sw $3, 0($4)
|
sw $3, 0($4)
|
||||||
|
# was: sw _true_init, 0(_true_addr)
|
||||||
la $3, _false
|
la $3, _false
|
||||||
|
# was: la _false_addr, _false
|
||||||
ori $4, $0, 5
|
ori $4, $0, 5
|
||||||
|
# was: ori _false_init, $0, 5
|
||||||
sw $4, 0($3)
|
sw $4, 0($3)
|
||||||
|
# was: sw _false_init, 0(_false_addr)
|
||||||
jal main
|
jal main
|
||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
write_int:
|
# Function main
|
||||||
sw $31, -4($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -12
|
|
||||||
ori $16, $2, 0
|
|
||||||
ori $2, $16, 0
|
|
||||||
jal putint
|
|
||||||
ori $2, $16, 0
|
|
||||||
addi $29, $29, 12
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
write_int_arr:
|
|
||||||
sw $31, -4($29)
|
|
||||||
sw $20, -24($29)
|
|
||||||
sw $19, -20($29)
|
|
||||||
sw $18, -16($29)
|
|
||||||
sw $17, -12($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -28
|
|
||||||
lw $16, 0($2)
|
|
||||||
ori $17, $28, 0
|
|
||||||
sll $3, $16, 2
|
|
||||||
addi $3, $3, 4
|
|
||||||
add $28, $28, $3
|
|
||||||
sw $16, 0($17)
|
|
||||||
addi $18, $17, 4
|
|
||||||
ori $19, $0, 0
|
|
||||||
addi $20, $2, 4
|
|
||||||
_loop_beg_12_:
|
|
||||||
sub $2, $19, $16
|
|
||||||
bgez $2, _loop_end_13_
|
|
||||||
lw $2, 0($20)
|
|
||||||
addi $20, $20, 4
|
|
||||||
jal write_int
|
|
||||||
sw $2, 0($18)
|
|
||||||
addi $18, $18, 4
|
|
||||||
addi $19, $19, 1
|
|
||||||
j _loop_beg_12_
|
|
||||||
_loop_end_13_:
|
|
||||||
ori $2, $17, 0
|
|
||||||
addi $29, $29, 28
|
|
||||||
lw $20, -24($29)
|
|
||||||
lw $19, -20($29)
|
|
||||||
lw $18, -16($29)
|
|
||||||
lw $17, -12($29)
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
isMul16:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
ori $3, $0, 16
|
|
||||||
div $4, $2, $3
|
|
||||||
ori $3, $0, 16
|
|
||||||
mul $3, $4, $3
|
|
||||||
ori $4, $0, 0
|
|
||||||
bne $3, $2, _false_25_
|
|
||||||
ori $4, $0, 1
|
|
||||||
_false_25_:
|
|
||||||
ori $2, $4, 0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
main:
|
main:
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
sw $22, -32($29)
|
|
||||||
sw $21, -28($29)
|
sw $21, -28($29)
|
||||||
sw $20, -24($29)
|
sw $20, -24($29)
|
||||||
sw $19, -20($29)
|
sw $19, -20($29)
|
||||||
sw $18, -16($29)
|
sw $18, -16($29)
|
||||||
sw $17, -12($29)
|
sw $17, -12($29)
|
||||||
sw $16, -8($29)
|
sw $16, -8($29)
|
||||||
addi $29, $29, -36
|
addi $29, $29, -32
|
||||||
jal getint
|
jal getint
|
||||||
bgez $2, _safe_lab_35_
|
# was: jal getint, $2
|
||||||
|
# ori _letBind_2_,$2,0
|
||||||
|
# ori _size_reg_9_,_letBind_2_,0
|
||||||
|
bgez $2, _safe_lab_10_
|
||||||
|
# was: bgez _size_reg_9_, _safe_lab_10_
|
||||||
ori $5, $0, 10
|
ori $5, $0, 10
|
||||||
|
# was: ori $5, $0, 10
|
||||||
la $6, _Msg_IllegalArraySize_
|
la $6, _Msg_IllegalArraySize_
|
||||||
|
# was: la $6, _Msg_IllegalArraySize_
|
||||||
j _RuntimeError_
|
j _RuntimeError_
|
||||||
_safe_lab_35_:
|
_safe_lab_10_:
|
||||||
|
# dynalloc
|
||||||
ori $7, $28, 0
|
ori $7, $28, 0
|
||||||
|
# was: ori _arr_reg_5_, $28, 0
|
||||||
sll $3, $2, 2
|
sll $3, $2, 2
|
||||||
|
# was: sll _tmp_16_, _size_reg_9_, 2
|
||||||
addi $3, $3, 4
|
addi $3, $3, 4
|
||||||
|
# was: addi _tmp_16_, _tmp_16_, 4
|
||||||
add $28, $28, $3
|
add $28, $28, $3
|
||||||
|
# was: add $28, $28, _tmp_16_
|
||||||
sw $2, 0($7)
|
sw $2, 0($7)
|
||||||
addi $3, $7, 4
|
# was: sw _size_reg_9_, 0(_arr_reg_5_)
|
||||||
ori $5, $0, 0
|
addi $5, $7, 4
|
||||||
_loop_beg_38_:
|
# was: addi _addr_reg_11_, _arr_reg_5_, 4
|
||||||
sub $4, $5, $2
|
ori $3, $0, 0
|
||||||
bgez $4, _loop_end_39_
|
# was: ori _i_reg_12_, $0, 0
|
||||||
sw $5, 0($3)
|
_loop_beg_13_:
|
||||||
addi $3, $3, 4
|
sub $4, $3, $2
|
||||||
addi $5, $5, 1
|
# was: sub _tmp_reg_15_, _i_reg_12_, _size_reg_9_
|
||||||
j _loop_beg_38_
|
bgez $4, _loop_end_14_
|
||||||
_loop_end_39_:
|
# was: bgez _tmp_reg_15_, _loop_end_14_
|
||||||
lw $3, 0($7)
|
sw $3, 0($5)
|
||||||
ori $2, $28, 0
|
# was: sw _i_reg_12_, 0(_addr_reg_11_)
|
||||||
sll $4, $3, 2
|
addi $5, $5, 4
|
||||||
addi $4, $4, 4
|
# was: addi _addr_reg_11_, _addr_reg_11_, 4
|
||||||
add $28, $28, $4
|
addi $3, $3, 1
|
||||||
sw $3, 0($2)
|
# was: addi _i_reg_12_, _i_reg_12_, 1
|
||||||
addi $4, $2, 4
|
j _loop_beg_13_
|
||||||
ori $6, $0, 0
|
_loop_end_14_:
|
||||||
ori $5, $0, 0
|
lw $5, 0($7)
|
||||||
addi $7, $7, 4
|
# was: lw _size_reg_4_, 0(_arr_reg_5_)
|
||||||
_loop_beg_45_:
|
# dynalloc
|
||||||
sub $8, $6, $3
|
ori $6, $28, 0
|
||||||
bgez $8, _loop_end_46_
|
# was: ori _letBind_3_, $28, 0
|
||||||
lw $10, 0($7)
|
sll $2, $5, 2
|
||||||
addi $7, $7, 4
|
# was: sll _tmp_32_, _size_reg_4_, 2
|
||||||
ori $9, $10, 0
|
|
||||||
ori $8, $0, 2
|
|
||||||
div $8, $9, $8
|
|
||||||
ori $9, $0, 2
|
|
||||||
mul $9, $8, $9
|
|
||||||
ori $8, $0, 0
|
|
||||||
bne $10, $9, _false_56_
|
|
||||||
ori $8, $0, 1
|
|
||||||
_false_56_:
|
|
||||||
beq $8, $0, _not_true_47_
|
|
||||||
sw $10, 0($4)
|
|
||||||
addi $5, $5, 1
|
|
||||||
addi $4, $4, 4
|
|
||||||
_not_true_47_:
|
|
||||||
addi $6, $6, 1
|
|
||||||
j _loop_beg_45_
|
|
||||||
_loop_end_46_:
|
|
||||||
sw $5, 0($2)
|
|
||||||
lw $5, 0($2)
|
|
||||||
ori $4, $28, 0
|
|
||||||
sll $3, $5, 2
|
|
||||||
addi $3, $3, 4
|
|
||||||
add $28, $28, $3
|
|
||||||
sw $5, 0($4)
|
|
||||||
addi $7, $4, 4
|
|
||||||
ori $6, $0, 0
|
|
||||||
addi $3, $2, 4
|
|
||||||
_loop_beg_65_:
|
|
||||||
sub $2, $6, $5
|
|
||||||
bgez $2, _loop_end_66_
|
|
||||||
lw $2, 0($3)
|
|
||||||
addi $3, $3, 4
|
|
||||||
ori $8, $2, 0
|
|
||||||
mul $2, $8, $2
|
|
||||||
sw $2, 0($7)
|
|
||||||
addi $7, $7, 4
|
|
||||||
addi $6, $6, 1
|
|
||||||
j _loop_beg_65_
|
|
||||||
_loop_end_66_:
|
|
||||||
lw $17, 0($4)
|
|
||||||
ori $16, $28, 0
|
|
||||||
sll $2, $17, 2
|
|
||||||
addi $2, $2, 4
|
addi $2, $2, 4
|
||||||
|
# was: addi _tmp_32_, _tmp_32_, 4
|
||||||
add $28, $28, $2
|
add $28, $28, $2
|
||||||
sw $17, 0($16)
|
# was: add $28, $28, _tmp_32_
|
||||||
addi $19, $16, 4
|
sw $5, 0($6)
|
||||||
ori $18, $0, 0
|
# was: sw _size_reg_4_, 0(_letBind_3_)
|
||||||
ori $20, $0, 0
|
addi $4, $6, 4
|
||||||
addi $21, $4, 4
|
# was: addi _addr_reg_17_, _letBind_3_, 4
|
||||||
_loop_beg_81_:
|
ori $3, $0, 0
|
||||||
sub $2, $18, $17
|
# was: ori _i_reg_18_, $0, 0
|
||||||
bgez $2, _loop_end_82_
|
ori $2, $0, 0
|
||||||
lw $22, 0($21)
|
# was: ori _j_reg_19_, $0, 0
|
||||||
addi $21, $21, 4
|
addi $7, $7, 4
|
||||||
ori $2, $22, 0
|
# was: addi _elem_reg_6_, _arr_reg_5_, 4
|
||||||
jal isMul16
|
_loop_beg_20_:
|
||||||
beq $2, $0, _not_true_83_
|
sub $8, $3, $5
|
||||||
sw $22, 0($19)
|
# was: sub _tmp_reg_23_, _i_reg_18_, _size_reg_4_
|
||||||
addi $20, $20, 1
|
bgez $8, _loop_end_21_
|
||||||
addi $19, $19, 4
|
# was: bgez _tmp_reg_23_, _loop_end_21_
|
||||||
_not_true_83_:
|
lw $10, 0($7)
|
||||||
addi $18, $18, 1
|
# was: lw _res_reg_7_, 0(_elem_reg_6_)
|
||||||
j _loop_beg_81_
|
addi $7, $7, 4
|
||||||
_loop_end_82_:
|
# was: addi _elem_reg_6_, _elem_reg_6_, 4
|
||||||
sw $20, 0($16)
|
# ori _eq_L_25_,_res_reg_7_,0
|
||||||
ori $2, $16, 0
|
ori $9, $10, 0
|
||||||
jal write_int_arr
|
# was: ori _divide_L_29_, _res_reg_7_, 0
|
||||||
addi $29, $29, 36
|
ori $8, $0, 2
|
||||||
lw $22, -32($29)
|
# was: ori _divide_R_30_, $0, 2
|
||||||
|
div $9, $9, $8
|
||||||
|
# was: div _times_L_27_, _divide_L_29_, _divide_R_30_
|
||||||
|
ori $8, $0, 2
|
||||||
|
# was: ori _times_R_28_, $0, 2
|
||||||
|
mul $9, $9, $8
|
||||||
|
# was: mul _eq_R_26_, _times_L_27_, _times_R_28_
|
||||||
|
ori $8, $0, 0
|
||||||
|
# was: ori _fun_arg_res_24_, $0, 0
|
||||||
|
bne $10, $9, _false_31_
|
||||||
|
# was: bne _eq_L_25_, _eq_R_26_, _false_31_
|
||||||
|
ori $8, $0, 1
|
||||||
|
# was: ori _fun_arg_res_24_, $0, 1
|
||||||
|
_false_31_:
|
||||||
|
# ori _bool_reg_8_,_fun_arg_res_24_,0
|
||||||
|
beq $8, $0, _not_true_22_
|
||||||
|
# was: beq _bool_reg_8_, $0, _not_true_22_
|
||||||
|
sw $10, 0($4)
|
||||||
|
# was: sw _res_reg_7_, 0(_addr_reg_17_)
|
||||||
|
addi $2, $2, 1
|
||||||
|
# was: addi _j_reg_19_, _j_reg_19_, 1
|
||||||
|
addi $4, $4, 4
|
||||||
|
# was: addi _addr_reg_17_, _addr_reg_17_, 4
|
||||||
|
_not_true_22_:
|
||||||
|
addi $3, $3, 1
|
||||||
|
# was: addi _i_reg_18_, _i_reg_18_, 1
|
||||||
|
j _loop_beg_20_
|
||||||
|
_loop_end_21_:
|
||||||
|
sw $2, 0($6)
|
||||||
|
# was: sw _j_reg_19_, 0(_letBind_3_)
|
||||||
|
# map
|
||||||
|
ori $2, $6, 0
|
||||||
|
# was: ori _arr_reg_35_, _letBind_3_, 0
|
||||||
|
lw $3, 0($2)
|
||||||
|
# was: lw _size_reg_34_, 0(_arr_reg_35_)
|
||||||
|
# dynalloc
|
||||||
|
ori $4, $28, 0
|
||||||
|
# was: ori _letBind_33_, $28, 0
|
||||||
|
sll $5, $3, 2
|
||||||
|
# was: sll _tmp_46_, _size_reg_34_, 2
|
||||||
|
addi $5, $5, 4
|
||||||
|
# was: addi _tmp_46_, _tmp_46_, 4
|
||||||
|
add $28, $28, $5
|
||||||
|
# was: add $28, $28, _tmp_46_
|
||||||
|
sw $3, 0($4)
|
||||||
|
# was: sw _size_reg_34_, 0(_letBind_33_)
|
||||||
|
addi $6, $4, 4
|
||||||
|
# was: addi _addr_reg_38_, _letBind_33_, 4
|
||||||
|
ori $5, $0, 0
|
||||||
|
# was: ori _i_reg_39_, $0, 0
|
||||||
|
addi $2, $2, 4
|
||||||
|
# was: addi _elem_reg_36_, _arr_reg_35_, 4
|
||||||
|
_loop_beg_40_:
|
||||||
|
sub $7, $5, $3
|
||||||
|
# was: sub _tmp_reg_42_, _i_reg_39_, _size_reg_34_
|
||||||
|
bgez $7, _loop_end_41_
|
||||||
|
# was: bgez _tmp_reg_42_, _loop_end_41_
|
||||||
|
lw $7, 0($2)
|
||||||
|
# was: lw _res_reg_37_, 0(_elem_reg_36_)
|
||||||
|
addi $2, $2, 4
|
||||||
|
# was: addi _elem_reg_36_, _elem_reg_36_, 4
|
||||||
|
# ori _times_L_44_,_res_reg_37_,0
|
||||||
|
ori $8, $7, 0
|
||||||
|
# was: ori _times_R_45_, _res_reg_37_, 0
|
||||||
|
mul $7, $7, $8
|
||||||
|
# was: mul _fun_arg_res_43_, _times_L_44_, _times_R_45_
|
||||||
|
# ori _res_reg_37_,_fun_arg_res_43_,0
|
||||||
|
sw $7, 0($6)
|
||||||
|
# was: sw _res_reg_37_, 0(_addr_reg_38_)
|
||||||
|
addi $6, $6, 4
|
||||||
|
# was: addi _addr_reg_38_, _addr_reg_38_, 4
|
||||||
|
addi $5, $5, 1
|
||||||
|
# was: addi _i_reg_39_, _i_reg_39_, 1
|
||||||
|
j _loop_beg_40_
|
||||||
|
_loop_end_41_:
|
||||||
|
ori $2, $4, 0
|
||||||
|
# was: ori _arr_reg_49_, _letBind_33_, 0
|
||||||
|
lw $4, 0($2)
|
||||||
|
# was: lw _size_reg_48_, 0(_arr_reg_49_)
|
||||||
|
# dynalloc
|
||||||
|
ori $5, $28, 0
|
||||||
|
# was: ori _letBind_47_, $28, 0
|
||||||
|
sll $3, $4, 2
|
||||||
|
# was: sll _tmp_68_, _size_reg_48_, 2
|
||||||
|
addi $3, $3, 4
|
||||||
|
# was: addi _tmp_68_, _tmp_68_, 4
|
||||||
|
add $28, $28, $3
|
||||||
|
# was: add $28, $28, _tmp_68_
|
||||||
|
sw $4, 0($5)
|
||||||
|
# was: sw _size_reg_48_, 0(_letBind_47_)
|
||||||
|
addi $7, $5, 4
|
||||||
|
# was: addi _addr_reg_53_, _letBind_47_, 4
|
||||||
|
ori $6, $0, 0
|
||||||
|
# was: ori _i_reg_54_, $0, 0
|
||||||
|
ori $8, $0, 0
|
||||||
|
# was: ori _j_reg_55_, $0, 0
|
||||||
|
addi $9, $2, 4
|
||||||
|
# was: addi _elem_reg_50_, _arr_reg_49_, 4
|
||||||
|
_loop_beg_56_:
|
||||||
|
sub $2, $6, $4
|
||||||
|
# was: sub _tmp_reg_59_, _i_reg_54_, _size_reg_48_
|
||||||
|
bgez $2, _loop_end_57_
|
||||||
|
# was: bgez _tmp_reg_59_, _loop_end_57_
|
||||||
|
lw $10, 0($9)
|
||||||
|
# was: lw _res_reg_51_, 0(_elem_reg_50_)
|
||||||
|
addi $9, $9, 4
|
||||||
|
# was: addi _elem_reg_50_, _elem_reg_50_, 4
|
||||||
|
# ori _divide_L_65_,_res_reg_51_,0
|
||||||
|
ori $2, $0, 16
|
||||||
|
# was: ori _divide_R_66_, $0, 16
|
||||||
|
div $2, $10, $2
|
||||||
|
# was: div _times_L_63_, _divide_L_65_, _divide_R_66_
|
||||||
|
ori $3, $0, 16
|
||||||
|
# was: ori _times_R_64_, $0, 16
|
||||||
|
mul $2, $2, $3
|
||||||
|
# was: mul _eq_L_61_, _times_L_63_, _times_R_64_
|
||||||
|
# ori _eq_R_62_,_res_reg_51_,0
|
||||||
|
ori $3, $0, 0
|
||||||
|
# was: ori _fun_arg_res_60_, $0, 0
|
||||||
|
bne $2, $10, _false_67_
|
||||||
|
# was: bne _eq_L_61_, _eq_R_62_, _false_67_
|
||||||
|
ori $3, $0, 1
|
||||||
|
# was: ori _fun_arg_res_60_, $0, 1
|
||||||
|
_false_67_:
|
||||||
|
# ori _bool_reg_52_,_fun_arg_res_60_,0
|
||||||
|
beq $3, $0, _not_true_58_
|
||||||
|
# was: beq _bool_reg_52_, $0, _not_true_58_
|
||||||
|
sw $10, 0($7)
|
||||||
|
# was: sw _res_reg_51_, 0(_addr_reg_53_)
|
||||||
|
addi $8, $8, 1
|
||||||
|
# was: addi _j_reg_55_, _j_reg_55_, 1
|
||||||
|
addi $7, $7, 4
|
||||||
|
# was: addi _addr_reg_53_, _addr_reg_53_, 4
|
||||||
|
_not_true_58_:
|
||||||
|
addi $6, $6, 1
|
||||||
|
# was: addi _i_reg_54_, _i_reg_54_, 1
|
||||||
|
j _loop_beg_56_
|
||||||
|
_loop_end_57_:
|
||||||
|
sw $8, 0($5)
|
||||||
|
# was: sw _j_reg_55_, 0(_letBind_47_)
|
||||||
|
# map
|
||||||
|
# ori _arr_reg_70_,_letBind_47_,0
|
||||||
|
lw $16, 0($5)
|
||||||
|
# was: lw _size_reg_69_, 0(_arr_reg_70_)
|
||||||
|
# dynalloc
|
||||||
|
ori $17, $28, 0
|
||||||
|
# was: ori _mainres_1_, $28, 0
|
||||||
|
sll $2, $16, 2
|
||||||
|
# was: sll _tmp_80_, _size_reg_69_, 2
|
||||||
|
addi $2, $2, 4
|
||||||
|
# was: addi _tmp_80_, _tmp_80_, 4
|
||||||
|
add $28, $28, $2
|
||||||
|
# was: add $28, $28, _tmp_80_
|
||||||
|
sw $16, 0($17)
|
||||||
|
# was: sw _size_reg_69_, 0(_mainres_1_)
|
||||||
|
addi $18, $17, 4
|
||||||
|
# was: addi _addr_reg_73_, _mainres_1_, 4
|
||||||
|
ori $19, $0, 0
|
||||||
|
# was: ori _i_reg_74_, $0, 0
|
||||||
|
addi $20, $5, 4
|
||||||
|
# was: addi _elem_reg_71_, _arr_reg_70_, 4
|
||||||
|
_loop_beg_75_:
|
||||||
|
sub $2, $19, $16
|
||||||
|
# was: sub _tmp_reg_77_, _i_reg_74_, _size_reg_69_
|
||||||
|
bgez $2, _loop_end_76_
|
||||||
|
# was: bgez _tmp_reg_77_, _loop_end_76_
|
||||||
|
lw $21, 0($20)
|
||||||
|
# was: lw _res_reg_72_, 0(_elem_reg_71_)
|
||||||
|
addi $20, $20, 4
|
||||||
|
# was: addi _elem_reg_71_, _elem_reg_71_, 4
|
||||||
|
# ori _tmp_79_,_res_reg_72_,0
|
||||||
|
# ori _fun_arg_res_78_,_tmp_79_,0
|
||||||
|
ori $2, $21, 0
|
||||||
|
# was: ori $2, _fun_arg_res_78_, 0
|
||||||
|
jal putint
|
||||||
|
# was: jal putint, $2
|
||||||
|
# ori _res_reg_72_,_fun_arg_res_78_,0
|
||||||
|
sw $21, 0($18)
|
||||||
|
# was: sw _res_reg_72_, 0(_addr_reg_73_)
|
||||||
|
addi $18, $18, 4
|
||||||
|
# was: addi _addr_reg_73_, _addr_reg_73_, 4
|
||||||
|
addi $19, $19, 1
|
||||||
|
# was: addi _i_reg_74_, _i_reg_74_, 1
|
||||||
|
j _loop_beg_75_
|
||||||
|
_loop_end_76_:
|
||||||
|
ori $2, $17, 0
|
||||||
|
# was: ori $2, _mainres_1_, 0
|
||||||
|
addi $29, $29, 32
|
||||||
lw $21, -28($29)
|
lw $21, -28($29)
|
||||||
lw $20, -24($29)
|
lw $20, -24($29)
|
||||||
lw $19, -20($29)
|
lw $19, -20($29)
|
||||||
@ -292,6 +391,7 @@ _RuntimeError_:
|
|||||||
syscall
|
syscall
|
||||||
j _stop_
|
j _stop_
|
||||||
.data
|
.data
|
||||||
|
# Fixed strings for I/O
|
||||||
_ErrMsg_:
|
_ErrMsg_:
|
||||||
.asciiz "Runtime error at line "
|
.asciiz "Runtime error at line "
|
||||||
_colon_space_:
|
_colon_space_:
|
||||||
@ -300,12 +400,14 @@ _cr_:
|
|||||||
.asciiz "\n"
|
.asciiz "\n"
|
||||||
_space_:
|
_space_:
|
||||||
.asciiz " "
|
.asciiz " "
|
||||||
|
# Message strings for specific errors
|
||||||
_Msg_IllegalArraySize_:
|
_Msg_IllegalArraySize_:
|
||||||
.asciiz "negative array size"
|
.asciiz "negative array size"
|
||||||
_Msg_IllegalIndex_:
|
_Msg_IllegalIndex_:
|
||||||
.asciiz "array index out of bounds"
|
.asciiz "array index out of bounds"
|
||||||
_Msg_DivZero_:
|
_Msg_DivZero_:
|
||||||
.asciiz "division by zero"
|
.asciiz "division by zero"
|
||||||
|
# String Literals
|
||||||
.align 2
|
.align 2
|
||||||
_true:
|
_true:
|
||||||
.space 4
|
.space 4
|
||||||
|
@ -17,319 +17,197 @@
|
|||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
# Function plus5
|
|
||||||
plus5:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_x_1_,$2,0
|
|
||||||
# ori _plus_L_3_,_param_x_1_,0
|
|
||||||
ori $3, $0, 5
|
|
||||||
# was: ori _plus_R_4_, $0, 5
|
|
||||||
add $2, $2, $3
|
|
||||||
# was: add _plus5res_2_, _plus_L_3_, _plus_R_4_
|
|
||||||
# ori $2,_plus5res_2_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function mul2
|
|
||||||
mul2:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_x_5_,$2,0
|
|
||||||
ori $3, $2, 0
|
|
||||||
# was: ori _plus_L_7_, _param_x_5_, 0
|
|
||||||
# ori _plus_R_8_,_param_x_5_,0
|
|
||||||
add $2, $3, $2
|
|
||||||
# was: add _mul2res_6_, _plus_L_7_, _plus_R_8_
|
|
||||||
# ori $2,_mul2res_6_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function testcomp
|
|
||||||
testcomp:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_x_9_,$2,0
|
|
||||||
# ori _arg_12_,_param_x_9_,0
|
|
||||||
# ori $2,_arg_12_,0
|
|
||||||
jal write_int_arr
|
|
||||||
# was: jal write_int_arr, $2
|
|
||||||
# ori _arg_11_,$2,0
|
|
||||||
# ori $2,_arg_11_,0
|
|
||||||
jal write_int_arr
|
|
||||||
# was: jal write_int_arr, $2
|
|
||||||
# ori _testcompres_10_,$2,0
|
|
||||||
# ori $2,_testcompres_10_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function write_int
|
|
||||||
write_int:
|
|
||||||
sw $31, -4($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -12
|
|
||||||
# ori _param_x_13_,$2,0
|
|
||||||
ori $16, $2, 0
|
|
||||||
# was: ori _tmp_15_, _param_x_13_, 0
|
|
||||||
# ori _write_intres_14_,_tmp_15_,0
|
|
||||||
ori $2, $16, 0
|
|
||||||
# was: ori $2, _write_intres_14_, 0
|
|
||||||
jal putint
|
|
||||||
# was: jal putint, $2
|
|
||||||
ori $2, $16, 0
|
|
||||||
# was: ori $2, _write_intres_14_, 0
|
|
||||||
addi $29, $29, 12
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function write_int_arr
|
|
||||||
write_int_arr:
|
|
||||||
sw $31, -4($29)
|
|
||||||
sw $20, -24($29)
|
|
||||||
sw $19, -20($29)
|
|
||||||
sw $18, -16($29)
|
|
||||||
sw $17, -12($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -28
|
|
||||||
# ori _param_x_16_,$2,0
|
|
||||||
# map
|
|
||||||
# ori _arr_reg_19_,_param_x_16_,0
|
|
||||||
lw $16, 0($2)
|
|
||||||
# was: lw _size_reg_18_, 0(_arr_reg_19_)
|
|
||||||
# dynalloc
|
|
||||||
ori $17, $28, 0
|
|
||||||
# was: ori _write_int_arrres_17_, $28, 0
|
|
||||||
sll $3, $16, 2
|
|
||||||
# was: sll _tmp_28_, _size_reg_18_, 2
|
|
||||||
addi $3, $3, 4
|
|
||||||
# was: addi _tmp_28_, _tmp_28_, 4
|
|
||||||
add $28, $28, $3
|
|
||||||
# was: add $28, $28, _tmp_28_
|
|
||||||
sw $16, 0($17)
|
|
||||||
# was: sw _size_reg_18_, 0(_write_int_arrres_17_)
|
|
||||||
addi $18, $17, 4
|
|
||||||
# was: addi _addr_reg_22_, _write_int_arrres_17_, 4
|
|
||||||
ori $19, $0, 0
|
|
||||||
# was: ori _i_reg_23_, $0, 0
|
|
||||||
addi $20, $2, 4
|
|
||||||
# was: addi _elem_reg_20_, _arr_reg_19_, 4
|
|
||||||
_loop_beg_24_:
|
|
||||||
sub $2, $19, $16
|
|
||||||
# was: sub _tmp_reg_26_, _i_reg_23_, _size_reg_18_
|
|
||||||
bgez $2, _loop_end_25_
|
|
||||||
# was: bgez _tmp_reg_26_, _loop_end_25_
|
|
||||||
lw $2, 0($20)
|
|
||||||
# was: lw _res_reg_21_, 0(_elem_reg_20_)
|
|
||||||
addi $20, $20, 4
|
|
||||||
# was: addi _elem_reg_20_, _elem_reg_20_, 4
|
|
||||||
# ori $2,_res_reg_21_,0
|
|
||||||
jal write_int
|
|
||||||
# was: jal write_int, $2
|
|
||||||
# ori _tmp_reg_27_,$2,0
|
|
||||||
# ori _res_reg_21_,_tmp_reg_27_,0
|
|
||||||
sw $2, 0($18)
|
|
||||||
# was: sw _res_reg_21_, 0(_addr_reg_22_)
|
|
||||||
addi $18, $18, 4
|
|
||||||
# was: addi _addr_reg_22_, _addr_reg_22_, 4
|
|
||||||
addi $19, $19, 1
|
|
||||||
# was: addi _i_reg_23_, _i_reg_23_, 1
|
|
||||||
j _loop_beg_24_
|
|
||||||
_loop_end_25_:
|
|
||||||
ori $2, $17, 0
|
|
||||||
# was: ori $2, _write_int_arrres_17_, 0
|
|
||||||
addi $29, $29, 28
|
|
||||||
lw $20, -24($29)
|
|
||||||
lw $19, -20($29)
|
|
||||||
lw $18, -16($29)
|
|
||||||
lw $17, -12($29)
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function boo
|
|
||||||
boo:
|
|
||||||
sw $31, -4($29)
|
|
||||||
sw $20, -24($29)
|
|
||||||
sw $19, -20($29)
|
|
||||||
sw $18, -16($29)
|
|
||||||
sw $17, -12($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -28
|
|
||||||
# ori _param_a_29_,$2,0
|
|
||||||
ori $0, $0, 8
|
|
||||||
# was: ori _letBind_32_, $0, 8
|
|
||||||
# map
|
|
||||||
# ori _arr_reg_34_,_param_a_29_,0
|
|
||||||
lw $17, 0($2)
|
|
||||||
# was: lw _size_reg_33_, 0(_arr_reg_34_)
|
|
||||||
# dynalloc
|
|
||||||
ori $16, $28, 0
|
|
||||||
# was: ori _letBind_31_, $28, 0
|
|
||||||
sll $3, $17, 2
|
|
||||||
# was: sll _tmp_43_, _size_reg_33_, 2
|
|
||||||
addi $3, $3, 4
|
|
||||||
# was: addi _tmp_43_, _tmp_43_, 4
|
|
||||||
add $28, $28, $3
|
|
||||||
# was: add $28, $28, _tmp_43_
|
|
||||||
sw $17, 0($16)
|
|
||||||
# was: sw _size_reg_33_, 0(_letBind_31_)
|
|
||||||
addi $18, $16, 4
|
|
||||||
# was: addi _addr_reg_37_, _letBind_31_, 4
|
|
||||||
ori $19, $0, 0
|
|
||||||
# was: ori _i_reg_38_, $0, 0
|
|
||||||
addi $20, $2, 4
|
|
||||||
# was: addi _elem_reg_35_, _arr_reg_34_, 4
|
|
||||||
_loop_beg_39_:
|
|
||||||
sub $2, $19, $17
|
|
||||||
# was: sub _tmp_reg_41_, _i_reg_38_, _size_reg_33_
|
|
||||||
bgez $2, _loop_end_40_
|
|
||||||
# was: bgez _tmp_reg_41_, _loop_end_40_
|
|
||||||
lw $2, 0($20)
|
|
||||||
# was: lw _res_reg_36_, 0(_elem_reg_35_)
|
|
||||||
addi $20, $20, 4
|
|
||||||
# was: addi _elem_reg_35_, _elem_reg_35_, 4
|
|
||||||
# ori $2,_res_reg_36_,0
|
|
||||||
jal plus5
|
|
||||||
# was: jal plus5, $2
|
|
||||||
# ori _tmp_reg_42_,$2,0
|
|
||||||
# ori _res_reg_36_,_tmp_reg_42_,0
|
|
||||||
sw $2, 0($18)
|
|
||||||
# was: sw _res_reg_36_, 0(_addr_reg_37_)
|
|
||||||
addi $18, $18, 4
|
|
||||||
# was: addi _addr_reg_37_, _addr_reg_37_, 4
|
|
||||||
addi $19, $19, 1
|
|
||||||
# was: addi _i_reg_38_, _i_reg_38_, 1
|
|
||||||
j _loop_beg_39_
|
|
||||||
_loop_end_40_:
|
|
||||||
ori $2, $16, 0
|
|
||||||
# was: ori _boores_30_, _letBind_31_, 0
|
|
||||||
# ori $2,_boores_30_,0
|
|
||||||
addi $29, $29, 28
|
|
||||||
lw $20, -24($29)
|
|
||||||
lw $19, -20($29)
|
|
||||||
lw $18, -16($29)
|
|
||||||
lw $17, -12($29)
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function main
|
# Function main
|
||||||
main:
|
main:
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
|
sw $21, -28($29)
|
||||||
sw $20, -24($29)
|
sw $20, -24($29)
|
||||||
sw $19, -20($29)
|
sw $19, -20($29)
|
||||||
sw $18, -16($29)
|
sw $18, -16($29)
|
||||||
sw $17, -12($29)
|
sw $17, -12($29)
|
||||||
sw $16, -8($29)
|
sw $16, -8($29)
|
||||||
addi $29, $29, -28
|
addi $29, $29, -32
|
||||||
jal getint
|
jal getint
|
||||||
# was: jal getint, $2
|
# was: jal getint, $2
|
||||||
ori $3, $2, 0
|
# ori _letBind_2_,$2,0
|
||||||
# was: ori _letBind_45_, $2, 0
|
# ori _size_reg_4_,_letBind_2_,0
|
||||||
# ori _size_reg_47_,_letBind_45_,0
|
bgez $2, _safe_lab_5_
|
||||||
bgez $3, _safe_lab_48_
|
# was: bgez _size_reg_4_, _safe_lab_5_
|
||||||
# was: bgez _size_reg_47_, _safe_lab_48_
|
|
||||||
ori $5, $0, 15
|
ori $5, $0, 15
|
||||||
# was: ori $5, $0, 15
|
# was: ori $5, $0, 15
|
||||||
la $6, _Msg_IllegalArraySize_
|
la $6, _Msg_IllegalArraySize_
|
||||||
# was: la $6, _Msg_IllegalArraySize_
|
# was: la $6, _Msg_IllegalArraySize_
|
||||||
j _RuntimeError_
|
j _RuntimeError_
|
||||||
_safe_lab_48_:
|
_safe_lab_5_:
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $2, $28, 0
|
ori $3, $28, 0
|
||||||
# was: ori _letBind_46_, $28, 0
|
# was: ori _letBind_3_, $28, 0
|
||||||
sll $4, $3, 2
|
sll $4, $2, 2
|
||||||
# was: sll _tmp_54_, _size_reg_47_, 2
|
# was: sll _tmp_11_, _size_reg_4_, 2
|
||||||
addi $4, $4, 4
|
addi $4, $4, 4
|
||||||
# was: addi _tmp_54_, _tmp_54_, 4
|
# was: addi _tmp_11_, _tmp_11_, 4
|
||||||
add $28, $28, $4
|
add $28, $28, $4
|
||||||
# was: add $28, $28, _tmp_54_
|
# was: add $28, $28, _tmp_11_
|
||||||
sw $3, 0($2)
|
sw $2, 0($3)
|
||||||
# was: sw _size_reg_47_, 0(_letBind_46_)
|
# was: sw _size_reg_4_, 0(_letBind_3_)
|
||||||
addi $5, $2, 4
|
addi $5, $3, 4
|
||||||
# was: addi _addr_reg_49_, _letBind_46_, 4
|
# was: addi _addr_reg_6_, _letBind_3_, 4
|
||||||
ori $6, $0, 0
|
ori $4, $0, 0
|
||||||
# was: ori _i_reg_50_, $0, 0
|
# was: ori _i_reg_7_, $0, 0
|
||||||
_loop_beg_51_:
|
_loop_beg_8_:
|
||||||
sub $4, $6, $3
|
sub $6, $4, $2
|
||||||
# was: sub _tmp_reg_53_, _i_reg_50_, _size_reg_47_
|
# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_
|
||||||
bgez $4, _loop_end_52_
|
bgez $6, _loop_end_9_
|
||||||
# was: bgez _tmp_reg_53_, _loop_end_52_
|
# was: bgez _tmp_reg_10_, _loop_end_9_
|
||||||
sw $6, 0($5)
|
sw $4, 0($5)
|
||||||
# was: sw _i_reg_50_, 0(_addr_reg_49_)
|
# was: sw _i_reg_7_, 0(_addr_reg_6_)
|
||||||
addi $5, $5, 4
|
addi $5, $5, 4
|
||||||
# was: addi _addr_reg_49_, _addr_reg_49_, 4
|
# was: addi _addr_reg_6_, _addr_reg_6_, 4
|
||||||
addi $6, $6, 1
|
addi $4, $4, 1
|
||||||
# was: addi _i_reg_50_, _i_reg_50_, 1
|
# was: addi _i_reg_7_, _i_reg_7_, 1
|
||||||
j _loop_beg_51_
|
j _loop_beg_8_
|
||||||
_loop_end_52_:
|
_loop_end_9_:
|
||||||
# ori _plus_L_57_,_letBind_45_,0
|
|
||||||
ori $4, $3, 0
|
|
||||||
# was: ori _plus_R_58_, _letBind_45_, 0
|
|
||||||
add $0, $3, $4
|
|
||||||
# was: add _letBind_56_, _plus_L_57_, _plus_R_58_
|
|
||||||
ori $4, $3, 0
|
|
||||||
# was: ori _plus_L_61_, _letBind_45_, 0
|
|
||||||
# ori _plus_R_62_,_letBind_45_,0
|
|
||||||
add $4, $4, $3
|
|
||||||
# was: add _plus_L_59_, _plus_L_61_, _plus_R_62_
|
|
||||||
# ori _plus_R_60_,_letBind_45_,0
|
|
||||||
add $0, $4, $3
|
|
||||||
# was: add _letBind_55_, _plus_L_59_, _plus_R_60_
|
|
||||||
# ori _arg_64_,_letBind_46_,0
|
|
||||||
# ori $2,_arg_64_,0
|
|
||||||
jal boo
|
|
||||||
# was: jal boo, $2
|
|
||||||
# ori _letBind_63_,$2,0
|
|
||||||
# map
|
# map
|
||||||
# ori _arr_reg_67_,_letBind_63_,0
|
ori $2, $3, 0
|
||||||
lw $16, 0($2)
|
# was: ori _arr_reg_15_, _letBind_3_, 0
|
||||||
# was: lw _size_reg_66_, 0(_arr_reg_67_)
|
lw $4, 0($2)
|
||||||
|
# was: lw _size_reg_14_, 0(_arr_reg_15_)
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $17, $28, 0
|
ori $6, $28, 0
|
||||||
# was: ori _letBind_65_, $28, 0
|
# was: ori _letBind_13_, $28, 0
|
||||||
sll $3, $16, 2
|
sll $3, $4, 2
|
||||||
# was: sll _tmp_76_, _size_reg_66_, 2
|
# was: sll _tmp_26_, _size_reg_14_, 2
|
||||||
addi $3, $3, 4
|
addi $3, $3, 4
|
||||||
# was: addi _tmp_76_, _tmp_76_, 4
|
# was: addi _tmp_26_, _tmp_26_, 4
|
||||||
add $28, $28, $3
|
add $28, $28, $3
|
||||||
# was: add $28, $28, _tmp_76_
|
# was: add $28, $28, _tmp_26_
|
||||||
sw $16, 0($17)
|
sw $4, 0($6)
|
||||||
# was: sw _size_reg_66_, 0(_letBind_65_)
|
# was: sw _size_reg_14_, 0(_letBind_13_)
|
||||||
addi $18, $17, 4
|
addi $3, $6, 4
|
||||||
# was: addi _addr_reg_70_, _letBind_65_, 4
|
# was: addi _addr_reg_18_, _letBind_13_, 4
|
||||||
|
ori $5, $0, 0
|
||||||
|
# was: ori _i_reg_19_, $0, 0
|
||||||
|
addi $7, $2, 4
|
||||||
|
# was: addi _elem_reg_16_, _arr_reg_15_, 4
|
||||||
|
_loop_beg_20_:
|
||||||
|
sub $2, $5, $4
|
||||||
|
# was: sub _tmp_reg_22_, _i_reg_19_, _size_reg_14_
|
||||||
|
bgez $2, _loop_end_21_
|
||||||
|
# was: bgez _tmp_reg_22_, _loop_end_21_
|
||||||
|
lw $2, 0($7)
|
||||||
|
# was: lw _res_reg_17_, 0(_elem_reg_16_)
|
||||||
|
addi $7, $7, 4
|
||||||
|
# was: addi _elem_reg_16_, _elem_reg_16_, 4
|
||||||
|
ori $8, $2, 0
|
||||||
|
# was: ori _plus_L_24_, _res_reg_17_, 0
|
||||||
|
ori $2, $0, 5
|
||||||
|
# was: ori _plus_R_25_, $0, 5
|
||||||
|
add $2, $8, $2
|
||||||
|
# was: add _fun_arg_res_23_, _plus_L_24_, _plus_R_25_
|
||||||
|
# ori _res_reg_17_,_fun_arg_res_23_,0
|
||||||
|
sw $2, 0($3)
|
||||||
|
# was: sw _res_reg_17_, 0(_addr_reg_18_)
|
||||||
|
addi $3, $3, 4
|
||||||
|
# was: addi _addr_reg_18_, _addr_reg_18_, 4
|
||||||
|
addi $5, $5, 1
|
||||||
|
# was: addi _i_reg_19_, _i_reg_19_, 1
|
||||||
|
j _loop_beg_20_
|
||||||
|
_loop_end_21_:
|
||||||
|
ori $2, $6, 0
|
||||||
|
# was: ori _letBind_12_, _letBind_13_, 0
|
||||||
|
# map
|
||||||
|
# ori _arr_reg_29_,_letBind_12_,0
|
||||||
|
lw $4, 0($2)
|
||||||
|
# was: lw _size_reg_28_, 0(_arr_reg_29_)
|
||||||
|
# dynalloc
|
||||||
|
ori $5, $28, 0
|
||||||
|
# was: ori _letBind_27_, $28, 0
|
||||||
|
sll $3, $4, 2
|
||||||
|
# was: sll _tmp_40_, _size_reg_28_, 2
|
||||||
|
addi $3, $3, 4
|
||||||
|
# was: addi _tmp_40_, _tmp_40_, 4
|
||||||
|
add $28, $28, $3
|
||||||
|
# was: add $28, $28, _tmp_40_
|
||||||
|
sw $4, 0($5)
|
||||||
|
# was: sw _size_reg_28_, 0(_letBind_27_)
|
||||||
|
addi $3, $5, 4
|
||||||
|
# was: addi _addr_reg_32_, _letBind_27_, 4
|
||||||
|
ori $6, $0, 0
|
||||||
|
# was: ori _i_reg_33_, $0, 0
|
||||||
|
addi $7, $2, 4
|
||||||
|
# was: addi _elem_reg_30_, _arr_reg_29_, 4
|
||||||
|
_loop_beg_34_:
|
||||||
|
sub $2, $6, $4
|
||||||
|
# was: sub _tmp_reg_36_, _i_reg_33_, _size_reg_28_
|
||||||
|
bgez $2, _loop_end_35_
|
||||||
|
# was: bgez _tmp_reg_36_, _loop_end_35_
|
||||||
|
lw $2, 0($7)
|
||||||
|
# was: lw _res_reg_31_, 0(_elem_reg_30_)
|
||||||
|
addi $7, $7, 4
|
||||||
|
# was: addi _elem_reg_30_, _elem_reg_30_, 4
|
||||||
|
ori $8, $2, 0
|
||||||
|
# was: ori _plus_L_38_, _res_reg_31_, 0
|
||||||
|
# ori _plus_R_39_,_res_reg_31_,0
|
||||||
|
add $2, $8, $2
|
||||||
|
# was: add _fun_arg_res_37_, _plus_L_38_, _plus_R_39_
|
||||||
|
# ori _res_reg_31_,_fun_arg_res_37_,0
|
||||||
|
sw $2, 0($3)
|
||||||
|
# was: sw _res_reg_31_, 0(_addr_reg_32_)
|
||||||
|
addi $3, $3, 4
|
||||||
|
# was: addi _addr_reg_32_, _addr_reg_32_, 4
|
||||||
|
addi $6, $6, 1
|
||||||
|
# was: addi _i_reg_33_, _i_reg_33_, 1
|
||||||
|
j _loop_beg_34_
|
||||||
|
_loop_end_35_:
|
||||||
|
# map
|
||||||
|
# ori _arr_reg_42_,_letBind_27_,0
|
||||||
|
lw $17, 0($5)
|
||||||
|
# was: lw _size_reg_41_, 0(_arr_reg_42_)
|
||||||
|
# dynalloc
|
||||||
|
ori $16, $28, 0
|
||||||
|
# was: ori _mainres_1_, $28, 0
|
||||||
|
sll $2, $17, 2
|
||||||
|
# was: sll _tmp_52_, _size_reg_41_, 2
|
||||||
|
addi $2, $2, 4
|
||||||
|
# was: addi _tmp_52_, _tmp_52_, 4
|
||||||
|
add $28, $28, $2
|
||||||
|
# was: add $28, $28, _tmp_52_
|
||||||
|
sw $17, 0($16)
|
||||||
|
# was: sw _size_reg_41_, 0(_mainres_1_)
|
||||||
|
addi $18, $16, 4
|
||||||
|
# was: addi _addr_reg_45_, _mainres_1_, 4
|
||||||
ori $19, $0, 0
|
ori $19, $0, 0
|
||||||
# was: ori _i_reg_71_, $0, 0
|
# was: ori _i_reg_46_, $0, 0
|
||||||
addi $20, $2, 4
|
addi $20, $5, 4
|
||||||
# was: addi _elem_reg_68_, _arr_reg_67_, 4
|
# was: addi _elem_reg_43_, _arr_reg_42_, 4
|
||||||
_loop_beg_72_:
|
_loop_beg_47_:
|
||||||
sub $2, $19, $16
|
sub $2, $19, $17
|
||||||
# was: sub _tmp_reg_74_, _i_reg_71_, _size_reg_66_
|
# was: sub _tmp_reg_49_, _i_reg_46_, _size_reg_41_
|
||||||
bgez $2, _loop_end_73_
|
bgez $2, _loop_end_48_
|
||||||
# was: bgez _tmp_reg_74_, _loop_end_73_
|
# was: bgez _tmp_reg_49_, _loop_end_48_
|
||||||
lw $2, 0($20)
|
lw $21, 0($20)
|
||||||
# was: lw _res_reg_69_, 0(_elem_reg_68_)
|
# was: lw _res_reg_44_, 0(_elem_reg_43_)
|
||||||
addi $20, $20, 4
|
addi $20, $20, 4
|
||||||
# was: addi _elem_reg_68_, _elem_reg_68_, 4
|
# was: addi _elem_reg_43_, _elem_reg_43_, 4
|
||||||
# ori $2,_res_reg_69_,0
|
# ori _tmp_51_,_res_reg_44_,0
|
||||||
jal mul2
|
# ori _fun_arg_res_50_,_tmp_51_,0
|
||||||
# was: jal mul2, $2
|
ori $2, $21, 0
|
||||||
# ori _tmp_reg_75_,$2,0
|
# was: ori $2, _fun_arg_res_50_, 0
|
||||||
# ori _res_reg_69_,_tmp_reg_75_,0
|
jal putint
|
||||||
sw $2, 0($18)
|
# was: jal putint, $2
|
||||||
# was: sw _res_reg_69_, 0(_addr_reg_70_)
|
# ori _res_reg_44_,_fun_arg_res_50_,0
|
||||||
|
sw $21, 0($18)
|
||||||
|
# was: sw _res_reg_44_, 0(_addr_reg_45_)
|
||||||
addi $18, $18, 4
|
addi $18, $18, 4
|
||||||
# was: addi _addr_reg_70_, _addr_reg_70_, 4
|
# was: addi _addr_reg_45_, _addr_reg_45_, 4
|
||||||
addi $19, $19, 1
|
addi $19, $19, 1
|
||||||
# was: addi _i_reg_71_, _i_reg_71_, 1
|
# was: addi _i_reg_46_, _i_reg_46_, 1
|
||||||
j _loop_beg_72_
|
j _loop_beg_47_
|
||||||
_loop_end_73_:
|
_loop_end_48_:
|
||||||
ori $2, $17, 0
|
ori $2, $16, 0
|
||||||
# was: ori _arg_77_, _letBind_65_, 0
|
# was: ori $2, _mainres_1_, 0
|
||||||
# ori $2,_arg_77_,0
|
addi $29, $29, 32
|
||||||
jal write_int_arr
|
lw $21, -28($29)
|
||||||
# was: jal write_int_arr, $2
|
|
||||||
# ori _mainres_44_,$2,0
|
|
||||||
# ori $2,_mainres_44_,0
|
|
||||||
addi $29, $29, 28
|
|
||||||
lw $20, -24($29)
|
lw $20, -24($29)
|
||||||
lw $19, -20($29)
|
lw $19, -20($29)
|
||||||
lw $18, -16($29)
|
lw $18, -16($29)
|
||||||
|
@ -17,101 +17,27 @@
|
|||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
# Function f
|
|
||||||
f:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_a_1_,$2,0
|
|
||||||
# ori _param_b_2_,$3,0
|
|
||||||
# ori _param_c_3_,$4,0
|
|
||||||
# ori _param_d_4_,$5,0
|
|
||||||
ori $6, $0, 1000
|
|
||||||
# was: ori _times_L_12_, $0, 1000
|
|
||||||
# ori _times_R_13_,_param_a_1_,0
|
|
||||||
mul $2, $6, $2
|
|
||||||
# was: mul _plus_L_10_, _times_L_12_, _times_R_13_
|
|
||||||
ori $6, $0, 100
|
|
||||||
# was: ori _times_L_14_, $0, 100
|
|
||||||
# ori _times_R_15_,_param_b_2_,0
|
|
||||||
mul $3, $6, $3
|
|
||||||
# was: mul _plus_R_11_, _times_L_14_, _times_R_15_
|
|
||||||
add $2, $2, $3
|
|
||||||
# was: add _plus_L_8_, _plus_L_10_, _plus_R_11_
|
|
||||||
ori $3, $0, 10
|
|
||||||
# was: ori _times_L_16_, $0, 10
|
|
||||||
# ori _times_R_17_,_param_c_3_,0
|
|
||||||
mul $3, $3, $4
|
|
||||||
# was: mul _plus_R_9_, _times_L_16_, _times_R_17_
|
|
||||||
add $2, $2, $3
|
|
||||||
# was: add _plus_L_6_, _plus_L_8_, _plus_R_9_
|
|
||||||
# ori _plus_R_7_,_param_d_4_,0
|
|
||||||
add $2, $2, $5
|
|
||||||
# was: add _fres_5_, _plus_L_6_, _plus_R_7_
|
|
||||||
# ori $2,_fres_5_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function zero
|
# Function zero
|
||||||
zero:
|
zero:
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
addi $29, $29, -8
|
addi $29, $29, -8
|
||||||
# ori _param_b_18_,$2,0
|
# ori _param_b_1_,$2,0
|
||||||
# ori _cond_23_,_param_b_18_,0
|
# ori _cond_6_,_param_b_1_,0
|
||||||
bne $2, $0, _then_20_
|
bne $2, $0, _then_3_
|
||||||
# was: bne _cond_23_, $0, _then_20_
|
# was: bne _cond_6_, $0, _then_3_
|
||||||
j _else_21_
|
j _else_4_
|
||||||
_then_20_:
|
_then_3_:
|
||||||
ori $2, $0, 0
|
ori $2, $0, 0
|
||||||
# was: ori _zerores_19_, $0, 0
|
# was: ori _zerores_2_, $0, 0
|
||||||
j _endif_22_
|
j _endif_5_
|
||||||
_else_21_:
|
_else_4_:
|
||||||
# ori _arg_24_,_param_b_18_,0
|
# ori _arg_7_,_param_b_1_,0
|
||||||
# ori $2,_arg_24_,0
|
# ori $2,_arg_7_,0
|
||||||
jal zero
|
jal zero
|
||||||
# was: jal zero, $2
|
# was: jal zero, $2
|
||||||
# ori _zerores_19_,$2,0
|
# ori _zerores_2_,$2,0
|
||||||
_endif_22_:
|
_endif_5_:
|
||||||
# ori $2,_zerores_19_,0
|
# ori $2,_zerores_2_,0
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function test
|
|
||||||
test:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_z_25_,$2,0
|
|
||||||
ori $3, $0, 1
|
|
||||||
# was: ori _plus_L_28_, $0, 1
|
|
||||||
# ori _plus_R_29_,_param_z_25_,0
|
|
||||||
add $3, $3, $2
|
|
||||||
# was: add _letBind_27_, _plus_L_28_, _plus_R_29_
|
|
||||||
ori $4, $0, 2
|
|
||||||
# was: ori _plus_L_31_, $0, 2
|
|
||||||
# ori _plus_R_32_,_param_z_25_,0
|
|
||||||
add $5, $4, $2
|
|
||||||
# was: add _letBind_30_, _plus_L_31_, _plus_R_32_
|
|
||||||
ori $4, $0, 3
|
|
||||||
# was: ori _plus_L_34_, $0, 3
|
|
||||||
# ori _plus_R_35_,_param_z_25_,0
|
|
||||||
add $4, $4, $2
|
|
||||||
# was: add _letBind_33_, _plus_L_34_, _plus_R_35_
|
|
||||||
ori $6, $0, 4
|
|
||||||
# was: ori _plus_L_37_, $0, 4
|
|
||||||
# ori _plus_R_38_,_param_z_25_,0
|
|
||||||
add $2, $6, $2
|
|
||||||
# was: add _letBind_36_, _plus_L_37_, _plus_R_38_
|
|
||||||
# ori _arg_39_,_letBind_36_,0
|
|
||||||
# ori _arg_40_,_letBind_27_,0
|
|
||||||
# ori _arg_41_,_letBind_33_,0
|
|
||||||
# ori _arg_42_,_letBind_30_,0
|
|
||||||
# ori $2,_arg_39_,0
|
|
||||||
# ori $3,_arg_40_,0
|
|
||||||
# ori $4,_arg_41_,0
|
|
||||||
# ori $5,_arg_42_,0
|
|
||||||
jal f
|
|
||||||
# was: jal f, $2 $3 $4 $5
|
|
||||||
# ori _testres_26_,$2,0
|
|
||||||
# ori $2,_testres_26_,0
|
|
||||||
addi $29, $29, 8
|
addi $29, $29, 8
|
||||||
lw $31, -4($29)
|
lw $31, -4($29)
|
||||||
jr $31
|
jr $31
|
||||||
@ -121,43 +47,79 @@ main:
|
|||||||
sw $17, -12($29)
|
sw $17, -12($29)
|
||||||
sw $16, -8($29)
|
sw $16, -8($29)
|
||||||
addi $29, $29, -16
|
addi $29, $29, -16
|
||||||
ori $2, $0, 0
|
ori $16, $0, 4132
|
||||||
# was: ori _arg_46_, $0, 0
|
# was: ori _tmp_10_, $0, 4132
|
||||||
# ori $2,_arg_46_,0
|
# ori _letBind_9_,_tmp_10_,0
|
||||||
jal test
|
ori $2, $16, 0
|
||||||
# was: jal test, $2
|
# was: ori $2, _letBind_9_, 0
|
||||||
# ori _tmp_45_,$2,0
|
|
||||||
ori $17, $2, 0
|
|
||||||
# was: ori _letBind_44_, _tmp_45_, 0
|
|
||||||
ori $2, $17, 0
|
|
||||||
# was: ori $2, _letBind_44_, 0
|
|
||||||
jal putint
|
jal putint
|
||||||
# was: jal putint, $2
|
# was: jal putint, $2
|
||||||
ori $2, $0, 1
|
ori $2, $0, 1
|
||||||
# was: ori _arg_50_, $0, 1
|
# was: ori _arg_14_, $0, 1
|
||||||
# ori $2,_arg_50_,0
|
# ori $2,_arg_14_,0
|
||||||
jal zero
|
jal zero
|
||||||
# was: jal zero, $2
|
# was: jal zero, $2
|
||||||
# ori _arg_49_,$2,0
|
# ori _letBind_13_,$2,0
|
||||||
# ori $2,_arg_49_,0
|
ori $3, $0, 1
|
||||||
jal test
|
# was: ori _plus_L_16_, $0, 1
|
||||||
# was: jal test, $2
|
# ori _plus_R_17_,_letBind_13_,0
|
||||||
# ori _tmp_48_,$2,0
|
add $0, $3, $2
|
||||||
ori $16, $2, 0
|
# was: add _letBind_15_, _plus_L_16_, _plus_R_17_
|
||||||
# was: ori _letBind_47_, _tmp_48_, 0
|
ori $3, $0, 2
|
||||||
ori $2, $16, 0
|
# was: ori _plus_L_19_, $0, 2
|
||||||
# was: ori $2, _letBind_47_, 0
|
# ori _plus_R_20_,_letBind_13_,0
|
||||||
|
add $0, $3, $2
|
||||||
|
# was: add _letBind_18_, _plus_L_19_, _plus_R_20_
|
||||||
|
ori $3, $0, 3
|
||||||
|
# was: ori _plus_L_22_, $0, 3
|
||||||
|
# ori _plus_R_23_,_letBind_13_,0
|
||||||
|
add $3, $3, $2
|
||||||
|
# was: add _letBind_21_, _plus_L_22_, _plus_R_23_
|
||||||
|
ori $4, $0, 4
|
||||||
|
# was: ori _plus_L_25_, $0, 4
|
||||||
|
# ori _plus_R_26_,_letBind_13_,0
|
||||||
|
add $2, $4, $2
|
||||||
|
# was: add _letBind_24_, _plus_L_25_, _plus_R_26_
|
||||||
|
# ori _letBind_27_,_letBind_24_,0
|
||||||
|
# ori _letBind_28_,_letBind_27_,0
|
||||||
|
# ori _letBind_29_,_letBind_21_,0
|
||||||
|
ori $4, $0, 1000
|
||||||
|
# was: ori _times_L_36_, $0, 1000
|
||||||
|
ori $5, $2, 0
|
||||||
|
# was: ori _times_R_37_, _letBind_27_, 0
|
||||||
|
mul $4, $4, $5
|
||||||
|
# was: mul _plus_L_34_, _times_L_36_, _times_R_37_
|
||||||
|
ori $5, $0, 100
|
||||||
|
# was: ori _times_L_38_, $0, 100
|
||||||
|
# ori _times_R_39_,_letBind_28_,0
|
||||||
|
mul $5, $5, $2
|
||||||
|
# was: mul _plus_R_35_, _times_L_38_, _times_R_39_
|
||||||
|
add $4, $4, $5
|
||||||
|
# was: add _plus_L_32_, _plus_L_34_, _plus_R_35_
|
||||||
|
ori $5, $0, 10
|
||||||
|
# was: ori _times_L_40_, $0, 10
|
||||||
|
# ori _times_R_41_,_letBind_29_,0
|
||||||
|
mul $3, $5, $3
|
||||||
|
# was: mul _plus_R_33_, _times_L_40_, _times_R_41_
|
||||||
|
add $3, $4, $3
|
||||||
|
# was: add _plus_L_30_, _plus_L_32_, _plus_R_33_
|
||||||
|
# ori _plus_R_31_,_letBind_28_,0
|
||||||
|
add $17, $3, $2
|
||||||
|
# was: add _tmp_12_, _plus_L_30_, _plus_R_31_
|
||||||
|
# ori _letBind_11_,_tmp_12_,0
|
||||||
|
ori $2, $17, 0
|
||||||
|
# was: ori $2, _letBind_11_, 0
|
||||||
jal putint
|
jal putint
|
||||||
# was: jal putint, $2
|
# was: jal putint, $2
|
||||||
ori $2, $0, 10000
|
ori $2, $0, 10000
|
||||||
# was: ori _times_L_53_, $0, 10000
|
# was: ori _times_L_44_, $0, 10000
|
||||||
# ori _times_R_54_,_letBind_44_,0
|
# ori _times_R_45_,_letBind_9_,0
|
||||||
mul $2, $2, $17
|
mul $2, $2, $16
|
||||||
# was: mul _plus_L_51_, _times_L_53_, _times_R_54_
|
# was: mul _plus_L_42_, _times_L_44_, _times_R_45_
|
||||||
# ori _plus_R_52_,_letBind_47_,0
|
# ori _plus_R_43_,_letBind_11_,0
|
||||||
add $2, $2, $16
|
add $2, $2, $17
|
||||||
# was: add _mainres_43_, _plus_L_51_, _plus_R_52_
|
# was: add _mainres_8_, _plus_L_42_, _plus_R_43_
|
||||||
# ori $2,_mainres_43_,0
|
# ori $2,_mainres_8_,0
|
||||||
addi $29, $29, 16
|
addi $29, $29, 16
|
||||||
lw $17, -12($29)
|
lw $17, -12($29)
|
||||||
lw $16, -8($29)
|
lw $16, -8($29)
|
||||||
|
1
tests/inline_shadow.out-testresult
Normal file
1
tests/inline_shadow.out-testresult
Normal file
@ -0,0 +1 @@
|
|||||||
|
4132 4434
|
1524
tests/io_mssp.asm
1524
tests/io_mssp.asm
File diff suppressed because it is too large
Load Diff
356
tests/lambda.asm
356
tests/lambda.asm
@ -1,12 +1,12 @@
|
|||||||
.text 0x00400000
|
.text 0x00400000
|
||||||
.globl main
|
.globl main
|
||||||
la $28, _heap_
|
la $28, _heap_
|
||||||
la $4, _a__str__45_
|
la $4, _a__str__41_
|
||||||
# was: la _a__str__45__addr, _a__str__45_
|
# was: la _a__str__41__addr, _a__str__41_
|
||||||
ori $3, $0, 1
|
ori $3, $0, 1
|
||||||
# was: ori _a__str__45__init, $0, 1
|
# was: ori _a__str__41__init, $0, 1
|
||||||
sw $3, 0($4)
|
sw $3, 0($4)
|
||||||
# was: sw _a__str__45__init, 0(_a__str__45__addr)
|
# was: sw _a__str__41__init, 0(_a__str__41__addr)
|
||||||
la $4, _true
|
la $4, _true
|
||||||
# was: la _true_addr, _true
|
# was: la _true_addr, _true
|
||||||
ori $3, $0, 4
|
ori $3, $0, 4
|
||||||
@ -23,225 +23,195 @@
|
|||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
# Function write_int
|
# Function main
|
||||||
write_int:
|
main:
|
||||||
sw $31, -4($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -12
|
|
||||||
# ori _param_x_1_,$2,0
|
|
||||||
ori $16, $2, 0
|
|
||||||
# was: ori _tmp_3_, _param_x_1_, 0
|
|
||||||
# ori _write_intres_2_,_tmp_3_,0
|
|
||||||
ori $2, $16, 0
|
|
||||||
# was: ori $2, _write_intres_2_, 0
|
|
||||||
jal putint
|
|
||||||
# was: jal putint, $2
|
|
||||||
ori $2, $16, 0
|
|
||||||
# was: ori $2, _write_intres_2_, 0
|
|
||||||
addi $29, $29, 12
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function write_int_arr
|
|
||||||
write_int_arr:
|
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
|
sw $21, -28($29)
|
||||||
sw $20, -24($29)
|
sw $20, -24($29)
|
||||||
sw $19, -20($29)
|
sw $19, -20($29)
|
||||||
sw $18, -16($29)
|
sw $18, -16($29)
|
||||||
sw $17, -12($29)
|
sw $17, -12($29)
|
||||||
sw $16, -8($29)
|
sw $16, -8($29)
|
||||||
addi $29, $29, -28
|
addi $29, $29, -32
|
||||||
# ori _param_x_4_,$2,0
|
|
||||||
# map
|
|
||||||
# ori _arr_reg_7_,_param_x_4_,0
|
|
||||||
lw $16, 0($2)
|
|
||||||
# was: lw _size_reg_6_, 0(_arr_reg_7_)
|
|
||||||
# dynalloc
|
|
||||||
ori $17, $28, 0
|
|
||||||
# was: ori _write_int_arrres_5_, $28, 0
|
|
||||||
sll $3, $16, 2
|
|
||||||
# was: sll _tmp_16_, _size_reg_6_, 2
|
|
||||||
addi $3, $3, 4
|
|
||||||
# was: addi _tmp_16_, _tmp_16_, 4
|
|
||||||
add $28, $28, $3
|
|
||||||
# was: add $28, $28, _tmp_16_
|
|
||||||
sw $16, 0($17)
|
|
||||||
# was: sw _size_reg_6_, 0(_write_int_arrres_5_)
|
|
||||||
addi $18, $17, 4
|
|
||||||
# was: addi _addr_reg_10_, _write_int_arrres_5_, 4
|
|
||||||
ori $19, $0, 0
|
|
||||||
# was: ori _i_reg_11_, $0, 0
|
|
||||||
addi $20, $2, 4
|
|
||||||
# was: addi _elem_reg_8_, _arr_reg_7_, 4
|
|
||||||
_loop_beg_12_:
|
|
||||||
sub $2, $19, $16
|
|
||||||
# was: sub _tmp_reg_14_, _i_reg_11_, _size_reg_6_
|
|
||||||
bgez $2, _loop_end_13_
|
|
||||||
# was: bgez _tmp_reg_14_, _loop_end_13_
|
|
||||||
lw $2, 0($20)
|
|
||||||
# was: lw _res_reg_9_, 0(_elem_reg_8_)
|
|
||||||
addi $20, $20, 4
|
|
||||||
# was: addi _elem_reg_8_, _elem_reg_8_, 4
|
|
||||||
# ori $2,_res_reg_9_,0
|
|
||||||
jal write_int
|
|
||||||
# was: jal write_int, $2
|
|
||||||
# ori _tmp_reg_15_,$2,0
|
|
||||||
# ori _res_reg_9_,_tmp_reg_15_,0
|
|
||||||
sw $2, 0($18)
|
|
||||||
# was: sw _res_reg_9_, 0(_addr_reg_10_)
|
|
||||||
addi $18, $18, 4
|
|
||||||
# was: addi _addr_reg_10_, _addr_reg_10_, 4
|
|
||||||
addi $19, $19, 1
|
|
||||||
# was: addi _i_reg_11_, _i_reg_11_, 1
|
|
||||||
j _loop_beg_12_
|
|
||||||
_loop_end_13_:
|
|
||||||
ori $2, $17, 0
|
|
||||||
# was: ori $2, _write_int_arrres_5_, 0
|
|
||||||
addi $29, $29, 28
|
|
||||||
lw $20, -24($29)
|
|
||||||
lw $19, -20($29)
|
|
||||||
lw $18, -16($29)
|
|
||||||
lw $17, -12($29)
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function main
|
|
||||||
main:
|
|
||||||
sw $31, -4($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -12
|
|
||||||
jal getint
|
jal getint
|
||||||
# was: jal getint, $2
|
# was: jal getint, $2
|
||||||
# ori _letBind_18_,$2,0
|
# ori _letBind_2_,$2,0
|
||||||
ori $5, $2, 0
|
# ori _size_reg_4_,_letBind_2_,0
|
||||||
# was: ori _size_reg_20_, _letBind_18_, 0
|
bgez $2, _safe_lab_5_
|
||||||
bgez $5, _safe_lab_21_
|
# was: bgez _size_reg_4_, _safe_lab_5_
|
||||||
# was: bgez _size_reg_20_, _safe_lab_21_
|
|
||||||
ori $5, $0, 7
|
ori $5, $0, 7
|
||||||
# was: ori $5, $0, 7
|
# was: ori $5, $0, 7
|
||||||
la $6, _Msg_IllegalArraySize_
|
la $6, _Msg_IllegalArraySize_
|
||||||
# was: la $6, _Msg_IllegalArraySize_
|
# was: la $6, _Msg_IllegalArraySize_
|
||||||
j _RuntimeError_
|
j _RuntimeError_
|
||||||
_safe_lab_21_:
|
_safe_lab_5_:
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $6, $28, 0
|
ori $6, $28, 0
|
||||||
# was: ori _letBind_19_, $28, 0
|
# was: ori _letBind_3_, $28, 0
|
||||||
sll $2, $5, 2
|
sll $3, $2, 2
|
||||||
# was: sll _tmp_27_, _size_reg_20_, 2
|
# was: sll _tmp_11_, _size_reg_4_, 2
|
||||||
addi $2, $2, 4
|
addi $3, $3, 4
|
||||||
# was: addi _tmp_27_, _tmp_27_, 4
|
# was: addi _tmp_11_, _tmp_11_, 4
|
||||||
add $28, $28, $2
|
add $28, $28, $3
|
||||||
# was: add $28, $28, _tmp_27_
|
# was: add $28, $28, _tmp_11_
|
||||||
sw $5, 0($6)
|
sw $2, 0($6)
|
||||||
# was: sw _size_reg_20_, 0(_letBind_19_)
|
# was: sw _size_reg_4_, 0(_letBind_3_)
|
||||||
addi $2, $6, 4
|
addi $5, $6, 4
|
||||||
# was: addi _addr_reg_22_, _letBind_19_, 4
|
# was: addi _addr_reg_6_, _letBind_3_, 4
|
||||||
ori $4, $0, 0
|
ori $3, $0, 0
|
||||||
# was: ori _i_reg_23_, $0, 0
|
# was: ori _i_reg_7_, $0, 0
|
||||||
_loop_beg_24_:
|
_loop_beg_8_:
|
||||||
sub $3, $4, $5
|
sub $4, $3, $2
|
||||||
# was: sub _tmp_reg_26_, _i_reg_23_, _size_reg_20_
|
# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_
|
||||||
bgez $3, _loop_end_25_
|
bgez $4, _loop_end_9_
|
||||||
# was: bgez _tmp_reg_26_, _loop_end_25_
|
# was: bgez _tmp_reg_10_, _loop_end_9_
|
||||||
sw $4, 0($2)
|
sw $3, 0($5)
|
||||||
# was: sw _i_reg_23_, 0(_addr_reg_22_)
|
# was: sw _i_reg_7_, 0(_addr_reg_6_)
|
||||||
addi $2, $2, 4
|
addi $5, $5, 4
|
||||||
# was: addi _addr_reg_22_, _addr_reg_22_, 4
|
# was: addi _addr_reg_6_, _addr_reg_6_, 4
|
||||||
addi $4, $4, 1
|
addi $3, $3, 1
|
||||||
# was: addi _i_reg_23_, _i_reg_23_, 1
|
# was: addi _i_reg_7_, _i_reg_7_, 1
|
||||||
j _loop_beg_24_
|
j _loop_beg_8_
|
||||||
_loop_end_25_:
|
_loop_end_9_:
|
||||||
# map
|
# map
|
||||||
# ori _arr_reg_31_,_letBind_19_,0
|
# ori _arr_reg_15_,_letBind_3_,0
|
||||||
lw $2, 0($6)
|
lw $3, 0($6)
|
||||||
# was: lw _size_reg_30_, 0(_arr_reg_31_)
|
# was: lw _size_reg_14_, 0(_arr_reg_15_)
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $3, $28, 0
|
ori $2, $28, 0
|
||||||
# was: ori _arg_29_, $28, 0
|
# was: ori _letBind_13_, $28, 0
|
||||||
sll $4, $2, 2
|
sll $4, $3, 2
|
||||||
# was: sll _tmp_42_, _size_reg_30_, 2
|
# was: sll _tmp_26_, _size_reg_14_, 2
|
||||||
addi $4, $4, 4
|
addi $4, $4, 4
|
||||||
# was: addi _tmp_42_, _tmp_42_, 4
|
# was: addi _tmp_26_, _tmp_26_, 4
|
||||||
add $28, $28, $4
|
add $28, $28, $4
|
||||||
# was: add $28, $28, _tmp_42_
|
# was: add $28, $28, _tmp_26_
|
||||||
sw $2, 0($3)
|
sw $3, 0($2)
|
||||||
# was: sw _size_reg_30_, 0(_arg_29_)
|
# was: sw _size_reg_14_, 0(_letBind_13_)
|
||||||
addi $4, $3, 4
|
addi $4, $2, 4
|
||||||
# was: addi _addr_reg_34_, _arg_29_, 4
|
# was: addi _addr_reg_18_, _letBind_13_, 4
|
||||||
ori $5, $0, 0
|
ori $5, $0, 0
|
||||||
# was: ori _i_reg_35_, $0, 0
|
# was: ori _i_reg_19_, $0, 0
|
||||||
addi $6, $6, 4
|
addi $6, $6, 4
|
||||||
# was: addi _elem_reg_32_, _arr_reg_31_, 4
|
# was: addi _elem_reg_16_, _arr_reg_15_, 4
|
||||||
_loop_beg_36_:
|
_loop_beg_20_:
|
||||||
sub $7, $5, $2
|
sub $7, $5, $3
|
||||||
# was: sub _tmp_reg_38_, _i_reg_35_, _size_reg_30_
|
# was: sub _tmp_reg_22_, _i_reg_19_, _size_reg_14_
|
||||||
bgez $7, _loop_end_37_
|
bgez $7, _loop_end_21_
|
||||||
# was: bgez _tmp_reg_38_, _loop_end_37_
|
# was: bgez _tmp_reg_22_, _loop_end_21_
|
||||||
lw $7, 0($6)
|
lw $7, 0($6)
|
||||||
# was: lw _res_reg_33_, 0(_elem_reg_32_)
|
# was: lw _res_reg_17_, 0(_elem_reg_16_)
|
||||||
addi $6, $6, 4
|
addi $6, $6, 4
|
||||||
# was: addi _elem_reg_32_, _elem_reg_32_, 4
|
# was: addi _elem_reg_16_, _elem_reg_16_, 4
|
||||||
# ori _plus_L_40_,_res_reg_33_,0
|
ori $8, $7, 0
|
||||||
ori $8, $0, 2
|
# was: ori _plus_L_24_, _res_reg_17_, 0
|
||||||
# was: ori _plus_R_41_, $0, 2
|
ori $7, $0, 2
|
||||||
add $7, $7, $8
|
# was: ori _plus_R_25_, $0, 2
|
||||||
# was: add _fun_arg_res_39_, _plus_L_40_, _plus_R_41_
|
add $7, $8, $7
|
||||||
# ori _res_reg_33_,_fun_arg_res_39_,0
|
# was: add _fun_arg_res_23_, _plus_L_24_, _plus_R_25_
|
||||||
|
# ori _res_reg_17_,_fun_arg_res_23_,0
|
||||||
sw $7, 0($4)
|
sw $7, 0($4)
|
||||||
# was: sw _res_reg_33_, 0(_addr_reg_34_)
|
# was: sw _res_reg_17_, 0(_addr_reg_18_)
|
||||||
addi $4, $4, 4
|
addi $4, $4, 4
|
||||||
# was: addi _addr_reg_34_, _addr_reg_34_, 4
|
# was: addi _addr_reg_18_, _addr_reg_18_, 4
|
||||||
addi $5, $5, 1
|
addi $5, $5, 1
|
||||||
# was: addi _i_reg_35_, _i_reg_35_, 1
|
# was: addi _i_reg_19_, _i_reg_19_, 1
|
||||||
j _loop_beg_36_
|
j _loop_beg_20_
|
||||||
_loop_end_37_:
|
_loop_end_21_:
|
||||||
ori $2, $3, 0
|
# map
|
||||||
# was: ori $2, _arg_29_, 0
|
# ori _arr_reg_28_,_letBind_13_,0
|
||||||
jal write_int_arr
|
lw $17, 0($2)
|
||||||
# was: jal write_int_arr, $2
|
# was: lw _size_reg_27_, 0(_arr_reg_28_)
|
||||||
ori $16, $2, 0
|
# dynalloc
|
||||||
# was: ori _letBind_28_, $2, 0
|
ori $16, $28, 0
|
||||||
la $2, _a__str__45_
|
# was: ori _letBind_12_, $28, 0
|
||||||
# was: la _tmp_44_, _a__str__45_
|
sll $3, $17, 2
|
||||||
# _a__str__45_: string "\n"
|
# was: sll _tmp_38_, _size_reg_27_, 2
|
||||||
# ori _letBind_43_,_tmp_44_,0
|
addi $3, $3, 4
|
||||||
# ori $2,_tmp_44_,0
|
# was: addi _tmp_38_, _tmp_38_, 4
|
||||||
|
add $28, $28, $3
|
||||||
|
# was: add $28, $28, _tmp_38_
|
||||||
|
sw $17, 0($16)
|
||||||
|
# was: sw _size_reg_27_, 0(_letBind_12_)
|
||||||
|
addi $18, $16, 4
|
||||||
|
# was: addi _addr_reg_31_, _letBind_12_, 4
|
||||||
|
ori $19, $0, 0
|
||||||
|
# was: ori _i_reg_32_, $0, 0
|
||||||
|
addi $20, $2, 4
|
||||||
|
# was: addi _elem_reg_29_, _arr_reg_28_, 4
|
||||||
|
_loop_beg_33_:
|
||||||
|
sub $2, $19, $17
|
||||||
|
# was: sub _tmp_reg_35_, _i_reg_32_, _size_reg_27_
|
||||||
|
bgez $2, _loop_end_34_
|
||||||
|
# was: bgez _tmp_reg_35_, _loop_end_34_
|
||||||
|
lw $21, 0($20)
|
||||||
|
# was: lw _res_reg_30_, 0(_elem_reg_29_)
|
||||||
|
addi $20, $20, 4
|
||||||
|
# was: addi _elem_reg_29_, _elem_reg_29_, 4
|
||||||
|
# ori _tmp_37_,_res_reg_30_,0
|
||||||
|
# ori _fun_arg_res_36_,_tmp_37_,0
|
||||||
|
ori $2, $21, 0
|
||||||
|
# was: ori $2, _fun_arg_res_36_, 0
|
||||||
|
jal putint
|
||||||
|
# was: jal putint, $2
|
||||||
|
# ori _res_reg_30_,_fun_arg_res_36_,0
|
||||||
|
sw $21, 0($18)
|
||||||
|
# was: sw _res_reg_30_, 0(_addr_reg_31_)
|
||||||
|
addi $18, $18, 4
|
||||||
|
# was: addi _addr_reg_31_, _addr_reg_31_, 4
|
||||||
|
addi $19, $19, 1
|
||||||
|
# was: addi _i_reg_32_, _i_reg_32_, 1
|
||||||
|
j _loop_beg_33_
|
||||||
|
_loop_end_34_:
|
||||||
|
la $2, _a__str__41_
|
||||||
|
# was: la _tmp_40_, _a__str__41_
|
||||||
|
# _a__str__41_: string "\n"
|
||||||
|
# ori _letBind_39_,_tmp_40_,0
|
||||||
|
# ori $2,_tmp_40_,0
|
||||||
jal putstring
|
jal putstring
|
||||||
# was: jal putstring, $2
|
# was: jal putstring, $2
|
||||||
# ori _arr_reg_47_,_letBind_28_,0
|
# ori _arr_reg_43_,_letBind_12_,0
|
||||||
lw $2, 0($16)
|
lw $2, 0($16)
|
||||||
# was: lw _size_reg_48_, 0(_arr_reg_47_)
|
# was: lw _size_reg_44_, 0(_arr_reg_43_)
|
||||||
ori $4, $0, 0
|
|
||||||
# was: ori _arg_46_, $0, 0
|
|
||||||
addi $16, $16, 4
|
|
||||||
# was: addi _arr_reg_47_, _arr_reg_47_, 4
|
|
||||||
ori $3, $0, 0
|
ori $3, $0, 0
|
||||||
# was: ori _ind_var_49_, $0, 0
|
# was: ori _letBind_42_, $0, 0
|
||||||
_loop_beg_51_:
|
|
||||||
sub $5, $3, $2
|
|
||||||
# was: sub _tmp_reg_50_, _ind_var_49_, _size_reg_48_
|
|
||||||
bgez $5, _loop_end_52_
|
|
||||||
# was: bgez _tmp_reg_50_, _loop_end_52_
|
|
||||||
lw $5, 0($16)
|
|
||||||
# was: lw _tmp_reg_50_, 0(_arr_reg_47_)
|
|
||||||
addi $16, $16, 4
|
addi $16, $16, 4
|
||||||
# was: addi _arr_reg_47_, _arr_reg_47_, 4
|
# was: addi _arr_reg_43_, _arr_reg_43_, 4
|
||||||
# ori _plus_L_54_,_arg_46_,0
|
ori $4, $0, 0
|
||||||
# ori _plus_R_55_,_tmp_reg_50_,0
|
# was: ori _ind_var_45_, $0, 0
|
||||||
add $4, $4, $5
|
_loop_beg_47_:
|
||||||
# was: add _fun_arg_res_53_, _plus_L_54_, _plus_R_55_
|
sub $5, $4, $2
|
||||||
# ori _arg_46_,_fun_arg_res_53_,0
|
# was: sub _tmp_reg_46_, _ind_var_45_, _size_reg_44_
|
||||||
addi $3, $3, 1
|
bgez $5, _loop_end_48_
|
||||||
# was: addi _ind_var_49_, _ind_var_49_, 1
|
# was: bgez _tmp_reg_46_, _loop_end_48_
|
||||||
j _loop_beg_51_
|
lw $5, 0($16)
|
||||||
_loop_end_52_:
|
# was: lw _tmp_reg_46_, 0(_arr_reg_43_)
|
||||||
ori $2, $4, 0
|
addi $16, $16, 4
|
||||||
# was: ori $2, _arg_46_, 0
|
# was: addi _arr_reg_43_, _arr_reg_43_, 4
|
||||||
jal write_int
|
# ori _plus_L_50_,_letBind_42_,0
|
||||||
# was: jal write_int, $2
|
# ori _plus_R_51_,_tmp_reg_46_,0
|
||||||
# ori _mainres_17_,$2,0
|
add $3, $3, $5
|
||||||
# ori $2,_mainres_17_,0
|
# was: add _fun_arg_res_49_, _plus_L_50_, _plus_R_51_
|
||||||
addi $29, $29, 12
|
# ori _letBind_42_,_fun_arg_res_49_,0
|
||||||
|
addi $4, $4, 1
|
||||||
|
# was: addi _ind_var_45_, _ind_var_45_, 1
|
||||||
|
j _loop_beg_47_
|
||||||
|
_loop_end_48_:
|
||||||
|
# ori _tmp_52_,_letBind_42_,0
|
||||||
|
ori $16, $3, 0
|
||||||
|
# was: ori _mainres_1_, _tmp_52_, 0
|
||||||
|
ori $2, $16, 0
|
||||||
|
# was: ori $2, _mainres_1_, 0
|
||||||
|
jal putint
|
||||||
|
# was: jal putint, $2
|
||||||
|
ori $2, $16, 0
|
||||||
|
# was: ori $2, _mainres_1_, 0
|
||||||
|
addi $29, $29, 32
|
||||||
|
lw $21, -28($29)
|
||||||
|
lw $20, -24($29)
|
||||||
|
lw $19, -20($29)
|
||||||
|
lw $18, -16($29)
|
||||||
|
lw $17, -12($29)
|
||||||
lw $16, -8($29)
|
lw $16, -8($29)
|
||||||
lw $31, -4($29)
|
lw $31, -4($29)
|
||||||
jr $31
|
jr $31
|
||||||
@ -357,7 +327,7 @@ _Msg_DivZero_:
|
|||||||
.asciiz "division by zero"
|
.asciiz "division by zero"
|
||||||
# String Literals
|
# String Literals
|
||||||
.align 2
|
.align 2
|
||||||
_a__str__45_:
|
_a__str__41_:
|
||||||
.space 4
|
.space 4
|
||||||
.asciiz "\n"
|
.asciiz "\n"
|
||||||
.align 2
|
.align 2
|
||||||
|
@ -1,24 +1,24 @@
|
|||||||
.text 0x00400000
|
.text 0x00400000
|
||||||
.globl main
|
.globl main
|
||||||
la $28, _heap_
|
la $28, _heap_
|
||||||
la $4, _Maxacha_82_
|
la $4, _Maxacha_72_
|
||||||
# was: la _Maxacha_82__addr, _Maxacha_82_
|
# was: la _Maxacha_72__addr, _Maxacha_72_
|
||||||
ori $3, $0, 10
|
ori $3, $0, 10
|
||||||
# was: ori _Maxacha_82__init, $0, 10
|
# was: ori _Maxacha_72__init, $0, 10
|
||||||
sw $3, 0($4)
|
sw $3, 0($4)
|
||||||
# was: sw _Maxacha_82__init, 0(_Maxacha_82__addr)
|
# was: sw _Maxacha_72__init, 0(_Maxacha_72__addr)
|
||||||
la $4, _a__str__79_
|
la $4, _a__str__69_
|
||||||
# was: la _a__str__79__addr, _a__str__79_
|
# was: la _a__str__69__addr, _a__str__69_
|
||||||
ori $3, $0, 1
|
ori $3, $0, 1
|
||||||
# was: ori _a__str__79__init, $0, 1
|
# was: ori _a__str__69__init, $0, 1
|
||||||
sw $3, 0($4)
|
sw $3, 0($4)
|
||||||
# was: sw _a__str__79__init, 0(_a__str__79__addr)
|
# was: sw _a__str__69__init, 0(_a__str__69__addr)
|
||||||
la $4, _Sumaa___74_
|
la $4, _Sumaa___64_
|
||||||
# was: la _Sumaa___74__addr, _Sumaa___74_
|
# was: la _Sumaa___64__addr, _Sumaa___64_
|
||||||
ori $3, $0, 5
|
ori $3, $0, 5
|
||||||
# was: ori _Sumaa___74__init, $0, 5
|
# was: ori _Sumaa___64__init, $0, 5
|
||||||
sw $3, 0($4)
|
sw $3, 0($4)
|
||||||
# was: sw _Sumaa___74__init, 0(_Sumaa___74__addr)
|
# was: sw _Sumaa___64__init, 0(_Sumaa___64__addr)
|
||||||
la $4, _true
|
la $4, _true
|
||||||
# was: la _true_addr, _true
|
# was: la _true_addr, _true
|
||||||
ori $3, $0, 4
|
ori $3, $0, 4
|
||||||
@ -35,70 +35,6 @@
|
|||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
# Function plus100
|
|
||||||
plus100:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_x_1_,$2,0
|
|
||||||
# ori _plus_L_3_,_param_x_1_,0
|
|
||||||
ori $3, $0, 100
|
|
||||||
# was: ori _plus_R_4_, $0, 100
|
|
||||||
add $2, $2, $3
|
|
||||||
# was: add _plus100res_2_, _plus_L_3_, _plus_R_4_
|
|
||||||
# ori $2,_plus100res_2_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function read_chr
|
|
||||||
read_chr:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_i_5_,$2,0
|
|
||||||
jal getchar
|
|
||||||
# was: jal getchar, $2
|
|
||||||
# ori _read_chrres_6_,$2,0
|
|
||||||
# ori $2,_read_chrres_6_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function plus
|
|
||||||
plus:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_x_7_,$2,0
|
|
||||||
# ori _param_y_8_,$3,0
|
|
||||||
# ori _plus_L_10_,_param_x_7_,0
|
|
||||||
# ori _plus_R_11_,_param_y_8_,0
|
|
||||||
add $2, $2, $3
|
|
||||||
# was: add _plusres_9_, _plus_L_10_, _plus_R_11_
|
|
||||||
# ori $2,_plusres_9_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function max_chr
|
|
||||||
max_chr:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_a_12_,$2,0
|
|
||||||
# ori _param_b_13_,$3,0
|
|
||||||
# ori _lt_L_19_,_param_a_12_,0
|
|
||||||
# ori _lt_R_20_,_param_b_13_,0
|
|
||||||
slt $4, $2, $3
|
|
||||||
# was: slt _cond_18_, _lt_L_19_, _lt_R_20_
|
|
||||||
bne $4, $0, _then_15_
|
|
||||||
# was: bne _cond_18_, $0, _then_15_
|
|
||||||
j _else_16_
|
|
||||||
_then_15_:
|
|
||||||
ori $2, $3, 0
|
|
||||||
# was: ori _max_chrres_14_, _param_b_13_, 0
|
|
||||||
j _endif_17_
|
|
||||||
_else_16_:
|
|
||||||
# ori _max_chrres_14_,_param_a_12_,0
|
|
||||||
_endif_17_:
|
|
||||||
# ori $2,_max_chrres_14_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function main
|
# Function main
|
||||||
main:
|
main:
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
@ -111,232 +47,239 @@ main:
|
|||||||
addi $29, $29, -32
|
addi $29, $29, -32
|
||||||
jal getint
|
jal getint
|
||||||
# was: jal getint, $2
|
# was: jal getint, $2
|
||||||
# ori _letBind_22_,$2,0
|
# ori _letBind_2_,$2,0
|
||||||
# ori _size_reg_24_,_letBind_22_,0
|
ori $5, $2, 0
|
||||||
bgez $2, _safe_lab_25_
|
# was: ori _size_reg_4_, _letBind_2_, 0
|
||||||
# was: bgez _size_reg_24_, _safe_lab_25_
|
bgez $5, _safe_lab_5_
|
||||||
|
# was: bgez _size_reg_4_, _safe_lab_5_
|
||||||
ori $5, $0, 10
|
ori $5, $0, 10
|
||||||
# was: ori $5, $0, 10
|
# was: ori $5, $0, 10
|
||||||
la $6, _Msg_IllegalArraySize_
|
la $6, _Msg_IllegalArraySize_
|
||||||
# was: la $6, _Msg_IllegalArraySize_
|
# was: la $6, _Msg_IllegalArraySize_
|
||||||
j _RuntimeError_
|
j _RuntimeError_
|
||||||
_safe_lab_25_:
|
_safe_lab_5_:
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $16, $28, 0
|
ori $3, $28, 0
|
||||||
# was: ori _letBind_23_, $28, 0
|
# was: ori _letBind_3_, $28, 0
|
||||||
sll $3, $2, 2
|
sll $4, $5, 2
|
||||||
# was: sll _tmp_31_, _size_reg_24_, 2
|
# was: sll _tmp_11_, _size_reg_4_, 2
|
||||||
addi $3, $3, 4
|
addi $4, $4, 4
|
||||||
# was: addi _tmp_31_, _tmp_31_, 4
|
# was: addi _tmp_11_, _tmp_11_, 4
|
||||||
add $28, $28, $3
|
add $28, $28, $4
|
||||||
# was: add $28, $28, _tmp_31_
|
# was: add $28, $28, _tmp_11_
|
||||||
sw $2, 0($16)
|
sw $5, 0($3)
|
||||||
# was: sw _size_reg_24_, 0(_letBind_23_)
|
# was: sw _size_reg_4_, 0(_letBind_3_)
|
||||||
addi $3, $16, 4
|
addi $7, $3, 4
|
||||||
# was: addi _addr_reg_26_, _letBind_23_, 4
|
# was: addi _addr_reg_6_, _letBind_3_, 4
|
||||||
ori $4, $0, 0
|
ori $4, $0, 0
|
||||||
# was: ori _i_reg_27_, $0, 0
|
# was: ori _i_reg_7_, $0, 0
|
||||||
_loop_beg_28_:
|
_loop_beg_8_:
|
||||||
sub $5, $4, $2
|
sub $6, $4, $5
|
||||||
# was: sub _tmp_reg_30_, _i_reg_27_, _size_reg_24_
|
# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_
|
||||||
bgez $5, _loop_end_29_
|
bgez $6, _loop_end_9_
|
||||||
# was: bgez _tmp_reg_30_, _loop_end_29_
|
# was: bgez _tmp_reg_10_, _loop_end_9_
|
||||||
sw $4, 0($3)
|
sw $4, 0($7)
|
||||||
# was: sw _i_reg_27_, 0(_addr_reg_26_)
|
# was: sw _i_reg_7_, 0(_addr_reg_6_)
|
||||||
addi $3, $3, 4
|
addi $7, $7, 4
|
||||||
# was: addi _addr_reg_26_, _addr_reg_26_, 4
|
# was: addi _addr_reg_6_, _addr_reg_6_, 4
|
||||||
addi $4, $4, 1
|
addi $4, $4, 1
|
||||||
# was: addi _i_reg_27_, _i_reg_27_, 1
|
# was: addi _i_reg_7_, _i_reg_7_, 1
|
||||||
j _loop_beg_28_
|
j _loop_beg_8_
|
||||||
_loop_end_29_:
|
_loop_end_9_:
|
||||||
# map
|
# map
|
||||||
# ori _arr_reg_34_,_letBind_23_,0
|
# ori _arr_reg_14_,_letBind_3_,0
|
||||||
lw $17, 0($16)
|
lw $5, 0($3)
|
||||||
# was: lw _size_reg_33_, 0(_arr_reg_34_)
|
# was: lw _size_reg_13_, 0(_arr_reg_14_)
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $20, $28, 0
|
ori $4, $28, 0
|
||||||
# was: ori _letBind_32_, $28, 0
|
# was: ori _letBind_12_, $28, 0
|
||||||
sll $2, $17, 2
|
sll $6, $5, 2
|
||||||
# was: sll _tmp_43_, _size_reg_33_, 2
|
# was: sll _tmp_25_, _size_reg_13_, 2
|
||||||
addi $2, $2, 4
|
addi $6, $6, 4
|
||||||
# was: addi _tmp_43_, _tmp_43_, 4
|
# was: addi _tmp_25_, _tmp_25_, 4
|
||||||
add $28, $28, $2
|
add $28, $28, $6
|
||||||
# was: add $28, $28, _tmp_43_
|
# was: add $28, $28, _tmp_25_
|
||||||
sw $17, 0($20)
|
sw $5, 0($4)
|
||||||
# was: sw _size_reg_33_, 0(_letBind_32_)
|
# was: sw _size_reg_13_, 0(_letBind_12_)
|
||||||
addi $18, $20, 4
|
addi $7, $4, 4
|
||||||
# was: addi _addr_reg_37_, _letBind_32_, 4
|
# was: addi _addr_reg_17_, _letBind_12_, 4
|
||||||
ori $19, $0, 0
|
ori $6, $0, 0
|
||||||
# was: ori _i_reg_38_, $0, 0
|
# was: ori _i_reg_18_, $0, 0
|
||||||
addi $21, $16, 4
|
addi $8, $3, 4
|
||||||
# was: addi _elem_reg_35_, _arr_reg_34_, 4
|
# was: addi _elem_reg_15_, _arr_reg_14_, 4
|
||||||
_loop_beg_39_:
|
_loop_beg_19_:
|
||||||
sub $2, $19, $17
|
sub $9, $6, $5
|
||||||
# was: sub _tmp_reg_41_, _i_reg_38_, _size_reg_33_
|
# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_13_
|
||||||
bgez $2, _loop_end_40_
|
bgez $9, _loop_end_20_
|
||||||
# was: bgez _tmp_reg_41_, _loop_end_40_
|
# was: bgez _tmp_reg_21_, _loop_end_20_
|
||||||
lw $2, 0($21)
|
lw $9, 0($8)
|
||||||
# was: lw _res_reg_36_, 0(_elem_reg_35_)
|
# was: lw _res_reg_16_, 0(_elem_reg_15_)
|
||||||
addi $21, $21, 4
|
addi $8, $8, 4
|
||||||
# was: addi _elem_reg_35_, _elem_reg_35_, 4
|
# was: addi _elem_reg_15_, _elem_reg_15_, 4
|
||||||
# ori $2,_res_reg_36_,0
|
# ori _plus_L_23_,_res_reg_16_,0
|
||||||
jal plus100
|
ori $10, $0, 100
|
||||||
# was: jal plus100, $2
|
# was: ori _plus_R_24_, $0, 100
|
||||||
# ori _tmp_reg_42_,$2,0
|
add $9, $9, $10
|
||||||
# ori _res_reg_36_,_tmp_reg_42_,0
|
# was: add _fun_arg_res_22_, _plus_L_23_, _plus_R_24_
|
||||||
sw $2, 0($18)
|
# ori _res_reg_16_,_fun_arg_res_22_,0
|
||||||
# was: sw _res_reg_36_, 0(_addr_reg_37_)
|
sw $9, 0($7)
|
||||||
addi $18, $18, 4
|
# was: sw _res_reg_16_, 0(_addr_reg_17_)
|
||||||
# was: addi _addr_reg_37_, _addr_reg_37_, 4
|
addi $7, $7, 4
|
||||||
addi $19, $19, 1
|
# was: addi _addr_reg_17_, _addr_reg_17_, 4
|
||||||
# was: addi _i_reg_38_, _i_reg_38_, 1
|
addi $6, $6, 1
|
||||||
j _loop_beg_39_
|
# was: addi _i_reg_18_, _i_reg_18_, 1
|
||||||
_loop_end_40_:
|
j _loop_beg_19_
|
||||||
# ori _arr_reg_45_,_letBind_32_,0
|
_loop_end_20_:
|
||||||
lw $18, 0($20)
|
ori $7, $4, 0
|
||||||
# was: lw _size_reg_46_, 0(_arr_reg_45_)
|
# was: ori _arr_reg_27_, _letBind_12_, 0
|
||||||
|
lw $5, 0($7)
|
||||||
|
# was: lw _size_reg_28_, 0(_arr_reg_27_)
|
||||||
ori $17, $0, 0
|
ori $17, $0, 0
|
||||||
# was: ori _letBind_44_, $0, 0
|
# was: ori _letBind_26_, $0, 0
|
||||||
addi $20, $20, 4
|
addi $7, $7, 4
|
||||||
# was: addi _arr_reg_45_, _arr_reg_45_, 4
|
# was: addi _arr_reg_27_, _arr_reg_27_, 4
|
||||||
ori $19, $0, 0
|
ori $6, $0, 0
|
||||||
# was: ori _ind_var_47_, $0, 0
|
# was: ori _ind_var_29_, $0, 0
|
||||||
_loop_beg_49_:
|
_loop_beg_31_:
|
||||||
sub $3, $19, $18
|
sub $4, $6, $5
|
||||||
# was: sub _tmp_reg_48_, _ind_var_47_, _size_reg_46_
|
# was: sub _tmp_reg_30_, _ind_var_29_, _size_reg_28_
|
||||||
bgez $3, _loop_end_50_
|
bgez $4, _loop_end_32_
|
||||||
# was: bgez _tmp_reg_48_, _loop_end_50_
|
# was: bgez _tmp_reg_30_, _loop_end_32_
|
||||||
lw $3, 0($20)
|
lw $4, 0($7)
|
||||||
# was: lw _tmp_reg_48_, 0(_arr_reg_45_)
|
# was: lw _tmp_reg_30_, 0(_arr_reg_27_)
|
||||||
addi $20, $20, 4
|
addi $7, $7, 4
|
||||||
# was: addi _arr_reg_45_, _arr_reg_45_, 4
|
# was: addi _arr_reg_27_, _arr_reg_27_, 4
|
||||||
ori $2, $17, 0
|
# ori _plus_L_34_,_letBind_26_,0
|
||||||
# was: ori $2, _letBind_44_, 0
|
# ori _plus_R_35_,_tmp_reg_30_,0
|
||||||
# ori $3,_tmp_reg_48_,0
|
add $17, $17, $4
|
||||||
jal plus
|
# was: add _fun_arg_res_33_, _plus_L_34_, _plus_R_35_
|
||||||
# was: jal plus, $2 $3
|
# ori _letBind_26_,_fun_arg_res_33_,0
|
||||||
# ori _tmp_reg_51_,$2,0
|
addi $6, $6, 1
|
||||||
ori $17, $2, 0
|
# was: addi _ind_var_29_, _ind_var_29_, 1
|
||||||
# was: ori _letBind_44_, _tmp_reg_51_, 0
|
j _loop_beg_31_
|
||||||
addi $19, $19, 1
|
_loop_end_32_:
|
||||||
# was: addi _ind_var_47_, _ind_var_47_, 1
|
|
||||||
j _loop_beg_49_
|
|
||||||
_loop_end_50_:
|
|
||||||
# map
|
# map
|
||||||
ori $2, $16, 0
|
# ori _arr_reg_38_,_letBind_3_,0
|
||||||
# was: ori _arr_reg_54_, _letBind_23_, 0
|
lw $18, 0($3)
|
||||||
lw $18, 0($2)
|
# was: lw _size_reg_37_, 0(_arr_reg_38_)
|
||||||
# was: lw _size_reg_53_, 0(_arr_reg_54_)
|
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $16, $28, 0
|
ori $16, $28, 0
|
||||||
# was: ori _letBind_52_, $28, 0
|
# was: ori _letBind_36_, $28, 0
|
||||||
addi $3, $18, 3
|
addi $4, $18, 3
|
||||||
# was: addi _tmp_63_, _size_reg_53_, 3
|
# was: addi _tmp_47_, _size_reg_37_, 3
|
||||||
sra $3, $3, 2
|
sra $4, $4, 2
|
||||||
# was: sra _tmp_63_, _tmp_63_, 2
|
# was: sra _tmp_47_, _tmp_47_, 2
|
||||||
sll $3, $3, 2
|
sll $4, $4, 2
|
||||||
# was: sll _tmp_63_, _tmp_63_, 2
|
# was: sll _tmp_47_, _tmp_47_, 2
|
||||||
addi $3, $3, 4
|
addi $4, $4, 4
|
||||||
# was: addi _tmp_63_, _tmp_63_, 4
|
# was: addi _tmp_47_, _tmp_47_, 4
|
||||||
add $28, $28, $3
|
add $28, $28, $4
|
||||||
# was: add $28, $28, _tmp_63_
|
# was: add $28, $28, _tmp_47_
|
||||||
sw $18, 0($16)
|
sw $18, 0($16)
|
||||||
# was: sw _size_reg_53_, 0(_letBind_52_)
|
# was: sw _size_reg_37_, 0(_letBind_36_)
|
||||||
addi $20, $16, 4
|
addi $20, $16, 4
|
||||||
# was: addi _addr_reg_57_, _letBind_52_, 4
|
# was: addi _addr_reg_41_, _letBind_36_, 4
|
||||||
ori $19, $0, 0
|
ori $19, $0, 0
|
||||||
# was: ori _i_reg_58_, $0, 0
|
# was: ori _i_reg_42_, $0, 0
|
||||||
addi $21, $2, 4
|
addi $21, $3, 4
|
||||||
# was: addi _elem_reg_55_, _arr_reg_54_, 4
|
# was: addi _elem_reg_39_, _arr_reg_38_, 4
|
||||||
_loop_beg_59_:
|
_loop_beg_43_:
|
||||||
sub $2, $19, $18
|
sub $3, $19, $18
|
||||||
# was: sub _tmp_reg_61_, _i_reg_58_, _size_reg_53_
|
# was: sub _tmp_reg_45_, _i_reg_42_, _size_reg_37_
|
||||||
bgez $2, _loop_end_60_
|
bgez $3, _loop_end_44_
|
||||||
# was: bgez _tmp_reg_61_, _loop_end_60_
|
# was: bgez _tmp_reg_45_, _loop_end_44_
|
||||||
lw $2, 0($21)
|
lw $3, 0($21)
|
||||||
# was: lw _res_reg_56_, 0(_elem_reg_55_)
|
# was: lw _res_reg_40_, 0(_elem_reg_39_)
|
||||||
addi $21, $21, 4
|
addi $21, $21, 4
|
||||||
# was: addi _elem_reg_55_, _elem_reg_55_, 4
|
# was: addi _elem_reg_39_, _elem_reg_39_, 4
|
||||||
# ori $2,_res_reg_56_,0
|
jal getchar
|
||||||
jal read_chr
|
# was: jal getchar, $2
|
||||||
# was: jal read_chr, $2
|
# ori _fun_arg_res_46_,$2,0
|
||||||
# ori _tmp_reg_62_,$2,0
|
ori $3, $2, 0
|
||||||
# ori _res_reg_56_,_tmp_reg_62_,0
|
# was: ori _res_reg_40_, _fun_arg_res_46_, 0
|
||||||
sb $2, 0($20)
|
sb $3, 0($20)
|
||||||
# was: sb _res_reg_56_, 0(_addr_reg_57_)
|
# was: sb _res_reg_40_, 0(_addr_reg_41_)
|
||||||
addi $20, $20, 1
|
addi $20, $20, 1
|
||||||
# was: addi _addr_reg_57_, _addr_reg_57_, 1
|
# was: addi _addr_reg_41_, _addr_reg_41_, 1
|
||||||
addi $19, $19, 1
|
addi $19, $19, 1
|
||||||
# was: addi _i_reg_58_, _i_reg_58_, 1
|
# was: addi _i_reg_42_, _i_reg_42_, 1
|
||||||
j _loop_beg_59_
|
j _loop_beg_43_
|
||||||
_loop_end_60_:
|
_loop_end_44_:
|
||||||
ori $20, $16, 0
|
ori $2, $16, 0
|
||||||
# was: ori _arr_reg_65_, _letBind_52_, 0
|
# was: ori _arr_reg_49_, _letBind_36_, 0
|
||||||
lw $19, 0($20)
|
lw $3, 0($2)
|
||||||
# was: lw _size_reg_66_, 0(_arr_reg_65_)
|
# was: lw _size_reg_50_, 0(_arr_reg_49_)
|
||||||
ori $18, $0, 97
|
ori $18, $0, 97
|
||||||
# was: ori _letBind_64_, $0, 97
|
# was: ori _letBind_48_, $0, 97
|
||||||
addi $20, $20, 4
|
addi $2, $2, 4
|
||||||
# was: addi _arr_reg_65_, _arr_reg_65_, 4
|
# was: addi _arr_reg_49_, _arr_reg_49_, 4
|
||||||
ori $21, $0, 0
|
ori $4, $0, 0
|
||||||
# was: ori _ind_var_67_, $0, 0
|
# was: ori _ind_var_51_, $0, 0
|
||||||
_loop_beg_69_:
|
_loop_beg_53_:
|
||||||
sub $3, $21, $19
|
sub $5, $4, $3
|
||||||
# was: sub _tmp_reg_68_, _ind_var_67_, _size_reg_66_
|
# was: sub _tmp_reg_52_, _ind_var_51_, _size_reg_50_
|
||||||
bgez $3, _loop_end_70_
|
bgez $5, _loop_end_54_
|
||||||
# was: bgez _tmp_reg_68_, _loop_end_70_
|
# was: bgez _tmp_reg_52_, _loop_end_54_
|
||||||
lb $3, 0($20)
|
lb $5, 0($2)
|
||||||
# was: lb _tmp_reg_68_, 0(_arr_reg_65_)
|
# was: lb _tmp_reg_52_, 0(_arr_reg_49_)
|
||||||
addi $20, $20, 1
|
addi $2, $2, 1
|
||||||
# was: addi _arr_reg_65_, _arr_reg_65_, 1
|
# was: addi _arr_reg_49_, _arr_reg_49_, 1
|
||||||
ori $2, $18, 0
|
# ori _lt_L_60_,_letBind_48_,0
|
||||||
# was: ori $2, _letBind_64_, 0
|
# ori _lt_R_61_,_tmp_reg_52_,0
|
||||||
# ori $3,_tmp_reg_68_,0
|
slt $6, $18, $5
|
||||||
jal max_chr
|
# was: slt _cond_59_, _lt_L_60_, _lt_R_61_
|
||||||
# was: jal max_chr, $2 $3
|
bne $6, $0, _then_56_
|
||||||
# ori _tmp_reg_71_,$2,0
|
# was: bne _cond_59_, $0, _then_56_
|
||||||
ori $18, $2, 0
|
j _else_57_
|
||||||
# was: ori _letBind_64_, _tmp_reg_71_, 0
|
_then_56_:
|
||||||
addi $21, $21, 1
|
# ori _fun_arg_res_55_,_tmp_reg_52_,0
|
||||||
# was: addi _ind_var_67_, _ind_var_67_, 1
|
j _endif_58_
|
||||||
j _loop_beg_69_
|
_else_57_:
|
||||||
_loop_end_70_:
|
ori $5, $18, 0
|
||||||
la $2, _Sumaa___74_
|
# was: ori _fun_arg_res_55_, _letBind_48_, 0
|
||||||
# was: la _tmp_73_, _Sumaa___74_
|
_endif_58_:
|
||||||
# _Sumaa___74_: string "Sum: "
|
ori $18, $5, 0
|
||||||
# ori _letBind_72_,_tmp_73_,0
|
# was: ori _letBind_48_, _fun_arg_res_55_, 0
|
||||||
# ori $2,_tmp_73_,0
|
addi $4, $4, 1
|
||||||
|
# was: addi _ind_var_51_, _ind_var_51_, 1
|
||||||
|
j _loop_beg_53_
|
||||||
|
_loop_end_54_:
|
||||||
|
la $2, _Sumaa___64_
|
||||||
|
# was: la _tmp_63_, _Sumaa___64_
|
||||||
|
# _Sumaa___64_: string "Sum: "
|
||||||
|
# ori _letBind_62_,_tmp_63_,0
|
||||||
|
# ori $2,_tmp_63_,0
|
||||||
jal putstring
|
jal putstring
|
||||||
# was: jal putstring, $2
|
# was: jal putstring, $2
|
||||||
|
# ori _tmp_66_,_letBind_26_,0
|
||||||
ori $2, $17, 0
|
ori $2, $17, 0
|
||||||
# was: ori _tmp_76_, _letBind_44_, 0
|
# was: ori _letBind_65_, _tmp_66_, 0
|
||||||
# ori _letBind_75_,_tmp_76_,0
|
# ori $2,_letBind_65_,0
|
||||||
# ori $2,_letBind_75_,0
|
|
||||||
jal putint
|
jal putint
|
||||||
# was: jal putint, $2
|
# was: jal putint, $2
|
||||||
la $2, _a__str__79_
|
la $2, _a__str__69_
|
||||||
# was: la _tmp_78_, _a__str__79_
|
# was: la _tmp_68_, _a__str__69_
|
||||||
# _a__str__79_: string "\n"
|
# _a__str__69_: string "\n"
|
||||||
# ori _letBind_77_,_tmp_78_,0
|
# ori _letBind_67_,_tmp_68_,0
|
||||||
# ori $2,_tmp_78_,0
|
# ori $2,_tmp_68_,0
|
||||||
jal putstring
|
jal putstring
|
||||||
# was: jal putstring, $2
|
# was: jal putstring, $2
|
||||||
la $2, _Maxacha_82_
|
la $2, _Maxacha_72_
|
||||||
# was: la _tmp_81_, _Maxacha_82_
|
# was: la _tmp_71_, _Maxacha_72_
|
||||||
# _Maxacha_82_: string "Max char: "
|
# _Maxacha_72_: string "Max char: "
|
||||||
# ori _letBind_80_,_tmp_81_,0
|
# ori _letBind_70_,_tmp_71_,0
|
||||||
# ori $2,_tmp_81_,0
|
# ori $2,_tmp_71_,0
|
||||||
jal putstring
|
jal putstring
|
||||||
# was: jal putstring, $2
|
# was: jal putstring, $2
|
||||||
ori $2, $18, 0
|
ori $2, $18, 0
|
||||||
# was: ori _tmp_84_, _letBind_64_, 0
|
# was: ori _tmp_74_, _letBind_48_, 0
|
||||||
# ori _letBind_83_,_tmp_84_,0
|
# ori _letBind_73_,_tmp_74_,0
|
||||||
# ori $2,_letBind_83_,0
|
# ori $2,_letBind_73_,0
|
||||||
jal putchar
|
jal putchar
|
||||||
# was: jal putchar, $2
|
# was: jal putchar, $2
|
||||||
ori $2, $16, 0
|
ori $2, $16, 0
|
||||||
# was: ori _mainres_21_, _letBind_52_, 0
|
# was: ori _mainres_1_, _letBind_36_, 0
|
||||||
# ori $2,_mainres_21_,0
|
# ori $2,_mainres_1_,0
|
||||||
addi $29, $29, 32
|
addi $29, $29, 32
|
||||||
lw $21, -28($29)
|
lw $21, -28($29)
|
||||||
lw $20, -24($29)
|
lw $20, -24($29)
|
||||||
@ -458,15 +401,15 @@ _Msg_DivZero_:
|
|||||||
.asciiz "division by zero"
|
.asciiz "division by zero"
|
||||||
# String Literals
|
# String Literals
|
||||||
.align 2
|
.align 2
|
||||||
_Maxacha_82_:
|
_Maxacha_72_:
|
||||||
.space 4
|
.space 4
|
||||||
.asciiz "Max char: "
|
.asciiz "Max char: "
|
||||||
.align 2
|
.align 2
|
||||||
_a__str__79_:
|
_a__str__69_:
|
||||||
.space 4
|
.space 4
|
||||||
.asciiz "\n"
|
.asciiz "\n"
|
||||||
.align 2
|
.align 2
|
||||||
_Sumaa___74_:
|
_Sumaa___64_:
|
||||||
.space 4
|
.space 4
|
||||||
.asciiz "Sum: "
|
.asciiz "Sum: "
|
||||||
.align 2
|
.align 2
|
||||||
|
221
tests/negate.asm
221
tests/negate.asm
@ -1,6 +1,30 @@
|
|||||||
.text 0x00400000
|
.text 0x00400000
|
||||||
.globl main
|
.globl main
|
||||||
la $28, _heap_
|
la $28, _heap_
|
||||||
|
la $4, _a__str__39_
|
||||||
|
# was: la _a__str__39__addr, _a__str__39_
|
||||||
|
ori $3, $0, 1
|
||||||
|
# was: ori _a__str__39__init, $0, 1
|
||||||
|
sw $3, 0($4)
|
||||||
|
# was: sw _a__str__39__init, 0(_a__str__39__addr)
|
||||||
|
la $4, _a__str__29_
|
||||||
|
# was: la _a__str__29__addr, _a__str__29_
|
||||||
|
ori $3, $0, 1
|
||||||
|
# was: ori _a__str__29__init, $0, 1
|
||||||
|
sw $3, 0($4)
|
||||||
|
# was: sw _a__str__29__init, 0(_a__str__29__addr)
|
||||||
|
la $4, _a__str__22_
|
||||||
|
# was: la _a__str__22__addr, _a__str__22_
|
||||||
|
ori $3, $0, 1
|
||||||
|
# was: ori _a__str__22__init, $0, 1
|
||||||
|
sw $3, 0($4)
|
||||||
|
# was: sw _a__str__22__init, 0(_a__str__22__addr)
|
||||||
|
la $4, _a__str__15_
|
||||||
|
# was: la _a__str__15__addr, _a__str__15_
|
||||||
|
ori $3, $0, 1
|
||||||
|
# was: ori _a__str__15__init, $0, 1
|
||||||
|
sw $3, 0($4)
|
||||||
|
# was: sw _a__str__15__init, 0(_a__str__15__addr)
|
||||||
la $4, _a__str__8_
|
la $4, _a__str__8_
|
||||||
# was: la _a__str__8__addr, _a__str__8_
|
# was: la _a__str__8__addr, _a__str__8_
|
||||||
ori $3, $0, 1
|
ori $3, $0, 1
|
||||||
@ -23,18 +47,21 @@
|
|||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
# Function write_nl
|
# Function main
|
||||||
write_nl:
|
main:
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
|
sw $20, -24($29)
|
||||||
|
sw $19, -20($29)
|
||||||
|
sw $18, -16($29)
|
||||||
|
sw $17, -12($29)
|
||||||
sw $16, -8($29)
|
sw $16, -8($29)
|
||||||
addi $29, $29, -12
|
addi $29, $29, -28
|
||||||
# ori _param_b_1_,$2,0
|
ori $17, $0, 1
|
||||||
ori $16, $2, 0
|
# was: ori _tmp_4_, $0, 1
|
||||||
# was: ori _tmp_4_, _param_b_1_, 0
|
|
||||||
# ori _letBind_3_,_tmp_4_,0
|
# ori _letBind_3_,_tmp_4_,0
|
||||||
la $2, _true
|
la $2, _true
|
||||||
# was: la $2, _true
|
# was: la $2, _true
|
||||||
bne $16, $0, _wBoolF_5_
|
bne $17, $0, _wBoolF_5_
|
||||||
# was: bne _letBind_3_, $0, _wBoolF_5_
|
# was: bne _letBind_3_, $0, _wBoolF_5_
|
||||||
la $2, _false
|
la $2, _false
|
||||||
# was: la $2, _false
|
# was: la $2, _false
|
||||||
@ -47,72 +74,108 @@ _wBoolF_5_:
|
|||||||
# ori _letBind_6_,_tmp_7_,0
|
# ori _letBind_6_,_tmp_7_,0
|
||||||
# ori $2,_tmp_7_,0
|
# ori $2,_tmp_7_,0
|
||||||
jal putstring
|
jal putstring
|
||||||
|
# was: jal putstring, $2
|
||||||
|
# ori _letBind_2_,_letBind_3_,0
|
||||||
|
ori $18, $0, 0
|
||||||
|
# was: ori _tmp_11_, $0, 0
|
||||||
|
# ori _letBind_10_,_tmp_11_,0
|
||||||
|
la $2, _true
|
||||||
|
# was: la $2, _true
|
||||||
|
bne $18, $0, _wBoolF_12_
|
||||||
|
# was: bne _letBind_10_, $0, _wBoolF_12_
|
||||||
|
la $2, _false
|
||||||
|
# was: la $2, _false
|
||||||
|
_wBoolF_12_:
|
||||||
|
jal putstring
|
||||||
|
# was: jal putstring, $2
|
||||||
|
la $2, _a__str__15_
|
||||||
|
# was: la _tmp_14_, _a__str__15_
|
||||||
|
# _a__str__15_: string "\n"
|
||||||
|
# ori _letBind_13_,_tmp_14_,0
|
||||||
|
# ori $2,_tmp_14_,0
|
||||||
|
jal putstring
|
||||||
|
# was: jal putstring, $2
|
||||||
|
# ori _letBind_9_,_letBind_10_,0
|
||||||
|
ori $19, $0, 0
|
||||||
|
# was: ori _tmp_18_, $0, 0
|
||||||
|
# ori _letBind_17_,_tmp_18_,0
|
||||||
|
la $2, _true
|
||||||
|
# was: la $2, _true
|
||||||
|
bne $19, $0, _wBoolF_19_
|
||||||
|
# was: bne _letBind_17_, $0, _wBoolF_19_
|
||||||
|
la $2, _false
|
||||||
|
# was: la $2, _false
|
||||||
|
_wBoolF_19_:
|
||||||
|
jal putstring
|
||||||
|
# was: jal putstring, $2
|
||||||
|
la $2, _a__str__22_
|
||||||
|
# was: la _tmp_21_, _a__str__22_
|
||||||
|
# _a__str__22_: string "\n"
|
||||||
|
# ori _letBind_20_,_tmp_21_,0
|
||||||
|
# ori $2,_tmp_21_,0
|
||||||
|
jal putstring
|
||||||
|
# was: jal putstring, $2
|
||||||
|
# ori _letBind_16_,_letBind_17_,0
|
||||||
|
ori $20, $0, 1
|
||||||
|
# was: ori _tmp_25_, $0, 1
|
||||||
|
# ori _letBind_24_,_tmp_25_,0
|
||||||
|
la $2, _true
|
||||||
|
# was: la $2, _true
|
||||||
|
bne $20, $0, _wBoolF_26_
|
||||||
|
# was: bne _letBind_24_, $0, _wBoolF_26_
|
||||||
|
la $2, _false
|
||||||
|
# was: la $2, _false
|
||||||
|
_wBoolF_26_:
|
||||||
|
jal putstring
|
||||||
|
# was: jal putstring, $2
|
||||||
|
la $2, _a__str__29_
|
||||||
|
# was: la _tmp_28_, _a__str__29_
|
||||||
|
# _a__str__29_: string "\n"
|
||||||
|
# ori _letBind_27_,_tmp_28_,0
|
||||||
|
# ori $2,_tmp_28_,0
|
||||||
|
jal putstring
|
||||||
|
# was: jal putstring, $2
|
||||||
|
# ori _letBind_23_,_letBind_24_,0
|
||||||
|
# ori _letBind_30_,_letBind_2_,0
|
||||||
|
beq $17, $16, _false_33_
|
||||||
|
# was: beq _letBind_30_, 0, _false_33_
|
||||||
|
ori $17, $18, 0
|
||||||
|
# was: ori _letBind_30_, _letBind_9_, 0
|
||||||
|
_false_33_:
|
||||||
|
beq $17, $16, _false_32_
|
||||||
|
# was: beq _letBind_30_, 0, _false_32_
|
||||||
|
ori $17, $19, 0
|
||||||
|
# was: ori _letBind_30_, _letBind_16_, 0
|
||||||
|
_false_32_:
|
||||||
|
beq $17, $16, _false_31_
|
||||||
|
# was: beq _letBind_30_, 0, _false_31_
|
||||||
|
ori $17, $20, 0
|
||||||
|
# was: ori _letBind_30_, _letBind_23_, 0
|
||||||
|
_false_31_:
|
||||||
|
ori $16, $17, 0
|
||||||
|
# was: ori _tmp_35_, _letBind_30_, 0
|
||||||
|
# ori _letBind_34_,_tmp_35_,0
|
||||||
|
la $2, _true
|
||||||
|
# was: la $2, _true
|
||||||
|
bne $16, $0, _wBoolF_36_
|
||||||
|
# was: bne _letBind_34_, $0, _wBoolF_36_
|
||||||
|
la $2, _false
|
||||||
|
# was: la $2, _false
|
||||||
|
_wBoolF_36_:
|
||||||
|
jal putstring
|
||||||
|
# was: jal putstring, $2
|
||||||
|
la $2, _a__str__39_
|
||||||
|
# was: la _tmp_38_, _a__str__39_
|
||||||
|
# _a__str__39_: string "\n"
|
||||||
|
# ori _letBind_37_,_tmp_38_,0
|
||||||
|
# ori $2,_tmp_38_,0
|
||||||
|
jal putstring
|
||||||
# was: jal putstring, $2
|
# was: jal putstring, $2
|
||||||
ori $2, $16, 0
|
ori $2, $16, 0
|
||||||
# was: ori _write_nlres_2_, _letBind_3_, 0
|
# was: ori _mainres_1_, _letBind_34_, 0
|
||||||
# ori $2,_write_nlres_2_,0
|
# ori $2,_mainres_1_,0
|
||||||
addi $29, $29, 12
|
addi $29, $29, 28
|
||||||
lw $16, -8($29)
|
lw $20, -24($29)
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function main
|
|
||||||
main:
|
|
||||||
sw $31, -4($29)
|
|
||||||
sw $19, -20($29)
|
|
||||||
sw $18, -16($29)
|
|
||||||
sw $17, -12($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -24
|
|
||||||
ori $2, $0, 1
|
|
||||||
# was: ori _arg_11_, $0, 1
|
|
||||||
# ori $2,_arg_11_,0
|
|
||||||
jal write_nl
|
|
||||||
# was: jal write_nl, $2
|
|
||||||
ori $18, $2, 0
|
|
||||||
# was: ori _letBind_10_, $2, 0
|
|
||||||
ori $2, $0, 0
|
|
||||||
# was: ori _arg_13_, $0, 0
|
|
||||||
# ori $2,_arg_13_,0
|
|
||||||
jal write_nl
|
|
||||||
# was: jal write_nl, $2
|
|
||||||
ori $16, $2, 0
|
|
||||||
# was: ori _letBind_12_, $2, 0
|
|
||||||
ori $2, $0, 0
|
|
||||||
# was: ori _arg_15_, $0, 0
|
|
||||||
# ori $2,_arg_15_,0
|
|
||||||
jal write_nl
|
|
||||||
# was: jal write_nl, $2
|
|
||||||
ori $17, $2, 0
|
|
||||||
# was: ori _letBind_14_, $2, 0
|
|
||||||
ori $2, $0, 1
|
|
||||||
# was: ori _arg_17_, $0, 1
|
|
||||||
# ori $2,_arg_17_,0
|
|
||||||
jal write_nl
|
|
||||||
# was: jal write_nl, $2
|
|
||||||
# ori _letBind_16_,$2,0
|
|
||||||
# ori _arg_18_,_letBind_10_,0
|
|
||||||
beq $18, $19, _false_21_
|
|
||||||
# was: beq _arg_18_, 0, _false_21_
|
|
||||||
ori $18, $16, 0
|
|
||||||
# was: ori _arg_18_, _letBind_12_, 0
|
|
||||||
_false_21_:
|
|
||||||
beq $18, $19, _false_20_
|
|
||||||
# was: beq _arg_18_, 0, _false_20_
|
|
||||||
ori $18, $17, 0
|
|
||||||
# was: ori _arg_18_, _letBind_14_, 0
|
|
||||||
_false_20_:
|
|
||||||
beq $18, $19, _false_19_
|
|
||||||
# was: beq _arg_18_, 0, _false_19_
|
|
||||||
ori $18, $2, 0
|
|
||||||
# was: ori _arg_18_, _letBind_16_, 0
|
|
||||||
_false_19_:
|
|
||||||
ori $2, $18, 0
|
|
||||||
# was: ori $2, _arg_18_, 0
|
|
||||||
jal write_nl
|
|
||||||
# was: jal write_nl, $2
|
|
||||||
# ori _mainres_9_,$2,0
|
|
||||||
# ori $2,_mainres_9_,0
|
|
||||||
addi $29, $29, 24
|
|
||||||
lw $19, -20($29)
|
lw $19, -20($29)
|
||||||
lw $18, -16($29)
|
lw $18, -16($29)
|
||||||
lw $17, -12($29)
|
lw $17, -12($29)
|
||||||
@ -231,6 +294,22 @@ _Msg_DivZero_:
|
|||||||
.asciiz "division by zero"
|
.asciiz "division by zero"
|
||||||
# String Literals
|
# String Literals
|
||||||
.align 2
|
.align 2
|
||||||
|
_a__str__39_:
|
||||||
|
.space 4
|
||||||
|
.asciiz "\n"
|
||||||
|
.align 2
|
||||||
|
_a__str__29_:
|
||||||
|
.space 4
|
||||||
|
.asciiz "\n"
|
||||||
|
.align 2
|
||||||
|
_a__str__22_:
|
||||||
|
.space 4
|
||||||
|
.asciiz "\n"
|
||||||
|
.align 2
|
||||||
|
_a__str__15_:
|
||||||
|
.space 4
|
||||||
|
.asciiz "\n"
|
||||||
|
.align 2
|
||||||
_a__str__8_:
|
_a__str__8_:
|
||||||
.space 4
|
.space 4
|
||||||
.asciiz "\n"
|
.asciiz "\n"
|
||||||
|
476
tests/ordchr.asm
476
tests/ordchr.asm
@ -17,136 +17,6 @@
|
|||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
# Function read_char
|
|
||||||
read_char:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_i_1_,$2,0
|
|
||||||
jal getchar
|
|
||||||
# was: jal getchar, $2
|
|
||||||
# ori _read_charres_2_,$2,0
|
|
||||||
# ori $2,_read_charres_2_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function read_string
|
|
||||||
read_string:
|
|
||||||
sw $31, -4($29)
|
|
||||||
sw $20, -24($29)
|
|
||||||
sw $19, -20($29)
|
|
||||||
sw $18, -16($29)
|
|
||||||
sw $17, -12($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -28
|
|
||||||
# ori _param_n_3_,$2,0
|
|
||||||
# map
|
|
||||||
ori $3, $2, 0
|
|
||||||
# was: ori _size_reg_9_, _param_n_3_, 0
|
|
||||||
bgez $3, _safe_lab_10_
|
|
||||||
# was: bgez _size_reg_9_, _safe_lab_10_
|
|
||||||
ori $5, $0, 3
|
|
||||||
# was: ori $5, $0, 3
|
|
||||||
la $6, _Msg_IllegalArraySize_
|
|
||||||
# was: la $6, _Msg_IllegalArraySize_
|
|
||||||
j _RuntimeError_
|
|
||||||
_safe_lab_10_:
|
|
||||||
# dynalloc
|
|
||||||
ori $2, $28, 0
|
|
||||||
# was: ori _arr_reg_6_, $28, 0
|
|
||||||
sll $4, $3, 2
|
|
||||||
# was: sll _tmp_16_, _size_reg_9_, 2
|
|
||||||
addi $4, $4, 4
|
|
||||||
# was: addi _tmp_16_, _tmp_16_, 4
|
|
||||||
add $28, $28, $4
|
|
||||||
# was: add $28, $28, _tmp_16_
|
|
||||||
sw $3, 0($2)
|
|
||||||
# was: sw _size_reg_9_, 0(_arr_reg_6_)
|
|
||||||
addi $6, $2, 4
|
|
||||||
# was: addi _addr_reg_11_, _arr_reg_6_, 4
|
|
||||||
ori $5, $0, 0
|
|
||||||
# was: ori _i_reg_12_, $0, 0
|
|
||||||
_loop_beg_13_:
|
|
||||||
sub $4, $5, $3
|
|
||||||
# was: sub _tmp_reg_15_, _i_reg_12_, _size_reg_9_
|
|
||||||
bgez $4, _loop_end_14_
|
|
||||||
# was: bgez _tmp_reg_15_, _loop_end_14_
|
|
||||||
sw $5, 0($6)
|
|
||||||
# was: sw _i_reg_12_, 0(_addr_reg_11_)
|
|
||||||
addi $6, $6, 4
|
|
||||||
# was: addi _addr_reg_11_, _addr_reg_11_, 4
|
|
||||||
addi $5, $5, 1
|
|
||||||
# was: addi _i_reg_12_, _i_reg_12_, 1
|
|
||||||
j _loop_beg_13_
|
|
||||||
_loop_end_14_:
|
|
||||||
lw $16, 0($2)
|
|
||||||
# was: lw _size_reg_5_, 0(_arr_reg_6_)
|
|
||||||
# dynalloc
|
|
||||||
ori $17, $28, 0
|
|
||||||
# was: ori _read_stringres_4_, $28, 0
|
|
||||||
addi $3, $16, 3
|
|
||||||
# was: addi _tmp_23_, _size_reg_5_, 3
|
|
||||||
sra $3, $3, 2
|
|
||||||
# was: sra _tmp_23_, _tmp_23_, 2
|
|
||||||
sll $3, $3, 2
|
|
||||||
# was: sll _tmp_23_, _tmp_23_, 2
|
|
||||||
addi $3, $3, 4
|
|
||||||
# was: addi _tmp_23_, _tmp_23_, 4
|
|
||||||
add $28, $28, $3
|
|
||||||
# was: add $28, $28, _tmp_23_
|
|
||||||
sw $16, 0($17)
|
|
||||||
# was: sw _size_reg_5_, 0(_read_stringres_4_)
|
|
||||||
addi $18, $17, 4
|
|
||||||
# was: addi _addr_reg_17_, _read_stringres_4_, 4
|
|
||||||
ori $19, $0, 0
|
|
||||||
# was: ori _i_reg_18_, $0, 0
|
|
||||||
addi $20, $2, 4
|
|
||||||
# was: addi _elem_reg_7_, _arr_reg_6_, 4
|
|
||||||
_loop_beg_19_:
|
|
||||||
sub $2, $19, $16
|
|
||||||
# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_5_
|
|
||||||
bgez $2, _loop_end_20_
|
|
||||||
# was: bgez _tmp_reg_21_, _loop_end_20_
|
|
||||||
lw $2, 0($20)
|
|
||||||
# was: lw _res_reg_8_, 0(_elem_reg_7_)
|
|
||||||
addi $20, $20, 4
|
|
||||||
# was: addi _elem_reg_7_, _elem_reg_7_, 4
|
|
||||||
# ori $2,_res_reg_8_,0
|
|
||||||
jal read_char
|
|
||||||
# was: jal read_char, $2
|
|
||||||
# ori _tmp_reg_22_,$2,0
|
|
||||||
# ori _res_reg_8_,_tmp_reg_22_,0
|
|
||||||
sb $2, 0($18)
|
|
||||||
# was: sb _res_reg_8_, 0(_addr_reg_17_)
|
|
||||||
addi $18, $18, 1
|
|
||||||
# was: addi _addr_reg_17_, _addr_reg_17_, 1
|
|
||||||
addi $19, $19, 1
|
|
||||||
# was: addi _i_reg_18_, _i_reg_18_, 1
|
|
||||||
j _loop_beg_19_
|
|
||||||
_loop_end_20_:
|
|
||||||
ori $2, $17, 0
|
|
||||||
# was: ori $2, _read_stringres_4_, 0
|
|
||||||
addi $29, $29, 28
|
|
||||||
lw $20, -24($29)
|
|
||||||
lw $19, -20($29)
|
|
||||||
lw $18, -16($29)
|
|
||||||
lw $17, -12($29)
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function add_one
|
|
||||||
add_one:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_x_24_,$2,0
|
|
||||||
# ori _plus_L_26_,_param_x_24_,0
|
|
||||||
ori $3, $0, 1
|
|
||||||
# was: ori _plus_R_27_, $0, 1
|
|
||||||
add $2, $2, $3
|
|
||||||
# was: add _add_oneres_25_, _plus_L_26_, _plus_R_27_
|
|
||||||
# ori $2,_add_oneres_25_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function main
|
# Function main
|
||||||
main:
|
main:
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
@ -158,152 +28,234 @@ main:
|
|||||||
addi $29, $29, -28
|
addi $29, $29, -28
|
||||||
jal getint
|
jal getint
|
||||||
# was: jal getint, $2
|
# was: jal getint, $2
|
||||||
# ori _letBind_29_,$2,0
|
# ori _letBind_2_,$2,0
|
||||||
# ori _arg_31_,_letBind_29_,0
|
ori $4, $2, 0
|
||||||
# ori $2,_arg_31_,0
|
# was: ori _letBind_4_, _letBind_2_, 0
|
||||||
jal read_string
|
|
||||||
# was: jal read_string, $2
|
|
||||||
# ori _letBind_30_,$2,0
|
|
||||||
# map
|
# map
|
||||||
# map
|
# ori _size_reg_9_,_letBind_4_,0
|
||||||
# map
|
bgez $4, _safe_lab_10_
|
||||||
# ori _arr_reg_42_,_letBind_30_,0
|
# was: bgez _size_reg_9_, _safe_lab_10_
|
||||||
lw $18, 0($2)
|
ori $5, $0, 3
|
||||||
# was: lw _size_reg_41_, 0(_arr_reg_42_)
|
# was: ori $5, $0, 3
|
||||||
|
la $6, _Msg_IllegalArraySize_
|
||||||
|
# was: la $6, _Msg_IllegalArraySize_
|
||||||
|
j _RuntimeError_
|
||||||
|
_safe_lab_10_:
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $20, $28, 0
|
ori $3, $28, 0
|
||||||
# was: ori _arr_reg_38_, $28, 0
|
# was: ori _arr_reg_6_, $28, 0
|
||||||
sll $3, $18, 2
|
sll $5, $4, 2
|
||||||
# was: sll _tmp_51_, _size_reg_41_, 2
|
# was: sll _tmp_16_, _size_reg_9_, 2
|
||||||
addi $3, $3, 4
|
addi $5, $5, 4
|
||||||
# was: addi _tmp_51_, _tmp_51_, 4
|
# was: addi _tmp_16_, _tmp_16_, 4
|
||||||
add $28, $28, $3
|
add $28, $28, $5
|
||||||
# was: add $28, $28, _tmp_51_
|
# was: add $28, $28, _tmp_16_
|
||||||
sw $18, 0($20)
|
sw $4, 0($3)
|
||||||
# was: sw _size_reg_41_, 0(_arr_reg_38_)
|
# was: sw _size_reg_9_, 0(_arr_reg_6_)
|
||||||
addi $17, $20, 4
|
addi $5, $3, 4
|
||||||
# was: addi _addr_reg_45_, _arr_reg_38_, 4
|
# was: addi _addr_reg_11_, _arr_reg_6_, 4
|
||||||
ori $16, $0, 0
|
ori $7, $0, 0
|
||||||
# was: ori _i_reg_46_, $0, 0
|
# was: ori _i_reg_12_, $0, 0
|
||||||
addi $19, $2, 4
|
_loop_beg_13_:
|
||||||
# was: addi _elem_reg_43_, _arr_reg_42_, 4
|
sub $6, $7, $4
|
||||||
_loop_beg_47_:
|
# was: sub _tmp_reg_15_, _i_reg_12_, _size_reg_9_
|
||||||
sub $2, $16, $18
|
bgez $6, _loop_end_14_
|
||||||
# was: sub _tmp_reg_49_, _i_reg_46_, _size_reg_41_
|
# was: bgez _tmp_reg_15_, _loop_end_14_
|
||||||
bgez $2, _loop_end_48_
|
sw $7, 0($5)
|
||||||
# was: bgez _tmp_reg_49_, _loop_end_48_
|
# was: sw _i_reg_12_, 0(_addr_reg_11_)
|
||||||
lb $2, 0($19)
|
addi $5, $5, 4
|
||||||
# was: lb _res_reg_44_, 0(_elem_reg_43_)
|
# was: addi _addr_reg_11_, _addr_reg_11_, 4
|
||||||
addi $19, $19, 1
|
addi $7, $7, 1
|
||||||
# was: addi _elem_reg_43_, _elem_reg_43_, 1
|
# was: addi _i_reg_12_, _i_reg_12_, 1
|
||||||
# ori $2,_res_reg_44_,0
|
j _loop_beg_13_
|
||||||
jal ord
|
_loop_end_14_:
|
||||||
# was: jal ord, $2
|
lw $17, 0($3)
|
||||||
# ori _tmp_reg_50_,$2,0
|
# was: lw _size_reg_5_, 0(_arr_reg_6_)
|
||||||
# ori _res_reg_44_,_tmp_reg_50_,0
|
# dynalloc
|
||||||
sw $2, 0($17)
|
ori $18, $28, 0
|
||||||
# was: sw _res_reg_44_, 0(_addr_reg_45_)
|
# was: ori _letBind_3_, $28, 0
|
||||||
addi $17, $17, 4
|
addi $4, $17, 3
|
||||||
# was: addi _addr_reg_45_, _addr_reg_45_, 4
|
# was: addi _tmp_23_, _size_reg_5_, 3
|
||||||
|
sra $4, $4, 2
|
||||||
|
# was: sra _tmp_23_, _tmp_23_, 2
|
||||||
|
sll $4, $4, 2
|
||||||
|
# was: sll _tmp_23_, _tmp_23_, 2
|
||||||
|
addi $4, $4, 4
|
||||||
|
# was: addi _tmp_23_, _tmp_23_, 4
|
||||||
|
add $28, $28, $4
|
||||||
|
# was: add $28, $28, _tmp_23_
|
||||||
|
sw $17, 0($18)
|
||||||
|
# was: sw _size_reg_5_, 0(_letBind_3_)
|
||||||
|
addi $16, $18, 4
|
||||||
|
# was: addi _addr_reg_17_, _letBind_3_, 4
|
||||||
|
ori $19, $0, 0
|
||||||
|
# was: ori _i_reg_18_, $0, 0
|
||||||
|
addi $20, $3, 4
|
||||||
|
# was: addi _elem_reg_7_, _arr_reg_6_, 4
|
||||||
|
_loop_beg_19_:
|
||||||
|
sub $3, $19, $17
|
||||||
|
# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_5_
|
||||||
|
bgez $3, _loop_end_20_
|
||||||
|
# was: bgez _tmp_reg_21_, _loop_end_20_
|
||||||
|
lw $3, 0($20)
|
||||||
|
# was: lw _res_reg_8_, 0(_elem_reg_7_)
|
||||||
|
addi $20, $20, 4
|
||||||
|
# was: addi _elem_reg_7_, _elem_reg_7_, 4
|
||||||
|
jal getchar
|
||||||
|
# was: jal getchar, $2
|
||||||
|
# ori _fun_arg_res_22_,$2,0
|
||||||
|
ori $3, $2, 0
|
||||||
|
# was: ori _res_reg_8_, _fun_arg_res_22_, 0
|
||||||
|
sb $3, 0($16)
|
||||||
|
# was: sb _res_reg_8_, 0(_addr_reg_17_)
|
||||||
addi $16, $16, 1
|
addi $16, $16, 1
|
||||||
# was: addi _i_reg_46_, _i_reg_46_, 1
|
# was: addi _addr_reg_17_, _addr_reg_17_, 1
|
||||||
j _loop_beg_47_
|
addi $19, $19, 1
|
||||||
_loop_end_48_:
|
# was: addi _i_reg_18_, _i_reg_18_, 1
|
||||||
lw $19, 0($20)
|
j _loop_beg_19_
|
||||||
# was: lw _size_reg_37_, 0(_arr_reg_38_)
|
_loop_end_20_:
|
||||||
# dynalloc
|
# map
|
||||||
ori $16, $28, 0
|
# map
|
||||||
# was: ori _arr_reg_34_, $28, 0
|
# map
|
||||||
sll $2, $19, 2
|
ori $2, $18, 0
|
||||||
# was: sll _tmp_58_, _size_reg_37_, 2
|
# was: ori _arr_reg_34_, _letBind_3_, 0
|
||||||
addi $2, $2, 4
|
lw $18, 0($2)
|
||||||
# was: addi _tmp_58_, _tmp_58_, 4
|
|
||||||
add $28, $28, $2
|
|
||||||
# was: add $28, $28, _tmp_58_
|
|
||||||
sw $19, 0($16)
|
|
||||||
# was: sw _size_reg_37_, 0(_arr_reg_34_)
|
|
||||||
addi $18, $16, 4
|
|
||||||
# was: addi _addr_reg_52_, _arr_reg_34_, 4
|
|
||||||
ori $17, $0, 0
|
|
||||||
# was: ori _i_reg_53_, $0, 0
|
|
||||||
addi $20, $20, 4
|
|
||||||
# was: addi _elem_reg_39_, _arr_reg_38_, 4
|
|
||||||
_loop_beg_54_:
|
|
||||||
sub $2, $17, $19
|
|
||||||
# was: sub _tmp_reg_56_, _i_reg_53_, _size_reg_37_
|
|
||||||
bgez $2, _loop_end_55_
|
|
||||||
# was: bgez _tmp_reg_56_, _loop_end_55_
|
|
||||||
lw $2, 0($20)
|
|
||||||
# was: lw _res_reg_40_, 0(_elem_reg_39_)
|
|
||||||
addi $20, $20, 4
|
|
||||||
# was: addi _elem_reg_39_, _elem_reg_39_, 4
|
|
||||||
# ori $2,_res_reg_40_,0
|
|
||||||
jal add_one
|
|
||||||
# was: jal add_one, $2
|
|
||||||
# ori _tmp_reg_57_,$2,0
|
|
||||||
# ori _res_reg_40_,_tmp_reg_57_,0
|
|
||||||
sw $2, 0($18)
|
|
||||||
# was: sw _res_reg_40_, 0(_addr_reg_52_)
|
|
||||||
addi $18, $18, 4
|
|
||||||
# was: addi _addr_reg_52_, _addr_reg_52_, 4
|
|
||||||
addi $17, $17, 1
|
|
||||||
# was: addi _i_reg_53_, _i_reg_53_, 1
|
|
||||||
j _loop_beg_54_
|
|
||||||
_loop_end_55_:
|
|
||||||
lw $18, 0($16)
|
|
||||||
# was: lw _size_reg_33_, 0(_arr_reg_34_)
|
# was: lw _size_reg_33_, 0(_arr_reg_34_)
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $17, $28, 0
|
ori $16, $28, 0
|
||||||
# was: ori _letBind_32_, $28, 0
|
# was: ori _arr_reg_30_, $28, 0
|
||||||
addi $2, $18, 3
|
sll $3, $18, 2
|
||||||
# was: addi _tmp_65_, _size_reg_33_, 3
|
# was: sll _tmp_43_, _size_reg_33_, 2
|
||||||
sra $2, $2, 2
|
addi $3, $3, 4
|
||||||
# was: sra _tmp_65_, _tmp_65_, 2
|
# was: addi _tmp_43_, _tmp_43_, 4
|
||||||
sll $2, $2, 2
|
add $28, $28, $3
|
||||||
# was: sll _tmp_65_, _tmp_65_, 2
|
# was: add $28, $28, _tmp_43_
|
||||||
addi $2, $2, 4
|
sw $18, 0($16)
|
||||||
# was: addi _tmp_65_, _tmp_65_, 4
|
# was: sw _size_reg_33_, 0(_arr_reg_30_)
|
||||||
add $28, $28, $2
|
addi $19, $16, 4
|
||||||
# was: add $28, $28, _tmp_65_
|
# was: addi _addr_reg_37_, _arr_reg_30_, 4
|
||||||
sw $18, 0($17)
|
ori $17, $0, 0
|
||||||
# was: sw _size_reg_33_, 0(_letBind_32_)
|
# was: ori _i_reg_38_, $0, 0
|
||||||
addi $19, $17, 4
|
addi $20, $2, 4
|
||||||
# was: addi _addr_reg_59_, _letBind_32_, 4
|
|
||||||
ori $20, $0, 0
|
|
||||||
# was: ori _i_reg_60_, $0, 0
|
|
||||||
addi $16, $16, 4
|
|
||||||
# was: addi _elem_reg_35_, _arr_reg_34_, 4
|
# was: addi _elem_reg_35_, _arr_reg_34_, 4
|
||||||
_loop_beg_61_:
|
_loop_beg_39_:
|
||||||
sub $2, $20, $18
|
sub $2, $17, $18
|
||||||
# was: sub _tmp_reg_63_, _i_reg_60_, _size_reg_33_
|
# was: sub _tmp_reg_41_, _i_reg_38_, _size_reg_33_
|
||||||
bgez $2, _loop_end_62_
|
bgez $2, _loop_end_40_
|
||||||
# was: bgez _tmp_reg_63_, _loop_end_62_
|
# was: bgez _tmp_reg_41_, _loop_end_40_
|
||||||
lw $2, 0($16)
|
lb $2, 0($20)
|
||||||
# was: lw _res_reg_36_, 0(_elem_reg_35_)
|
# was: lb _res_reg_36_, 0(_elem_reg_35_)
|
||||||
addi $16, $16, 4
|
addi $20, $20, 1
|
||||||
# was: addi _elem_reg_35_, _elem_reg_35_, 4
|
# was: addi _elem_reg_35_, _elem_reg_35_, 1
|
||||||
# ori $2,_res_reg_36_,0
|
# ori $2,_res_reg_36_,0
|
||||||
|
jal ord
|
||||||
|
# was: jal ord, $2
|
||||||
|
# ori _tmp_reg_42_,$2,0
|
||||||
|
# ori _res_reg_36_,_tmp_reg_42_,0
|
||||||
|
sw $2, 0($19)
|
||||||
|
# was: sw _res_reg_36_, 0(_addr_reg_37_)
|
||||||
|
addi $19, $19, 4
|
||||||
|
# was: addi _addr_reg_37_, _addr_reg_37_, 4
|
||||||
|
addi $17, $17, 1
|
||||||
|
# was: addi _i_reg_38_, _i_reg_38_, 1
|
||||||
|
j _loop_beg_39_
|
||||||
|
_loop_end_40_:
|
||||||
|
lw $3, 0($16)
|
||||||
|
# was: lw _size_reg_29_, 0(_arr_reg_30_)
|
||||||
|
# dynalloc
|
||||||
|
ori $2, $28, 0
|
||||||
|
# was: ori _arr_reg_26_, $28, 0
|
||||||
|
sll $4, $3, 2
|
||||||
|
# was: sll _tmp_52_, _size_reg_29_, 2
|
||||||
|
addi $4, $4, 4
|
||||||
|
# was: addi _tmp_52_, _tmp_52_, 4
|
||||||
|
add $28, $28, $4
|
||||||
|
# was: add $28, $28, _tmp_52_
|
||||||
|
sw $3, 0($2)
|
||||||
|
# was: sw _size_reg_29_, 0(_arr_reg_26_)
|
||||||
|
addi $5, $2, 4
|
||||||
|
# was: addi _addr_reg_44_, _arr_reg_26_, 4
|
||||||
|
ori $4, $0, 0
|
||||||
|
# was: ori _i_reg_45_, $0, 0
|
||||||
|
addi $6, $16, 4
|
||||||
|
# was: addi _elem_reg_31_, _arr_reg_30_, 4
|
||||||
|
_loop_beg_46_:
|
||||||
|
sub $7, $4, $3
|
||||||
|
# was: sub _tmp_reg_48_, _i_reg_45_, _size_reg_29_
|
||||||
|
bgez $7, _loop_end_47_
|
||||||
|
# was: bgez _tmp_reg_48_, _loop_end_47_
|
||||||
|
lw $8, 0($6)
|
||||||
|
# was: lw _res_reg_32_, 0(_elem_reg_31_)
|
||||||
|
addi $6, $6, 4
|
||||||
|
# was: addi _elem_reg_31_, _elem_reg_31_, 4
|
||||||
|
# ori _plus_L_50_,_res_reg_32_,0
|
||||||
|
ori $7, $0, 1
|
||||||
|
# was: ori _plus_R_51_, $0, 1
|
||||||
|
add $8, $8, $7
|
||||||
|
# was: add _fun_arg_res_49_, _plus_L_50_, _plus_R_51_
|
||||||
|
# ori _res_reg_32_,_fun_arg_res_49_,0
|
||||||
|
sw $8, 0($5)
|
||||||
|
# was: sw _res_reg_32_, 0(_addr_reg_44_)
|
||||||
|
addi $5, $5, 4
|
||||||
|
# was: addi _addr_reg_44_, _addr_reg_44_, 4
|
||||||
|
addi $4, $4, 1
|
||||||
|
# was: addi _i_reg_45_, _i_reg_45_, 1
|
||||||
|
j _loop_beg_46_
|
||||||
|
_loop_end_47_:
|
||||||
|
lw $17, 0($2)
|
||||||
|
# was: lw _size_reg_25_, 0(_arr_reg_26_)
|
||||||
|
# dynalloc
|
||||||
|
ori $16, $28, 0
|
||||||
|
# was: ori _letBind_24_, $28, 0
|
||||||
|
addi $3, $17, 3
|
||||||
|
# was: addi _tmp_59_, _size_reg_25_, 3
|
||||||
|
sra $3, $3, 2
|
||||||
|
# was: sra _tmp_59_, _tmp_59_, 2
|
||||||
|
sll $3, $3, 2
|
||||||
|
# was: sll _tmp_59_, _tmp_59_, 2
|
||||||
|
addi $3, $3, 4
|
||||||
|
# was: addi _tmp_59_, _tmp_59_, 4
|
||||||
|
add $28, $28, $3
|
||||||
|
# was: add $28, $28, _tmp_59_
|
||||||
|
sw $17, 0($16)
|
||||||
|
# was: sw _size_reg_25_, 0(_letBind_24_)
|
||||||
|
addi $18, $16, 4
|
||||||
|
# was: addi _addr_reg_53_, _letBind_24_, 4
|
||||||
|
ori $19, $0, 0
|
||||||
|
# was: ori _i_reg_54_, $0, 0
|
||||||
|
addi $20, $2, 4
|
||||||
|
# was: addi _elem_reg_27_, _arr_reg_26_, 4
|
||||||
|
_loop_beg_55_:
|
||||||
|
sub $2, $19, $17
|
||||||
|
# was: sub _tmp_reg_57_, _i_reg_54_, _size_reg_25_
|
||||||
|
bgez $2, _loop_end_56_
|
||||||
|
# was: bgez _tmp_reg_57_, _loop_end_56_
|
||||||
|
lw $2, 0($20)
|
||||||
|
# was: lw _res_reg_28_, 0(_elem_reg_27_)
|
||||||
|
addi $20, $20, 4
|
||||||
|
# was: addi _elem_reg_27_, _elem_reg_27_, 4
|
||||||
|
# ori $2,_res_reg_28_,0
|
||||||
jal chr
|
jal chr
|
||||||
# was: jal chr, $2
|
# was: jal chr, $2
|
||||||
# ori _tmp_reg_64_,$2,0
|
# ori _tmp_reg_58_,$2,0
|
||||||
# ori _res_reg_36_,_tmp_reg_64_,0
|
# ori _res_reg_28_,_tmp_reg_58_,0
|
||||||
sb $2, 0($19)
|
sb $2, 0($18)
|
||||||
# was: sb _res_reg_36_, 0(_addr_reg_59_)
|
# was: sb _res_reg_28_, 0(_addr_reg_53_)
|
||||||
|
addi $18, $18, 1
|
||||||
|
# was: addi _addr_reg_53_, _addr_reg_53_, 1
|
||||||
addi $19, $19, 1
|
addi $19, $19, 1
|
||||||
# was: addi _addr_reg_59_, _addr_reg_59_, 1
|
# was: addi _i_reg_54_, _i_reg_54_, 1
|
||||||
addi $20, $20, 1
|
j _loop_beg_55_
|
||||||
# was: addi _i_reg_60_, _i_reg_60_, 1
|
_loop_end_56_:
|
||||||
j _loop_beg_61_
|
ori $2, $16, 0
|
||||||
_loop_end_62_:
|
# was: ori _tmp_60_, _letBind_24_, 0
|
||||||
ori $2, $17, 0
|
|
||||||
# was: ori _tmp_66_, _letBind_32_, 0
|
|
||||||
ori $16, $2, 0
|
ori $16, $2, 0
|
||||||
# was: ori _mainres_28_, _tmp_66_, 0
|
# was: ori _mainres_1_, _tmp_60_, 0
|
||||||
# ori $2,_tmp_66_,0
|
# ori $2,_tmp_60_,0
|
||||||
jal putstring
|
jal putstring
|
||||||
# was: jal putstring, $2
|
# was: jal putstring, $2
|
||||||
ori $2, $16, 0
|
ori $2, $16, 0
|
||||||
# was: ori $2, _mainres_28_, 0
|
# was: ori $2, _mainres_1_, 0
|
||||||
addi $29, $29, 28
|
addi $29, $29, 28
|
||||||
lw $20, -24($29)
|
lw $20, -24($29)
|
||||||
lw $19, -20($29)
|
lw $19, -20($29)
|
||||||
|
@ -17,245 +17,189 @@
|
|||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
# Function plus100
|
|
||||||
plus100:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_x_1_,$2,0
|
|
||||||
# ori _plus_L_3_,_param_x_1_,0
|
|
||||||
ori $3, $0, 100
|
|
||||||
# was: ori _plus_R_4_, $0, 100
|
|
||||||
add $2, $2, $3
|
|
||||||
# was: add _plus100res_2_, _plus_L_3_, _plus_R_4_
|
|
||||||
# ori $2,_plus100res_2_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function plus
|
|
||||||
plus:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_x_5_,$2,0
|
|
||||||
# ori _param_y_6_,$3,0
|
|
||||||
# ori _plus_L_8_,_param_x_5_,0
|
|
||||||
# ori _plus_R_9_,_param_y_6_,0
|
|
||||||
add $2, $2, $3
|
|
||||||
# was: add _plusres_7_, _plus_L_8_, _plus_R_9_
|
|
||||||
# ori $2,_plusres_7_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function main
|
# Function main
|
||||||
main:
|
main:
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
sw $21, -28($29)
|
|
||||||
sw $20, -24($29)
|
sw $20, -24($29)
|
||||||
sw $19, -20($29)
|
sw $19, -20($29)
|
||||||
sw $18, -16($29)
|
sw $18, -16($29)
|
||||||
sw $17, -12($29)
|
sw $17, -12($29)
|
||||||
sw $16, -8($29)
|
sw $16, -8($29)
|
||||||
addi $29, $29, -32
|
addi $29, $29, -28
|
||||||
jal getint
|
jal getint
|
||||||
# was: jal getint, $2
|
# was: jal getint, $2
|
||||||
# ori _letBind_11_,$2,0
|
# ori _letBind_2_,$2,0
|
||||||
# ori _size_reg_13_,_letBind_11_,0
|
ori $3, $2, 0
|
||||||
bgez $2, _safe_lab_14_
|
# was: ori _size_reg_4_, _letBind_2_, 0
|
||||||
# was: bgez _size_reg_13_, _safe_lab_14_
|
bgez $3, _safe_lab_5_
|
||||||
|
# was: bgez _size_reg_4_, _safe_lab_5_
|
||||||
ori $5, $0, 6
|
ori $5, $0, 6
|
||||||
# was: ori $5, $0, 6
|
# was: ori $5, $0, 6
|
||||||
la $6, _Msg_IllegalArraySize_
|
la $6, _Msg_IllegalArraySize_
|
||||||
# was: la $6, _Msg_IllegalArraySize_
|
# was: la $6, _Msg_IllegalArraySize_
|
||||||
j _RuntimeError_
|
j _RuntimeError_
|
||||||
_safe_lab_14_:
|
_safe_lab_5_:
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $20, $28, 0
|
ori $6, $28, 0
|
||||||
# was: ori _letBind_12_, $28, 0
|
# was: ori _letBind_3_, $28, 0
|
||||||
sll $3, $2, 2
|
sll $2, $3, 2
|
||||||
# was: sll _tmp_20_, _size_reg_13_, 2
|
# was: sll _tmp_11_, _size_reg_4_, 2
|
||||||
addi $3, $3, 4
|
addi $2, $2, 4
|
||||||
# was: addi _tmp_20_, _tmp_20_, 4
|
# was: addi _tmp_11_, _tmp_11_, 4
|
||||||
add $28, $28, $3
|
add $28, $28, $2
|
||||||
# was: add $28, $28, _tmp_20_
|
# was: add $28, $28, _tmp_11_
|
||||||
sw $2, 0($20)
|
sw $3, 0($6)
|
||||||
# was: sw _size_reg_13_, 0(_letBind_12_)
|
# was: sw _size_reg_4_, 0(_letBind_3_)
|
||||||
addi $5, $20, 4
|
addi $5, $6, 4
|
||||||
# was: addi _addr_reg_15_, _letBind_12_, 4
|
# was: addi _addr_reg_6_, _letBind_3_, 4
|
||||||
ori $3, $0, 0
|
ori $4, $0, 0
|
||||||
# was: ori _i_reg_16_, $0, 0
|
# was: ori _i_reg_7_, $0, 0
|
||||||
_loop_beg_17_:
|
_loop_beg_8_:
|
||||||
sub $4, $3, $2
|
sub $2, $4, $3
|
||||||
# was: sub _tmp_reg_19_, _i_reg_16_, _size_reg_13_
|
# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_
|
||||||
bgez $4, _loop_end_18_
|
bgez $2, _loop_end_9_
|
||||||
# was: bgez _tmp_reg_19_, _loop_end_18_
|
# was: bgez _tmp_reg_10_, _loop_end_9_
|
||||||
sw $3, 0($5)
|
sw $4, 0($5)
|
||||||
# was: sw _i_reg_16_, 0(_addr_reg_15_)
|
# was: sw _i_reg_7_, 0(_addr_reg_6_)
|
||||||
addi $5, $5, 4
|
addi $5, $5, 4
|
||||||
# was: addi _addr_reg_15_, _addr_reg_15_, 4
|
# was: addi _addr_reg_6_, _addr_reg_6_, 4
|
||||||
addi $3, $3, 1
|
addi $4, $4, 1
|
||||||
# was: addi _i_reg_16_, _i_reg_16_, 1
|
# was: addi _i_reg_7_, _i_reg_7_, 1
|
||||||
j _loop_beg_17_
|
j _loop_beg_8_
|
||||||
_loop_end_18_:
|
_loop_end_9_:
|
||||||
# map
|
# map
|
||||||
# ori _arr_reg_23_,_letBind_12_,0
|
# ori _arr_reg_14_,_letBind_3_,0
|
||||||
lw $17, 0($20)
|
lw $2, 0($6)
|
||||||
# was: lw _size_reg_22_, 0(_arr_reg_23_)
|
# was: lw _size_reg_13_, 0(_arr_reg_14_)
|
||||||
|
# dynalloc
|
||||||
|
ori $3, $28, 0
|
||||||
|
# was: ori _letBind_12_, $28, 0
|
||||||
|
sll $4, $2, 2
|
||||||
|
# was: sll _tmp_25_, _size_reg_13_, 2
|
||||||
|
addi $4, $4, 4
|
||||||
|
# was: addi _tmp_25_, _tmp_25_, 4
|
||||||
|
add $28, $28, $4
|
||||||
|
# was: add $28, $28, _tmp_25_
|
||||||
|
sw $2, 0($3)
|
||||||
|
# was: sw _size_reg_13_, 0(_letBind_12_)
|
||||||
|
addi $5, $3, 4
|
||||||
|
# was: addi _addr_reg_17_, _letBind_12_, 4
|
||||||
|
ori $4, $0, 0
|
||||||
|
# was: ori _i_reg_18_, $0, 0
|
||||||
|
addi $6, $6, 4
|
||||||
|
# was: addi _elem_reg_15_, _arr_reg_14_, 4
|
||||||
|
_loop_beg_19_:
|
||||||
|
sub $7, $4, $2
|
||||||
|
# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_13_
|
||||||
|
bgez $7, _loop_end_20_
|
||||||
|
# was: bgez _tmp_reg_21_, _loop_end_20_
|
||||||
|
lw $7, 0($6)
|
||||||
|
# was: lw _res_reg_16_, 0(_elem_reg_15_)
|
||||||
|
addi $6, $6, 4
|
||||||
|
# was: addi _elem_reg_15_, _elem_reg_15_, 4
|
||||||
|
ori $8, $7, 0
|
||||||
|
# was: ori _plus_L_23_, _res_reg_16_, 0
|
||||||
|
ori $7, $0, 100
|
||||||
|
# was: ori _plus_R_24_, $0, 100
|
||||||
|
add $7, $8, $7
|
||||||
|
# was: add _fun_arg_res_22_, _plus_L_23_, _plus_R_24_
|
||||||
|
# ori _res_reg_16_,_fun_arg_res_22_,0
|
||||||
|
sw $7, 0($5)
|
||||||
|
# was: sw _res_reg_16_, 0(_addr_reg_17_)
|
||||||
|
addi $5, $5, 4
|
||||||
|
# was: addi _addr_reg_17_, _addr_reg_17_, 4
|
||||||
|
addi $4, $4, 1
|
||||||
|
# was: addi _i_reg_18_, _i_reg_18_, 1
|
||||||
|
j _loop_beg_19_
|
||||||
|
_loop_end_20_:
|
||||||
|
# map
|
||||||
|
# ori _arr_reg_28_,_letBind_12_,0
|
||||||
|
lw $17, 0($3)
|
||||||
|
# was: lw _size_reg_27_, 0(_arr_reg_28_)
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $16, $28, 0
|
ori $16, $28, 0
|
||||||
# was: ori _letBind_21_, $28, 0
|
# was: ori _letBind_26_, $28, 0
|
||||||
sll $2, $17, 2
|
addi $2, $17, 3
|
||||||
# was: sll _tmp_32_, _size_reg_22_, 2
|
# was: addi _tmp_37_, _size_reg_27_, 3
|
||||||
|
sra $2, $2, 2
|
||||||
|
# was: sra _tmp_37_, _tmp_37_, 2
|
||||||
|
sll $2, $2, 2
|
||||||
|
# was: sll _tmp_37_, _tmp_37_, 2
|
||||||
addi $2, $2, 4
|
addi $2, $2, 4
|
||||||
# was: addi _tmp_32_, _tmp_32_, 4
|
# was: addi _tmp_37_, _tmp_37_, 4
|
||||||
add $28, $28, $2
|
add $28, $28, $2
|
||||||
# was: add $28, $28, _tmp_32_
|
# was: add $28, $28, _tmp_37_
|
||||||
sw $17, 0($16)
|
sw $17, 0($16)
|
||||||
# was: sw _size_reg_22_, 0(_letBind_21_)
|
# was: sw _size_reg_27_, 0(_letBind_26_)
|
||||||
addi $19, $16, 4
|
addi $19, $16, 4
|
||||||
# was: addi _addr_reg_26_, _letBind_21_, 4
|
# was: addi _addr_reg_31_, _letBind_26_, 4
|
||||||
ori $18, $0, 0
|
ori $18, $0, 0
|
||||||
# was: ori _i_reg_27_, $0, 0
|
# was: ori _i_reg_32_, $0, 0
|
||||||
addi $21, $20, 4
|
addi $20, $3, 4
|
||||||
# was: addi _elem_reg_24_, _arr_reg_23_, 4
|
# was: addi _elem_reg_29_, _arr_reg_28_, 4
|
||||||
_loop_beg_28_:
|
_loop_beg_33_:
|
||||||
sub $2, $18, $17
|
sub $2, $18, $17
|
||||||
# was: sub _tmp_reg_30_, _i_reg_27_, _size_reg_22_
|
# was: sub _tmp_reg_35_, _i_reg_32_, _size_reg_27_
|
||||||
bgez $2, _loop_end_29_
|
bgez $2, _loop_end_34_
|
||||||
# was: bgez _tmp_reg_30_, _loop_end_29_
|
# was: bgez _tmp_reg_35_, _loop_end_34_
|
||||||
lw $2, 0($21)
|
|
||||||
# was: lw _res_reg_25_, 0(_elem_reg_24_)
|
|
||||||
addi $21, $21, 4
|
|
||||||
# was: addi _elem_reg_24_, _elem_reg_24_, 4
|
|
||||||
# ori $2,_res_reg_25_,0
|
|
||||||
jal plus100
|
|
||||||
# was: jal plus100, $2
|
|
||||||
# ori _tmp_reg_31_,$2,0
|
|
||||||
# ori _res_reg_25_,_tmp_reg_31_,0
|
|
||||||
sw $2, 0($19)
|
|
||||||
# was: sw _res_reg_25_, 0(_addr_reg_26_)
|
|
||||||
addi $19, $19, 4
|
|
||||||
# was: addi _addr_reg_26_, _addr_reg_26_, 4
|
|
||||||
addi $18, $18, 1
|
|
||||||
# was: addi _i_reg_27_, _i_reg_27_, 1
|
|
||||||
j _loop_beg_28_
|
|
||||||
_loop_end_29_:
|
|
||||||
# ori _arr_reg_34_,_letBind_12_,0
|
|
||||||
lw $17, 0($20)
|
|
||||||
# was: lw _size_reg_35_, 0(_arr_reg_34_)
|
|
||||||
ori $2, $0, 0
|
|
||||||
# was: ori _letBind_33_, $0, 0
|
|
||||||
addi $20, $20, 4
|
|
||||||
# was: addi _arr_reg_34_, _arr_reg_34_, 4
|
|
||||||
ori $18, $0, 0
|
|
||||||
# was: ori _ind_var_36_, $0, 0
|
|
||||||
_loop_beg_38_:
|
|
||||||
sub $3, $18, $17
|
|
||||||
# was: sub _tmp_reg_37_, _ind_var_36_, _size_reg_35_
|
|
||||||
bgez $3, _loop_end_39_
|
|
||||||
# was: bgez _tmp_reg_37_, _loop_end_39_
|
|
||||||
lw $3, 0($20)
|
|
||||||
# was: lw _tmp_reg_37_, 0(_arr_reg_34_)
|
|
||||||
addi $20, $20, 4
|
|
||||||
# was: addi _arr_reg_34_, _arr_reg_34_, 4
|
|
||||||
# ori $2,_letBind_33_,0
|
|
||||||
# ori $3,_tmp_reg_37_,0
|
|
||||||
jal plus
|
|
||||||
# was: jal plus, $2 $3
|
|
||||||
# ori _tmp_reg_40_,$2,0
|
|
||||||
# ori _letBind_33_,_tmp_reg_40_,0
|
|
||||||
addi $18, $18, 1
|
|
||||||
# was: addi _ind_var_36_, _ind_var_36_, 1
|
|
||||||
j _loop_beg_38_
|
|
||||||
_loop_end_39_:
|
|
||||||
# map
|
|
||||||
ori $2, $16, 0
|
|
||||||
# was: ori _arr_reg_43_, _letBind_21_, 0
|
|
||||||
lw $16, 0($2)
|
|
||||||
# was: lw _size_reg_42_, 0(_arr_reg_43_)
|
|
||||||
# dynalloc
|
|
||||||
ori $17, $28, 0
|
|
||||||
# was: ori _letBind_41_, $28, 0
|
|
||||||
addi $3, $16, 3
|
|
||||||
# was: addi _tmp_52_, _size_reg_42_, 3
|
|
||||||
sra $3, $3, 2
|
|
||||||
# was: sra _tmp_52_, _tmp_52_, 2
|
|
||||||
sll $3, $3, 2
|
|
||||||
# was: sll _tmp_52_, _tmp_52_, 2
|
|
||||||
addi $3, $3, 4
|
|
||||||
# was: addi _tmp_52_, _tmp_52_, 4
|
|
||||||
add $28, $28, $3
|
|
||||||
# was: add $28, $28, _tmp_52_
|
|
||||||
sw $16, 0($17)
|
|
||||||
# was: sw _size_reg_42_, 0(_letBind_41_)
|
|
||||||
addi $18, $17, 4
|
|
||||||
# was: addi _addr_reg_46_, _letBind_41_, 4
|
|
||||||
ori $19, $0, 0
|
|
||||||
# was: ori _i_reg_47_, $0, 0
|
|
||||||
addi $20, $2, 4
|
|
||||||
# was: addi _elem_reg_44_, _arr_reg_43_, 4
|
|
||||||
_loop_beg_48_:
|
|
||||||
sub $2, $19, $16
|
|
||||||
# was: sub _tmp_reg_50_, _i_reg_47_, _size_reg_42_
|
|
||||||
bgez $2, _loop_end_49_
|
|
||||||
# was: bgez _tmp_reg_50_, _loop_end_49_
|
|
||||||
lw $2, 0($20)
|
lw $2, 0($20)
|
||||||
# was: lw _res_reg_45_, 0(_elem_reg_44_)
|
# was: lw _res_reg_30_, 0(_elem_reg_29_)
|
||||||
addi $20, $20, 4
|
addi $20, $20, 4
|
||||||
# was: addi _elem_reg_44_, _elem_reg_44_, 4
|
# was: addi _elem_reg_29_, _elem_reg_29_, 4
|
||||||
# ori $2,_res_reg_45_,0
|
# ori $2,_res_reg_30_,0
|
||||||
jal chr
|
jal chr
|
||||||
# was: jal chr, $2
|
# was: jal chr, $2
|
||||||
# ori _tmp_reg_51_,$2,0
|
# ori _tmp_reg_36_,$2,0
|
||||||
# ori _res_reg_45_,_tmp_reg_51_,0
|
# ori _res_reg_30_,_tmp_reg_36_,0
|
||||||
sb $2, 0($18)
|
sb $2, 0($19)
|
||||||
# was: sb _res_reg_45_, 0(_addr_reg_46_)
|
# was: sb _res_reg_30_, 0(_addr_reg_31_)
|
||||||
addi $18, $18, 1
|
|
||||||
# was: addi _addr_reg_46_, _addr_reg_46_, 1
|
|
||||||
addi $19, $19, 1
|
addi $19, $19, 1
|
||||||
# was: addi _i_reg_47_, _i_reg_47_, 1
|
# was: addi _addr_reg_31_, _addr_reg_31_, 1
|
||||||
j _loop_beg_48_
|
addi $18, $18, 1
|
||||||
_loop_end_49_:
|
# was: addi _i_reg_32_, _i_reg_32_, 1
|
||||||
|
j _loop_beg_33_
|
||||||
|
_loop_end_34_:
|
||||||
ori $2, $0, 1
|
ori $2, $0, 1
|
||||||
# was: ori _arr_ind_56_, $0, 1
|
# was: ori _arr_ind_41_, $0, 1
|
||||||
addi $3, $17, 4
|
addi $3, $16, 4
|
||||||
# was: addi _arr_reg_57_, _letBind_41_, 4
|
# was: addi _arr_reg_42_, _letBind_26_, 4
|
||||||
lw $4, 0($17)
|
lw $4, 0($16)
|
||||||
# was: lw _size_reg_58_, 0(_letBind_41_)
|
# was: lw _size_reg_43_, 0(_letBind_26_)
|
||||||
bgez $2, _safe_lab_61_
|
bgez $2, _safe_lab_46_
|
||||||
# was: bgez _arr_ind_56_, _safe_lab_61_
|
# was: bgez _arr_ind_41_, _safe_lab_46_
|
||||||
_error_lab_60_:
|
_error_lab_45_:
|
||||||
ori $5, $0, 10
|
ori $5, $0, 10
|
||||||
# was: ori $5, $0, 10
|
# was: ori $5, $0, 10
|
||||||
la $6, _Msg_IllegalIndex_
|
la $6, _Msg_IllegalIndex_
|
||||||
# was: la $6, _Msg_IllegalIndex_
|
# was: la $6, _Msg_IllegalIndex_
|
||||||
j _RuntimeError_
|
j _RuntimeError_
|
||||||
_safe_lab_61_:
|
_safe_lab_46_:
|
||||||
sub $4, $2, $4
|
sub $4, $2, $4
|
||||||
# was: sub _tmp_reg_59_, _arr_ind_56_, _size_reg_58_
|
# was: sub _tmp_reg_44_, _arr_ind_41_, _size_reg_43_
|
||||||
bgez $4, _error_lab_60_
|
bgez $4, _error_lab_45_
|
||||||
# was: bgez _tmp_reg_59_, _error_lab_60_
|
# was: bgez _tmp_reg_44_, _error_lab_45_
|
||||||
add $3, $3, $2
|
add $3, $3, $2
|
||||||
# was: add _arr_reg_57_, _arr_reg_57_, _arr_ind_56_
|
# was: add _arr_reg_42_, _arr_reg_42_, _arr_ind_41_
|
||||||
lb $2, 0($3)
|
lb $2, 0($3)
|
||||||
# was: lb _arg_55_, 0(_arr_reg_57_)
|
# was: lb _arg_40_, 0(_arr_reg_42_)
|
||||||
# ori $2,_arg_55_,0
|
# ori $2,_arg_40_,0
|
||||||
jal ord
|
jal ord
|
||||||
# was: jal ord, $2
|
# was: jal ord, $2
|
||||||
# ori _tmp_54_,$2,0
|
# ori _tmp_39_,$2,0
|
||||||
# ori _letBind_53_,_tmp_54_,0
|
# ori _letBind_38_,_tmp_39_,0
|
||||||
# ori $2,_letBind_53_,0
|
# ori $2,_letBind_38_,0
|
||||||
jal putint
|
jal putint
|
||||||
# was: jal putint, $2
|
# was: jal putint, $2
|
||||||
ori $2, $17, 0
|
ori $2, $16, 0
|
||||||
# was: ori _tmp_62_, _letBind_41_, 0
|
# was: ori _tmp_47_, _letBind_26_, 0
|
||||||
ori $16, $2, 0
|
ori $16, $2, 0
|
||||||
# was: ori _mainres_10_, _tmp_62_, 0
|
# was: ori _mainres_1_, _tmp_47_, 0
|
||||||
# ori $2,_tmp_62_,0
|
# ori $2,_tmp_47_,0
|
||||||
jal putstring
|
jal putstring
|
||||||
# was: jal putstring, $2
|
# was: jal putstring, $2
|
||||||
ori $2, $16, 0
|
ori $2, $16, 0
|
||||||
# was: ori $2, _mainres_10_, 0
|
# was: ori $2, _mainres_1_, 0
|
||||||
addi $29, $29, 32
|
addi $29, $29, 28
|
||||||
lw $21, -28($29)
|
|
||||||
lw $20, -24($29)
|
lw $20, -24($29)
|
||||||
lw $19, -20($29)
|
lw $19, -20($29)
|
||||||
lw $18, -16($29)
|
lw $18, -16($29)
|
||||||
|
147
tests/reduce.asm
147
tests/reduce.asm
@ -17,99 +17,80 @@
|
|||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
# Function incr
|
|
||||||
incr:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_a_1_,$2,0
|
|
||||||
# ori _param_b_2_,$3,0
|
|
||||||
# ori _plus_L_4_,_param_a_1_,0
|
|
||||||
# ori _plus_R_5_,_param_b_2_,0
|
|
||||||
add $2, $2, $3
|
|
||||||
# was: add _incrres_3_, _plus_L_4_, _plus_R_5_
|
|
||||||
# ori $2,_incrres_3_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function main
|
# Function main
|
||||||
main:
|
main:
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
sw $18, -16($29)
|
|
||||||
sw $17, -12($29)
|
|
||||||
sw $16, -8($29)
|
sw $16, -8($29)
|
||||||
addi $29, $29, -20
|
addi $29, $29, -12
|
||||||
ori $3, $0, 3
|
ori $4, $0, 3
|
||||||
# was: ori _size_reg_14_, $0, 3
|
# was: ori _size_reg_9_, $0, 3
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $16, $28, 0
|
ori $2, $28, 0
|
||||||
# was: ori _arr_reg_8_, $28, 0
|
# was: ori _arr_reg_3_, $28, 0
|
||||||
sll $2, $3, 2
|
sll $3, $4, 2
|
||||||
# was: sll _tmp_17_, _size_reg_14_, 2
|
# was: sll _tmp_12_, _size_reg_9_, 2
|
||||||
|
addi $3, $3, 4
|
||||||
|
# was: addi _tmp_12_, _tmp_12_, 4
|
||||||
|
add $28, $28, $3
|
||||||
|
# was: add $28, $28, _tmp_12_
|
||||||
|
sw $4, 0($2)
|
||||||
|
# was: sw _size_reg_9_, 0(_arr_reg_3_)
|
||||||
|
addi $4, $2, 4
|
||||||
|
# was: addi _addr_reg_10_, _arr_reg_3_, 4
|
||||||
|
ori $3, $0, 1
|
||||||
|
# was: ori _tmp_reg_11_, $0, 1
|
||||||
|
sw $3, 0($4)
|
||||||
|
# was: sw _tmp_reg_11_, 0(_addr_reg_10_)
|
||||||
|
addi $4, $4, 4
|
||||||
|
# was: addi _addr_reg_10_, _addr_reg_10_, 4
|
||||||
|
ori $3, $0, 2
|
||||||
|
# was: ori _tmp_reg_11_, $0, 2
|
||||||
|
sw $3, 0($4)
|
||||||
|
# was: sw _tmp_reg_11_, 0(_addr_reg_10_)
|
||||||
|
addi $4, $4, 4
|
||||||
|
# was: addi _addr_reg_10_, _addr_reg_10_, 4
|
||||||
|
ori $3, $0, 3
|
||||||
|
# was: ori _tmp_reg_11_, $0, 3
|
||||||
|
sw $3, 0($4)
|
||||||
|
# was: sw _tmp_reg_11_, 0(_addr_reg_10_)
|
||||||
|
addi $4, $4, 4
|
||||||
|
# was: addi _addr_reg_10_, _addr_reg_10_, 4
|
||||||
|
lw $3, 0($2)
|
||||||
|
# was: lw _size_reg_4_, 0(_arr_reg_3_)
|
||||||
|
ori $6, $0, 0
|
||||||
|
# was: ori _letBind_2_, $0, 0
|
||||||
addi $2, $2, 4
|
addi $2, $2, 4
|
||||||
# was: addi _tmp_17_, _tmp_17_, 4
|
# was: addi _arr_reg_3_, _arr_reg_3_, 4
|
||||||
add $28, $28, $2
|
ori $4, $0, 0
|
||||||
# was: add $28, $28, _tmp_17_
|
# was: ori _ind_var_5_, $0, 0
|
||||||
sw $3, 0($16)
|
_loop_beg_7_:
|
||||||
# was: sw _size_reg_14_, 0(_arr_reg_8_)
|
sub $5, $4, $3
|
||||||
addi $3, $16, 4
|
# was: sub _tmp_reg_6_, _ind_var_5_, _size_reg_4_
|
||||||
# was: addi _addr_reg_15_, _arr_reg_8_, 4
|
bgez $5, _loop_end_8_
|
||||||
ori $2, $0, 1
|
# was: bgez _tmp_reg_6_, _loop_end_8_
|
||||||
# was: ori _tmp_reg_16_, $0, 1
|
lw $5, 0($2)
|
||||||
sw $2, 0($3)
|
# was: lw _tmp_reg_6_, 0(_arr_reg_3_)
|
||||||
# was: sw _tmp_reg_16_, 0(_addr_reg_15_)
|
addi $2, $2, 4
|
||||||
addi $3, $3, 4
|
# was: addi _arr_reg_3_, _arr_reg_3_, 4
|
||||||
# was: addi _addr_reg_15_, _addr_reg_15_, 4
|
# ori _plus_L_14_,_letBind_2_,0
|
||||||
ori $2, $0, 2
|
# ori _plus_R_15_,_tmp_reg_6_,0
|
||||||
# was: ori _tmp_reg_16_, $0, 2
|
add $6, $6, $5
|
||||||
sw $2, 0($3)
|
# was: add _fun_arg_res_13_, _plus_L_14_, _plus_R_15_
|
||||||
# was: sw _tmp_reg_16_, 0(_addr_reg_15_)
|
# ori _letBind_2_,_fun_arg_res_13_,0
|
||||||
addi $3, $3, 4
|
addi $4, $4, 1
|
||||||
# was: addi _addr_reg_15_, _addr_reg_15_, 4
|
# was: addi _ind_var_5_, _ind_var_5_, 1
|
||||||
ori $2, $0, 3
|
j _loop_beg_7_
|
||||||
# was: ori _tmp_reg_16_, $0, 3
|
_loop_end_8_:
|
||||||
sw $2, 0($3)
|
# ori _tmp_16_,_letBind_2_,0
|
||||||
# was: sw _tmp_reg_16_, 0(_addr_reg_15_)
|
ori $16, $6, 0
|
||||||
addi $3, $3, 4
|
# was: ori _mainres_1_, _tmp_16_, 0
|
||||||
# was: addi _addr_reg_15_, _addr_reg_15_, 4
|
|
||||||
lw $17, 0($16)
|
|
||||||
# was: lw _size_reg_9_, 0(_arr_reg_8_)
|
|
||||||
ori $2, $0, 0
|
|
||||||
# was: ori _letBind_7_, $0, 0
|
|
||||||
addi $16, $16, 4
|
|
||||||
# was: addi _arr_reg_8_, _arr_reg_8_, 4
|
|
||||||
ori $18, $0, 0
|
|
||||||
# was: ori _ind_var_10_, $0, 0
|
|
||||||
_loop_beg_12_:
|
|
||||||
sub $3, $18, $17
|
|
||||||
# was: sub _tmp_reg_11_, _ind_var_10_, _size_reg_9_
|
|
||||||
bgez $3, _loop_end_13_
|
|
||||||
# was: bgez _tmp_reg_11_, _loop_end_13_
|
|
||||||
lw $3, 0($16)
|
|
||||||
# was: lw _tmp_reg_11_, 0(_arr_reg_8_)
|
|
||||||
addi $16, $16, 4
|
|
||||||
# was: addi _arr_reg_8_, _arr_reg_8_, 4
|
|
||||||
# ori $2,_letBind_7_,0
|
|
||||||
# ori $3,_tmp_reg_11_,0
|
|
||||||
jal incr
|
|
||||||
# was: jal incr, $2 $3
|
|
||||||
# ori _tmp_reg_18_,$2,0
|
|
||||||
# ori _letBind_7_,_tmp_reg_18_,0
|
|
||||||
addi $18, $18, 1
|
|
||||||
# was: addi _ind_var_10_, _ind_var_10_, 1
|
|
||||||
j _loop_beg_12_
|
|
||||||
_loop_end_13_:
|
|
||||||
# ori _tmp_19_,_letBind_7_,0
|
|
||||||
ori $16, $2, 0
|
|
||||||
# was: ori _mainres_6_, _tmp_19_, 0
|
|
||||||
ori $2, $16, 0
|
ori $2, $16, 0
|
||||||
# was: ori $2, _mainres_6_, 0
|
# was: ori $2, _mainres_1_, 0
|
||||||
jal putint
|
jal putint
|
||||||
# was: jal putint, $2
|
# was: jal putint, $2
|
||||||
ori $2, $16, 0
|
ori $2, $16, 0
|
||||||
# was: ori $2, _mainres_6_, 0
|
# was: ori $2, _mainres_1_, 0
|
||||||
addi $29, $29, 20
|
addi $29, $29, 12
|
||||||
lw $18, -16($29)
|
|
||||||
lw $17, -12($29)
|
|
||||||
lw $16, -8($29)
|
lw $16, -8($29)
|
||||||
lw $31, -4($29)
|
lw $31, -4($29)
|
||||||
jr $31
|
jr $31
|
||||||
|
@ -17,129 +17,114 @@
|
|||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
# Function writeBool
|
|
||||||
writeBool:
|
|
||||||
sw $31, -4($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -12
|
|
||||||
# ori _param_b_1_,$2,0
|
|
||||||
ori $16, $2, 0
|
|
||||||
# was: ori _tmp_3_, _param_b_1_, 0
|
|
||||||
# ori _writeBoolres_2_,_tmp_3_,0
|
|
||||||
la $2, _true
|
|
||||||
# was: la $2, _true
|
|
||||||
bne $16, $0, _wBoolF_4_
|
|
||||||
# was: bne _writeBoolres_2_, $0, _wBoolF_4_
|
|
||||||
la $2, _false
|
|
||||||
# was: la $2, _false
|
|
||||||
_wBoolF_4_:
|
|
||||||
jal putstring
|
|
||||||
# was: jal putstring, $2
|
|
||||||
ori $2, $16, 0
|
|
||||||
# was: ori $2, _writeBoolres_2_, 0
|
|
||||||
addi $29, $29, 12
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function main
|
# Function main
|
||||||
main:
|
main:
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
|
sw $21, -28($29)
|
||||||
sw $20, -24($29)
|
sw $20, -24($29)
|
||||||
sw $19, -20($29)
|
sw $19, -20($29)
|
||||||
sw $18, -16($29)
|
sw $18, -16($29)
|
||||||
sw $17, -12($29)
|
sw $17, -12($29)
|
||||||
sw $16, -8($29)
|
sw $16, -8($29)
|
||||||
addi $29, $29, -28
|
addi $29, $29, -32
|
||||||
ori $2, $0, 7
|
ori $2, $0, 7
|
||||||
# was: ori _size_reg_7_, $0, 7
|
# was: ori _size_reg_3_, $0, 7
|
||||||
ori $7, $0, 0
|
ori $7, $0, 0
|
||||||
# was: ori _a_reg_8_, $0, 0
|
# was: ori _a_reg_4_, $0, 0
|
||||||
bgez $2, _safe_lab_9_
|
bgez $2, _safe_lab_5_
|
||||||
# was: bgez _size_reg_7_, _safe_lab_9_
|
# was: bgez _size_reg_3_, _safe_lab_5_
|
||||||
ori $5, $0, 4
|
ori $5, $0, 4
|
||||||
# was: ori $5, $0, 4
|
# was: ori $5, $0, 4
|
||||||
la $6, _Msg_IllegalArraySize_
|
la $6, _Msg_IllegalArraySize_
|
||||||
# was: la $6, _Msg_IllegalArraySize_
|
# was: la $6, _Msg_IllegalArraySize_
|
||||||
j _RuntimeError_
|
j _RuntimeError_
|
||||||
_safe_lab_9_:
|
_safe_lab_5_:
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $3, $28, 0
|
ori $3, $28, 0
|
||||||
# was: ori _letBind_6_, $28, 0
|
# was: ori _letBind_2_, $28, 0
|
||||||
sll $4, $2, 2
|
sll $4, $2, 2
|
||||||
# was: sll _tmp_15_, _size_reg_7_, 2
|
# was: sll _tmp_11_, _size_reg_3_, 2
|
||||||
addi $4, $4, 4
|
addi $4, $4, 4
|
||||||
# was: addi _tmp_15_, _tmp_15_, 4
|
# was: addi _tmp_11_, _tmp_11_, 4
|
||||||
add $28, $28, $4
|
add $28, $28, $4
|
||||||
# was: add $28, $28, _tmp_15_
|
# was: add $28, $28, _tmp_11_
|
||||||
sw $2, 0($3)
|
sw $2, 0($3)
|
||||||
# was: sw _size_reg_7_, 0(_letBind_6_)
|
# was: sw _size_reg_3_, 0(_letBind_2_)
|
||||||
addi $6, $3, 4
|
addi $4, $3, 4
|
||||||
# was: addi _addr_reg_10_, _letBind_6_, 4
|
# was: addi _addr_reg_6_, _letBind_2_, 4
|
||||||
ori $5, $0, 0
|
ori $5, $0, 0
|
||||||
# was: ori _i_reg_11_, $0, 0
|
# was: ori _i_reg_7_, $0, 0
|
||||||
_loop_beg_12_:
|
_loop_beg_8_:
|
||||||
sub $4, $5, $2
|
sub $6, $5, $2
|
||||||
# was: sub _tmp_reg_14_, _i_reg_11_, _size_reg_7_
|
# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_3_
|
||||||
bgez $4, _loop_end_13_
|
bgez $6, _loop_end_9_
|
||||||
# was: bgez _tmp_reg_14_, _loop_end_13_
|
# was: bgez _tmp_reg_10_, _loop_end_9_
|
||||||
sb $7, 0($6)
|
sb $7, 0($4)
|
||||||
# was: sb _a_reg_8_, 0(_addr_reg_10_)
|
# was: sb _a_reg_4_, 0(_addr_reg_6_)
|
||||||
addi $6, $6, 4
|
addi $4, $4, 4
|
||||||
# was: addi _addr_reg_10_, _addr_reg_10_, 4
|
# was: addi _addr_reg_6_, _addr_reg_6_, 4
|
||||||
addi $5, $5, 1
|
addi $5, $5, 1
|
||||||
# was: addi _i_reg_11_, _i_reg_11_, 1
|
# was: addi _i_reg_7_, _i_reg_7_, 1
|
||||||
j _loop_beg_12_
|
j _loop_beg_8_
|
||||||
_loop_end_13_:
|
_loop_end_9_:
|
||||||
# map
|
# map
|
||||||
# ori _arr_reg_17_,_letBind_6_,0
|
# ori _arr_reg_13_,_letBind_2_,0
|
||||||
lw $16, 0($3)
|
lw $16, 0($3)
|
||||||
# was: lw _size_reg_16_, 0(_arr_reg_17_)
|
# was: lw _size_reg_12_, 0(_arr_reg_13_)
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $17, $28, 0
|
ori $17, $28, 0
|
||||||
# was: ori _mainres_5_, $28, 0
|
# was: ori _mainres_1_, $28, 0
|
||||||
addi $2, $16, 3
|
addi $2, $16, 3
|
||||||
# was: addi _tmp_26_, _size_reg_16_, 3
|
# was: addi _tmp_24_, _size_reg_12_, 3
|
||||||
sra $2, $2, 2
|
sra $2, $2, 2
|
||||||
# was: sra _tmp_26_, _tmp_26_, 2
|
# was: sra _tmp_24_, _tmp_24_, 2
|
||||||
sll $2, $2, 2
|
sll $2, $2, 2
|
||||||
# was: sll _tmp_26_, _tmp_26_, 2
|
# was: sll _tmp_24_, _tmp_24_, 2
|
||||||
addi $2, $2, 4
|
addi $2, $2, 4
|
||||||
# was: addi _tmp_26_, _tmp_26_, 4
|
# was: addi _tmp_24_, _tmp_24_, 4
|
||||||
add $28, $28, $2
|
add $28, $28, $2
|
||||||
# was: add $28, $28, _tmp_26_
|
# was: add $28, $28, _tmp_24_
|
||||||
sw $16, 0($17)
|
sw $16, 0($17)
|
||||||
# was: sw _size_reg_16_, 0(_mainres_5_)
|
# was: sw _size_reg_12_, 0(_mainres_1_)
|
||||||
addi $18, $17, 4
|
addi $19, $17, 4
|
||||||
# was: addi _addr_reg_20_, _mainres_5_, 4
|
# was: addi _addr_reg_16_, _mainres_1_, 4
|
||||||
ori $19, $0, 0
|
ori $18, $0, 0
|
||||||
# was: ori _i_reg_21_, $0, 0
|
# was: ori _i_reg_17_, $0, 0
|
||||||
addi $20, $3, 4
|
addi $20, $3, 4
|
||||||
# was: addi _elem_reg_18_, _arr_reg_17_, 4
|
# was: addi _elem_reg_14_, _arr_reg_13_, 4
|
||||||
_loop_beg_22_:
|
_loop_beg_18_:
|
||||||
sub $2, $19, $16
|
sub $2, $18, $16
|
||||||
# was: sub _tmp_reg_24_, _i_reg_21_, _size_reg_16_
|
# was: sub _tmp_reg_20_, _i_reg_17_, _size_reg_12_
|
||||||
bgez $2, _loop_end_23_
|
bgez $2, _loop_end_19_
|
||||||
# was: bgez _tmp_reg_24_, _loop_end_23_
|
# was: bgez _tmp_reg_20_, _loop_end_19_
|
||||||
lb $2, 0($20)
|
lb $21, 0($20)
|
||||||
# was: lb _res_reg_19_, 0(_elem_reg_18_)
|
# was: lb _res_reg_15_, 0(_elem_reg_14_)
|
||||||
addi $20, $20, 1
|
addi $20, $20, 1
|
||||||
# was: addi _elem_reg_18_, _elem_reg_18_, 1
|
# was: addi _elem_reg_14_, _elem_reg_14_, 1
|
||||||
# ori $2,_res_reg_19_,0
|
# ori _tmp_22_,_res_reg_15_,0
|
||||||
jal writeBool
|
# ori _fun_arg_res_21_,_tmp_22_,0
|
||||||
# was: jal writeBool, $2
|
la $2, _true
|
||||||
# ori _tmp_reg_25_,$2,0
|
# was: la $2, _true
|
||||||
# ori _res_reg_19_,_tmp_reg_25_,0
|
bne $21, $0, _wBoolF_23_
|
||||||
sb $2, 0($18)
|
# was: bne _fun_arg_res_21_, $0, _wBoolF_23_
|
||||||
# was: sb _res_reg_19_, 0(_addr_reg_20_)
|
la $2, _false
|
||||||
addi $18, $18, 1
|
# was: la $2, _false
|
||||||
# was: addi _addr_reg_20_, _addr_reg_20_, 1
|
_wBoolF_23_:
|
||||||
|
jal putstring
|
||||||
|
# was: jal putstring, $2
|
||||||
|
# ori _res_reg_15_,_fun_arg_res_21_,0
|
||||||
|
sb $21, 0($19)
|
||||||
|
# was: sb _res_reg_15_, 0(_addr_reg_16_)
|
||||||
addi $19, $19, 1
|
addi $19, $19, 1
|
||||||
# was: addi _i_reg_21_, _i_reg_21_, 1
|
# was: addi _addr_reg_16_, _addr_reg_16_, 1
|
||||||
j _loop_beg_22_
|
addi $18, $18, 1
|
||||||
_loop_end_23_:
|
# was: addi _i_reg_17_, _i_reg_17_, 1
|
||||||
|
j _loop_beg_18_
|
||||||
|
_loop_end_19_:
|
||||||
ori $2, $17, 0
|
ori $2, $17, 0
|
||||||
# was: ori $2, _mainres_5_, 0
|
# was: ori $2, _mainres_1_, 0
|
||||||
addi $29, $29, 28
|
addi $29, $29, 32
|
||||||
|
lw $21, -28($29)
|
||||||
lw $20, -24($29)
|
lw $20, -24($29)
|
||||||
lw $19, -20($29)
|
lw $19, -20($29)
|
||||||
lw $18, -16($29)
|
lw $18, -16($29)
|
||||||
|
265
tests/scan.asm
265
tests/scan.asm
@ -17,173 +17,142 @@
|
|||||||
_stop_:
|
_stop_:
|
||||||
ori $2, $0, 10
|
ori $2, $0, 10
|
||||||
syscall
|
syscall
|
||||||
# Function incr
|
|
||||||
incr:
|
|
||||||
sw $31, -4($29)
|
|
||||||
addi $29, $29, -8
|
|
||||||
# ori _param_a_1_,$2,0
|
|
||||||
# ori _param_b_2_,$3,0
|
|
||||||
# ori _plus_L_4_,_param_a_1_,0
|
|
||||||
# ori _plus_R_5_,_param_b_2_,0
|
|
||||||
add $2, $2, $3
|
|
||||||
# was: add _incrres_3_, _plus_L_4_, _plus_R_5_
|
|
||||||
# ori $2,_incrres_3_,0
|
|
||||||
addi $29, $29, 8
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function writeInt
|
|
||||||
writeInt:
|
|
||||||
sw $31, -4($29)
|
|
||||||
sw $16, -8($29)
|
|
||||||
addi $29, $29, -12
|
|
||||||
# ori _param_n_6_,$2,0
|
|
||||||
ori $16, $2, 0
|
|
||||||
# was: ori _tmp_8_, _param_n_6_, 0
|
|
||||||
# ori _writeIntres_7_,_tmp_8_,0
|
|
||||||
ori $2, $16, 0
|
|
||||||
# was: ori $2, _writeIntres_7_, 0
|
|
||||||
jal putint
|
|
||||||
# was: jal putint, $2
|
|
||||||
ori $2, $16, 0
|
|
||||||
# was: ori $2, _writeIntres_7_, 0
|
|
||||||
addi $29, $29, 12
|
|
||||||
lw $16, -8($29)
|
|
||||||
lw $31, -4($29)
|
|
||||||
jr $31
|
|
||||||
# Function main
|
# Function main
|
||||||
main:
|
main:
|
||||||
sw $31, -4($29)
|
sw $31, -4($29)
|
||||||
|
sw $21, -28($29)
|
||||||
sw $20, -24($29)
|
sw $20, -24($29)
|
||||||
sw $19, -20($29)
|
sw $19, -20($29)
|
||||||
sw $18, -16($29)
|
sw $18, -16($29)
|
||||||
sw $17, -12($29)
|
sw $17, -12($29)
|
||||||
sw $16, -8($29)
|
sw $16, -8($29)
|
||||||
addi $29, $29, -28
|
addi $29, $29, -32
|
||||||
ori $2, $0, 3
|
ori $3, $0, 3
|
||||||
# was: ori _size_reg_11_, $0, 3
|
# was: ori _size_reg_3_, $0, 3
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $3, $28, 0
|
ori $6, $28, 0
|
||||||
# was: ori _letBind_10_, $28, 0
|
# was: ori _letBind_2_, $28, 0
|
||||||
sll $4, $2, 2
|
sll $2, $3, 2
|
||||||
# was: sll _tmp_14_, _size_reg_11_, 2
|
# was: sll _tmp_6_, _size_reg_3_, 2
|
||||||
addi $4, $4, 4
|
addi $2, $2, 4
|
||||||
# was: addi _tmp_14_, _tmp_14_, 4
|
# was: addi _tmp_6_, _tmp_6_, 4
|
||||||
add $28, $28, $4
|
add $28, $28, $2
|
||||||
# was: add $28, $28, _tmp_14_
|
# was: add $28, $28, _tmp_6_
|
||||||
|
sw $3, 0($6)
|
||||||
|
# was: sw _size_reg_3_, 0(_letBind_2_)
|
||||||
|
addi $3, $6, 4
|
||||||
|
# was: addi _addr_reg_4_, _letBind_2_, 4
|
||||||
|
ori $2, $0, 1
|
||||||
|
# was: ori _tmp_reg_5_, $0, 1
|
||||||
sw $2, 0($3)
|
sw $2, 0($3)
|
||||||
# was: sw _size_reg_11_, 0(_letBind_10_)
|
# was: sw _tmp_reg_5_, 0(_addr_reg_4_)
|
||||||
addi $2, $3, 4
|
addi $3, $3, 4
|
||||||
# was: addi _addr_reg_12_, _letBind_10_, 4
|
# was: addi _addr_reg_4_, _addr_reg_4_, 4
|
||||||
ori $4, $0, 1
|
ori $2, $0, 2
|
||||||
# was: ori _tmp_reg_13_, $0, 1
|
# was: ori _tmp_reg_5_, $0, 2
|
||||||
sw $4, 0($2)
|
sw $2, 0($3)
|
||||||
# was: sw _tmp_reg_13_, 0(_addr_reg_12_)
|
# was: sw _tmp_reg_5_, 0(_addr_reg_4_)
|
||||||
addi $2, $2, 4
|
addi $3, $3, 4
|
||||||
# was: addi _addr_reg_12_, _addr_reg_12_, 4
|
# was: addi _addr_reg_4_, _addr_reg_4_, 4
|
||||||
ori $4, $0, 2
|
ori $2, $0, 3
|
||||||
# was: ori _tmp_reg_13_, $0, 2
|
# was: ori _tmp_reg_5_, $0, 3
|
||||||
sw $4, 0($2)
|
sw $2, 0($3)
|
||||||
# was: sw _tmp_reg_13_, 0(_addr_reg_12_)
|
# was: sw _tmp_reg_5_, 0(_addr_reg_4_)
|
||||||
addi $2, $2, 4
|
addi $3, $3, 4
|
||||||
# was: addi _addr_reg_12_, _addr_reg_12_, 4
|
# was: addi _addr_reg_4_, _addr_reg_4_, 4
|
||||||
ori $4, $0, 3
|
# ori _arr_reg_9_,_letBind_2_,0
|
||||||
# was: ori _tmp_reg_13_, $0, 3
|
ori $8, $0, 0
|
||||||
sw $4, 0($2)
|
# was: ori _nelem_reg_12_, $0, 0
|
||||||
# was: sw _tmp_reg_13_, 0(_addr_reg_12_)
|
lw $3, 0($6)
|
||||||
addi $2, $2, 4
|
# was: lw _size_reg_8_, 0(_arr_reg_9_)
|
||||||
# was: addi _addr_reg_12_, _addr_reg_12_, 4
|
# dynalloc
|
||||||
# ori _arr_reg_17_,_letBind_10_,0
|
ori $2, $28, 0
|
||||||
ori $2, $0, 0
|
# was: ori _letBind_7_, $28, 0
|
||||||
# was: ori _nelem_reg_20_, $0, 0
|
sll $4, $3, 2
|
||||||
lw $17, 0($3)
|
# was: sll _tmp_21_, _size_reg_8_, 2
|
||||||
# was: lw _size_reg_16_, 0(_arr_reg_17_)
|
addi $4, $4, 4
|
||||||
|
# was: addi _tmp_21_, _tmp_21_, 4
|
||||||
|
add $28, $28, $4
|
||||||
|
# was: add $28, $28, _tmp_21_
|
||||||
|
sw $3, 0($2)
|
||||||
|
# was: sw _size_reg_8_, 0(_letBind_7_)
|
||||||
|
addi $4, $2, 4
|
||||||
|
# was: addi _addr_reg_13_, _letBind_7_, 4
|
||||||
|
ori $5, $0, 0
|
||||||
|
# was: ori _i_reg_14_, $0, 0
|
||||||
|
addi $6, $6, 4
|
||||||
|
# was: addi _elem_reg_10_, _arr_reg_9_, 4
|
||||||
|
_loop_beg_15_:
|
||||||
|
sub $7, $5, $3
|
||||||
|
# was: sub _tmp_reg_17_, _i_reg_14_, _size_reg_8_
|
||||||
|
bgez $7, _loop_end_16_
|
||||||
|
# was: bgez _tmp_reg_17_, _loop_end_16_
|
||||||
|
lw $7, 0($6)
|
||||||
|
# was: lw _res_reg_11_, 0(_elem_reg_10_)
|
||||||
|
addi $6, $6, 4
|
||||||
|
# was: addi _elem_reg_10_, _elem_reg_10_, 4
|
||||||
|
# ori _plus_L_19_,_nelem_reg_12_,0
|
||||||
|
# ori _plus_R_20_,_res_reg_11_,0
|
||||||
|
add $8, $8, $7
|
||||||
|
# was: add _fun_arg_res_18_, _plus_L_19_, _plus_R_20_
|
||||||
|
# ori _nelem_reg_12_,_fun_arg_res_18_,0
|
||||||
|
sw $8, 0($4)
|
||||||
|
# was: sw _nelem_reg_12_, 0(_addr_reg_13_)
|
||||||
|
addi $4, $4, 4
|
||||||
|
# was: addi _addr_reg_13_, _addr_reg_13_, 4
|
||||||
|
addi $5, $5, 1
|
||||||
|
# was: addi _i_reg_14_, _i_reg_14_, 1
|
||||||
|
j _loop_beg_15_
|
||||||
|
_loop_end_16_:
|
||||||
|
# map
|
||||||
|
# ori _arr_reg_23_,_letBind_7_,0
|
||||||
|
lw $17, 0($2)
|
||||||
|
# was: lw _size_reg_22_, 0(_arr_reg_23_)
|
||||||
# dynalloc
|
# dynalloc
|
||||||
ori $16, $28, 0
|
ori $16, $28, 0
|
||||||
# was: ori _letBind_15_, $28, 0
|
# was: ori _mainres_1_, $28, 0
|
||||||
sll $4, $17, 2
|
sll $3, $17, 2
|
||||||
# was: sll _tmp_27_, _size_reg_16_, 2
|
# was: sll _tmp_33_, _size_reg_22_, 2
|
||||||
addi $4, $4, 4
|
|
||||||
# was: addi _tmp_27_, _tmp_27_, 4
|
|
||||||
add $28, $28, $4
|
|
||||||
# was: add $28, $28, _tmp_27_
|
|
||||||
sw $17, 0($16)
|
|
||||||
# was: sw _size_reg_16_, 0(_letBind_15_)
|
|
||||||
addi $19, $16, 4
|
|
||||||
# was: addi _addr_reg_21_, _letBind_15_, 4
|
|
||||||
ori $18, $0, 0
|
|
||||||
# was: ori _i_reg_22_, $0, 0
|
|
||||||
addi $20, $3, 4
|
|
||||||
# was: addi _elem_reg_18_, _arr_reg_17_, 4
|
|
||||||
_loop_beg_23_:
|
|
||||||
sub $3, $18, $17
|
|
||||||
# was: sub _tmp_reg_25_, _i_reg_22_, _size_reg_16_
|
|
||||||
bgez $3, _loop_end_24_
|
|
||||||
# was: bgez _tmp_reg_25_, _loop_end_24_
|
|
||||||
lw $3, 0($20)
|
|
||||||
# was: lw _res_reg_19_, 0(_elem_reg_18_)
|
|
||||||
addi $20, $20, 4
|
|
||||||
# was: addi _elem_reg_18_, _elem_reg_18_, 4
|
|
||||||
# ori $2,_nelem_reg_20_,0
|
|
||||||
# ori $3,_res_reg_19_,0
|
|
||||||
jal incr
|
|
||||||
# was: jal incr, $2 $3
|
|
||||||
# ori _tmp_reg_26_,$2,0
|
|
||||||
# ori _nelem_reg_20_,_tmp_reg_26_,0
|
|
||||||
sw $2, 0($19)
|
|
||||||
# was: sw _nelem_reg_20_, 0(_addr_reg_21_)
|
|
||||||
addi $19, $19, 4
|
|
||||||
# was: addi _addr_reg_21_, _addr_reg_21_, 4
|
|
||||||
addi $18, $18, 1
|
|
||||||
# was: addi _i_reg_22_, _i_reg_22_, 1
|
|
||||||
j _loop_beg_23_
|
|
||||||
_loop_end_24_:
|
|
||||||
# map
|
|
||||||
ori $2, $16, 0
|
|
||||||
# was: ori _arr_reg_29_, _letBind_15_, 0
|
|
||||||
lw $16, 0($2)
|
|
||||||
# was: lw _size_reg_28_, 0(_arr_reg_29_)
|
|
||||||
# dynalloc
|
|
||||||
ori $17, $28, 0
|
|
||||||
# was: ori _mainres_9_, $28, 0
|
|
||||||
sll $3, $16, 2
|
|
||||||
# was: sll _tmp_38_, _size_reg_28_, 2
|
|
||||||
addi $3, $3, 4
|
addi $3, $3, 4
|
||||||
# was: addi _tmp_38_, _tmp_38_, 4
|
# was: addi _tmp_33_, _tmp_33_, 4
|
||||||
add $28, $28, $3
|
add $28, $28, $3
|
||||||
# was: add $28, $28, _tmp_38_
|
# was: add $28, $28, _tmp_33_
|
||||||
sw $16, 0($17)
|
sw $17, 0($16)
|
||||||
# was: sw _size_reg_28_, 0(_mainres_9_)
|
# was: sw _size_reg_22_, 0(_mainres_1_)
|
||||||
addi $18, $17, 4
|
addi $18, $16, 4
|
||||||
# was: addi _addr_reg_32_, _mainres_9_, 4
|
# was: addi _addr_reg_26_, _mainres_1_, 4
|
||||||
ori $19, $0, 0
|
ori $19, $0, 0
|
||||||
# was: ori _i_reg_33_, $0, 0
|
# was: ori _i_reg_27_, $0, 0
|
||||||
addi $20, $2, 4
|
addi $20, $2, 4
|
||||||
# was: addi _elem_reg_30_, _arr_reg_29_, 4
|
# was: addi _elem_reg_24_, _arr_reg_23_, 4
|
||||||
_loop_beg_34_:
|
_loop_beg_28_:
|
||||||
sub $2, $19, $16
|
sub $2, $19, $17
|
||||||
# was: sub _tmp_reg_36_, _i_reg_33_, _size_reg_28_
|
# was: sub _tmp_reg_30_, _i_reg_27_, _size_reg_22_
|
||||||
bgez $2, _loop_end_35_
|
bgez $2, _loop_end_29_
|
||||||
# was: bgez _tmp_reg_36_, _loop_end_35_
|
# was: bgez _tmp_reg_30_, _loop_end_29_
|
||||||
lw $2, 0($20)
|
lw $21, 0($20)
|
||||||
# was: lw _res_reg_31_, 0(_elem_reg_30_)
|
# was: lw _res_reg_25_, 0(_elem_reg_24_)
|
||||||
addi $20, $20, 4
|
addi $20, $20, 4
|
||||||
# was: addi _elem_reg_30_, _elem_reg_30_, 4
|
# was: addi _elem_reg_24_, _elem_reg_24_, 4
|
||||||
# ori $2,_res_reg_31_,0
|
# ori _tmp_32_,_res_reg_25_,0
|
||||||
jal writeInt
|
# ori _fun_arg_res_31_,_tmp_32_,0
|
||||||
# was: jal writeInt, $2
|
ori $2, $21, 0
|
||||||
# ori _tmp_reg_37_,$2,0
|
# was: ori $2, _fun_arg_res_31_, 0
|
||||||
# ori _res_reg_31_,_tmp_reg_37_,0
|
jal putint
|
||||||
sw $2, 0($18)
|
# was: jal putint, $2
|
||||||
# was: sw _res_reg_31_, 0(_addr_reg_32_)
|
# ori _res_reg_25_,_fun_arg_res_31_,0
|
||||||
|
sw $21, 0($18)
|
||||||
|
# was: sw _res_reg_25_, 0(_addr_reg_26_)
|
||||||
addi $18, $18, 4
|
addi $18, $18, 4
|
||||||
# was: addi _addr_reg_32_, _addr_reg_32_, 4
|
# was: addi _addr_reg_26_, _addr_reg_26_, 4
|
||||||
addi $19, $19, 1
|
addi $19, $19, 1
|
||||||
# was: addi _i_reg_33_, _i_reg_33_, 1
|
# was: addi _i_reg_27_, _i_reg_27_, 1
|
||||||
j _loop_beg_34_
|
j _loop_beg_28_
|
||||||
_loop_end_35_:
|
_loop_end_29_:
|
||||||
ori $2, $17, 0
|
ori $2, $16, 0
|
||||||
# was: ori $2, _mainres_9_, 0
|
# was: ori $2, _mainres_1_, 0
|
||||||
addi $29, $29, 28
|
addi $29, $29, 32
|
||||||
|
lw $21, -28($29)
|
||||||
lw $20, -24($29)
|
lw $20, -24($29)
|
||||||
lw $19, -20($29)
|
lw $19, -20($29)
|
||||||
lw $18, -16($29)
|
lw $18, -16($29)
|
||||||
|
Reference in New Issue
Block a user