Brain_Fuck/mips2.asm

155 lines
2.5 KiB
NASM

.data
data_pointer: .word 0
.text
setup:
li $v0, 9
li $a0, 30000
syscall
la $t1, data_pointer
sw $v0, ($t1)
# t0 - current address (data_pointer)
move $t0, $v0
bf:
lb $t1, ($t0)
addi $t1, $t1, 8
sb $t1, ($t0)
lb $t1, ($t0)
beqz $t1, BF_CLOSE_1
BF_OPEN_1:
addi $t0, $t0, 1
lb $t1, ($t0)
addi $t1, $t1, 4
sb $t1, ($t0)
lb $t1, ($t0)
beqz $t1, BF_CLOSE_2
BF_OPEN_2:
addi $t0, $t0, 1
lb $t1, ($t0)
addi $t1, $t1, 2
sb $t1, ($t0)
addi $t0, $t0, 1
lb $t1, ($t0)
addi $t1, $t1, 3
sb $t1, ($t0)
addi $t0, $t0, 1
lb $t1, ($t0)
addi $t1, $t1, 3
sb $t1, ($t0)
addi $t0, $t0, 1
lb $t1, ($t0)
addi $t1, $t1, 1
sb $t1, ($t0)
subi $t0, $t0, 4
lb $t1, ($t0)
subi $t1, $t1, 1
sb $t1, ($t0)
lb $t1, ($t0)
bnez $t1, BF_OPEN_2
BF_CLOSE_2:
addi $t0, $t0, 1
lb $t1, ($t0)
addi $t1, $t1, 1
sb $t1, ($t0)
addi $t0, $t0, 1
lb $t1, ($t0)
addi $t1, $t1, 1
sb $t1, ($t0)
addi $t0, $t0, 1
lb $t1, ($t0)
subi $t1, $t1, 1
sb $t1, ($t0)
addi $t0, $t0, 2
lb $t1, ($t0)
addi $t1, $t1, 1
sb $t1, ($t0)
lb $t1, ($t0)
beqz $t1, BF_CLOSE_3
BF_OPEN_3:
subi $t0, $t0, 1
lb $t1, ($t0)
bnez $t1, BF_OPEN_3
BF_CLOSE_3:
subi $t0, $t0, 1
lb $t1, ($t0)
subi $t1, $t1, 1
sb $t1, ($t0)
lb $t1, ($t0)
bnez $t1, BF_OPEN_1
BF_CLOSE_1:
addi $t0, $t0, 2
li $v0, 11
lb $a0, ($t0)
syscall
addi $t0, $t0, 1
lb $t1, ($t0)
subi $t1, $t1, 3
sb $t1, ($t0)
li $v0, 11
lb $a0, ($t0)
syscall
lb $t1, ($t0)
addi $t1, $t1, 7
sb $t1, ($t0)
li $v0, 11
lb $a0, ($t0)
syscall
lb $t1, ($t0)
addi $t1, $t1, 3
sb $t1, ($t0)
li $v0, 11
lb $a0, ($t0)
syscall
addi $t0, $t0, 2
li $v0, 11
lb $a0, ($t0)
syscall
subi $t0, $t0, 1
lb $t1, ($t0)
subi $t1, $t1, 1
sb $t1, ($t0)
li $v0, 11
lb $a0, ($t0)
syscall
subi $t0, $t0, 1
li $v0, 11
lb $a0, ($t0)
syscall
lb $t1, ($t0)
addi $t1, $t1, 3
sb $t1, ($t0)
li $v0, 11
lb $a0, ($t0)
syscall
lb $t1, ($t0)
subi $t1, $t1, 6
sb $t1, ($t0)
li $v0, 11
lb $a0, ($t0)
syscall
lb $t1, ($t0)
subi $t1, $t1, 8
sb $t1, ($t0)
li $v0, 11
lb $a0, ($t0)
syscall
addi $t0, $t0, 2
lb $t1, ($t0)
addi $t1, $t1, 1
sb $t1, ($t0)
li $v0, 11
lb $a0, ($t0)
syscall
addi $t0, $t0, 1
lb $t1, ($t0)
addi $t1, $t1, 2
sb $t1, ($t0)
li $v0, 11
lb $a0, ($t0)
syscall
li $v0, 11
lb $a0, ($t0)
syscall