Compare commits

..

No commits in common. "zliczaj2" and "mpabi" have entirely different histories.

View File

@ -1,42 +1,41 @@
.data
sentence:
.ascii "Become a Prograammermmmmmrr\0"
match:
.ascii "abc \0"
out:
.space 256, 0
.data
// 0x8000102c
// x7 = PC+(imm <<()
// x7 =
.text
.align 2
.globl _start
// =
// 0x8000 0000 +
// 0x8001 0000
// = 0x8001 0000
// aupic x7, 1
sentence: .ascii "Become a Prograammermmmmmrr\0"
// ^
// ^
.text
.align 2
.globl _start
_start:
la t0, sentence # Load the address of sentence into t0
la t2, sentence # Load the address of sentence into t2
li t0, 0x72 // ascii 'm'
li t1, 0x00 // licznik wystapien 'm'
print_loop:
lbu t3, 0(t2) # Load the byte (character) from address in t2
beq t3, zero, done_print # If character is zero (null terminator), exit loop
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
bne t3, t0, 1f
addi t1, t1, 1
1:
la a0, match # Load address of match into a0
la s2, out # Load address of out into s0
addi t2, t2, 1 # Increment pointer to the next character
j print_loop # Repeat the loop
iteruj_match:
lbu a1, 0(a0) # Load unsigned byte from match into a1
beq a1, zero, done_match # If end of match string (\0), exit inner loop
done_print:
ebreak # End program (or use an exit system call)
bne t1, a1, 1f # If t1 != a1, skip increment
lbu s10, 0(s2) # Load current counter value from out into s10
addi s10, s10, 1 # Increment counter
sb s10, 0(s2) # Store updated counter back to out
1:
addi s0, s0, 1
j iteruj_match # Jump back to start of inner loop
done_match:
addi t0, t0, 1 # Increment pointer to the next character in sentence
j read_str # Jump back to start of outer loop
read_str_done:
ebreak # End program