ai refactored
This commit is contained in:
parent
efee78f136
commit
d42add2c88
49
counter.S
49
counter.S
@ -1,50 +1,31 @@
|
|||||||
.data
|
|
||||||
sentence:
|
|
||||||
.ascii "Become a Prograammermmmmmrr\0"
|
|
||||||
// ^
|
|
||||||
|
|
||||||
match:
|
|
||||||
.ascii "abc \0"
|
|
||||||
// ^
|
|
||||||
|
|
||||||
out:
|
|
||||||
.space 256, 0
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 2
|
.align 2
|
||||||
.globl _start
|
.globl _start
|
||||||
|
|
||||||
_start:
|
_start:
|
||||||
|
la t0, sentence # Load the address of sentence into t0
|
||||||
la t0, sentence # Load the address of sentence into t2
|
|
||||||
|
|
||||||
read_str:
|
read_str:
|
||||||
|
lbu t1, 0(t0) # Load unsigned byte from sentence into t1
|
||||||
|
beq t1, zero, read_str_done # If end of string (\0), exit loop
|
||||||
|
|
||||||
|
la a0, match # Load address of match into a0
|
||||||
lbu t1, 0(t0)
|
la s0, out # Load address of out into s0
|
||||||
beq t1, zero, read_str_done
|
|
||||||
|
|
||||||
la a0, match
|
|
||||||
la s0, out
|
|
||||||
|
|
||||||
iteruj_match:
|
iteruj_match:
|
||||||
|
lbu a1, 0(match) # Load unsigned byte from match into a1
|
||||||
|
beq a1, zero, done_match # If end of match string (\0), exit inner loop
|
||||||
|
|
||||||
lbu a1, 0(match)
|
bne t1, a1, 1f # If t1 != a1, skip increment
|
||||||
beq a1, zero, done_match
|
lbu s10, 0(out) # Load current counter value from out into s10
|
||||||
|
addi s10, s10, 1 # Increment counter
|
||||||
bne t1, a1, 1f
|
sb s10, 0(out) # Store updated counter back to out
|
||||||
lbu s10, 0(out)
|
|
||||||
addi s10, s10, 1
|
|
||||||
sb s10, 0(out)
|
|
||||||
1:
|
1:
|
||||||
|
|
||||||
j iteruj_match
|
j iteruj_match # Jump back to start of inner loop
|
||||||
done_match:
|
done_match:
|
||||||
|
|
||||||
addi t0, t0, 1 # Increment pointer to the next character
|
addi t0, t0, 1 # Increment pointer to the next character in sentence
|
||||||
j read_str
|
j read_str # Jump back to start of outer loop
|
||||||
|
|
||||||
read_str_done:
|
read_str_done:
|
||||||
|
ebreak # End program
|
||||||
ebreak # End program (or use an exit system call)
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user