Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .import print
- .import init
- .import new
- .import delete
- lis $4
- .word 4
- lis $11
- .word 1
- sub $29,$30,$4
- sw $1, -4($30) ; store first command
- sub $30, $30, $4
- ;offset: -4 location: 0
- sw $2, -4($30);store second param
- sub $30, $30, $4
- ;offset: -8 location: -4
- sw $31, -4($30);push 31 on stack
- sub $30, $30, $4
- lis $5 ; $5 <- print addr
- .word init
- jalr $5 ; call init subroutine
- lw $31, 0($30)
- add $30,$30,$4 ; restore $31
- ;;***** init line end********
- ;*****rule: DECLARING INT dcls dcl BECOMES NULL SEMI BEGIN ******
- ;*****rule: DECLARING INT dcls dcl BECOMES NULL SEMI BEGIN ******
- ;;///////////////////////////////////////////////not generating code for rule: dcls
- add $3, $0, $11
- ;;***** dcl type ID ******
- ;;storing symbol c ****
- sw $3, -4($30) ; store declaration
- sub $30, $30, $4
- ;offset: -12 location: -8
- ;*****rule: DECLARING INT dcls dcl BECOMES NULL SEMI END ******
- add $3, $0, $11
- ;;***** dcl type ID ******
- ;;storing symbol d ****
- sw $3, -4($30) ; store declaration
- sub $30, $30, $4
- ;offset: -16 location: -12
- ;*****rule: DECLARING INT dcls dcl BECOMES NULL SEMI END ******
- ;;///////////////////////////////////////////////not generating code for rule: statements
- ;;********* statement lvalue BECOMES expr SEMI begin ********
- ;; loading number into register 3
- lis $3
- .word 10
- ;********** factor new int [expr] *********
- add $1, $3, $0
- sw $31, -4($30);push 31 on stack
- sub $30, $30, $4
- lis $5 ;
- .word new
- jalr $5 ; callnewsubroutine
- lw $31, 0($30)
- add $30,$30,$4 ; restore $31
- ;;***** init line end********
- bne $3, $0, 1
- add $3, $0, $11
- ;***** lvalue ID ******
- ;;calling symbol c ****
- sw $3, -8($29)
- ;;********* statement lvalue BECOMES expr SEMI end ********
- ;;********* statement lvalue BECOMES expr SEMI begin ********
- ;; loading number into register 3
- lis $3
- .word 2
- ; INT * ***************
- sw $3, -4($30); push $3 on stack
- sub $30, $30, $4
- ;; *** loading c******
- lw $3, -8($29)
- ;offset: -20 location: 0
- lw $5, 0($30)
- add $30,$30,$4 ; $5 <- expr2
- sw $5, 0($3)
- ;;********* statement lvalue BECOMES expr SEMI end ********
- ;;********* statement lvalue BECOMES expr SEMI begin ********
- ;; loading number into register 3
- lis $3
- .word 3
- ; INT * ***************
- sw $3, -4($30); push $3 on stack
- sub $30, $30, $4
- ; *** PLUS ***
- ;; *** loading c******
- lw $3, -8($29)
- ;offset: -20 location: 0
- sw $3, -4($30); push $3 on stack
- sub $30, $30, $4
- ;; loading number into register 3
- lis $3
- .word 1
- mult $3, $4
- mflo $3
- lw $5, 0($30)
- add $30,$30,$4 ; $5 <- expr2
- add $3, $5, $3 ; $3 <- expr + term
- lw $5, 0($30)
- add $30,$30,$4 ; $5 <- expr2
- sw $5, 0($3)
- ;;********* statement lvalue BECOMES expr SEMI end ********
- ;;********* statement lvalue BECOMES expr SEMI begin ********
- ;; loading number into register 3
- lis $3
- .word 5
- ; INT * ***************
- sw $3, -4($30); push $3 on stack
- sub $30, $30, $4
- ; *** PLUS ***
- ;; *** loading c******
- lw $3, -8($29)
- ;offset: -20 location: 0
- sw $3, -4($30); push $3 on stack
- sub $30, $30, $4
- ;; loading number into register 3
- lis $3
- .word 2
- mult $3, $4
- mflo $3
- lw $5, 0($30)
- add $30,$30,$4 ; $5 <- expr2
- add $3, $5, $3 ; $3 <- expr + term
- lw $5, 0($30)
- add $30,$30,$4 ; $5 <- expr2
- sw $5, 0($3)
- ;;********* statement lvalue BECOMES expr SEMI end ********
- ;;********* statement lvalue BECOMES expr SEMI begin ********
- ;; loading number into register 3
- lis $3
- .word 7
- ; INT * ***************
- sw $3, -4($30); push $3 on stack
- sub $30, $30, $4
- ; *** PLUS ***
- ;; *** loading c******
- lw $3, -8($29)
- ;offset: -20 location: 0
- sw $3, -4($30); push $3 on stack
- sub $30, $30, $4
- ;; loading number into register 3
- lis $3
- .word 3
- mult $3, $4
- mflo $3
- lw $5, 0($30)
- add $30,$30,$4 ; $5 <- expr2
- add $3, $5, $3 ; $3 <- expr + term
- lw $5, 0($30)
- add $30,$30,$4 ; $5 <- expr2
- sw $5, 0($3)
- ;;********* statement lvalue BECOMES expr SEMI end ********
- ;;********* statement lvalue BECOMES expr SEMI begin ********
- ;; loading number into register 3
- lis $3
- .word 11
- ; INT * ***************
- sw $3, -4($30); push $3 on stack
- sub $30, $30, $4
- ; *** PLUS ***
- ;; *** loading c******
- lw $3, -8($29)
- ;offset: -20 location: 0
- sw $3, -4($30); push $3 on stack
- sub $30, $30, $4
- ;; loading number into register 3
- lis $3
- .word 4
- mult $3, $4
- mflo $3
- lw $5, 0($30)
- add $30,$30,$4 ; $5 <- expr2
- add $3, $5, $3 ; $3 <- expr + term
- lw $5, 0($30)
- add $30,$30,$4 ; $5 <- expr2
- sw $5, 0($3)
- ;;********* statement lvalue BECOMES expr SEMI end ********
- ;;********* statement lvalue BECOMES expr SEMI begin ********
- ;; *** loading c******
- lw $3, -8($29)
- ;offset: -16 location: 0
- ;***** lvalue ID ******
- ;;calling symbol d ****
- sw $3, -12($29)
- ;;********* statement lvalue BECOMES expr SEMI end ********
- ;;***** printline begin********
- sw $31, -4($30);push 31 on stack
- sub $30, $30, $4
- ;; *** loading d******
- lw $3, -12($29)
- ;offset: -20 location: 0
- lw $3, 0($3); *************** FACTOR STAR FACTOR
- add $1, $3, $0 ; $1 <- expr
- lis $5 ; $5 <- print addr
- .word print
- jalr $5 ; call print subroutine
- lw $31, 0($30)
- add $30,$30,$4 ; restore $31
- ;;***** printline end********
- ;;***** printline begin********
- sw $31, -4($30);push 31 on stack
- sub $30, $30, $4
- ; *** PLUS ***
- ;; *** loading d******
- lw $3, -12($29)
- ;offset: -20 location: 0
- lw $3, 0($3); *************** FACTOR STAR FACTOR
- sw $3, -4($30); push $3 on stack
- sub $30, $30, $4
- ;; loading number into register 3
- lis $3
- .word 2
- lw $5, 0($30)
- add $30,$30,$4 ; $5 <- expr2
- add $3, $5, $3 ; $3 <- expr + term
- ;;**********************
- add $1, $3, $0 ; $1 <- expr
- lis $5 ; $5 <- print addr
- .word print
- jalr $5 ; call print subroutine
- lw $31, 0($30)
- add $30,$30,$4 ; restore $31
- ;;***** printline end********
- ;; loading number into register 3
- lis $3
- .word 0
- ;;;epilog
- add $30,$29,$4
- jr $31
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement