Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- lis $4
- .word 4
- lis $11
- .word 1
- .import print
- sub $29, $30, $4 ; initialize frame pointer
- lis $12
- .word 8 ; $12 stores the total space we need
- sub $30, $30, $12 ; set the stack frame
- sw $1, 0($29) ; store first param
- sw $2, -4($29) ; store second param
- lw $3, 0($29) ; Load value of ID, a, into $3
- sw $3, -4($30) ; push register 3
- sub $30, $30, $4 ; update stack pointer
- lw $3, -4($29) ; Load value of ID, b, into $3
- add $30, $30, $4
- lw $5, -4($30) ; pop the top of the stack
- slt $3, $5, $3
- beq $3, $0, IF1
- lw $3, 0($29) ; Load value of ID, a, into $3
- sw $1, -4($30) ; push register 1
- sub $30, $30, $4 ; update stack pointer
- add $1, $3, $0 ; move expression from $3 to $1
- lis $10
- .word print
- sw $31, -4($30) ; push register 31
- sub $30, $30, $4 ; update stack pointer
- jalr $10 ; print procedure
- add $30, $30, $4
- lw $31, -4($30) ; restore $31 after procedure call
- add $30, $30, $4
- lw $1, -4($30) ; restore $1 after procedure call
- beq $0, $0, ELSE1
- IF1:
- lw $3, -4($29) ; Load value of ID, b, into $3
- sw $1, -4($30) ; push register 1
- sub $30, $30, $4 ; update stack pointer
- add $1, $3, $0 ; move expression from $3 to $1
- lis $10
- .word print
- sw $31, -4($30) ; push register 31
- sub $30, $30, $4 ; update stack pointer
- jalr $10 ; print procedure
- add $30, $30, $4
- lw $31, -4($30) ; restore $31 after procedure call
- add $30, $30, $4
- lw $1, -4($30) ; restore $1 after procedure call
- ELSE1:
- lis $3
- .word 0
- add $30, $29, $4 ; reset stack
- jr $31
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement