From ceb84c9e3d7e3e16db91bc99424aa3c10806314f Mon Sep 17 00:00:00 2001 From: cat Date: Mon, 23 Jun 2025 13:12:31 +0300 Subject: [PATCH] Fixed read loop glitch --- helper.s | 6 ++++-- main.s | 15 ++++++++++++++- tests/test5.bf | 1 + welcome.bf | 1 + 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 tests/test5.bf diff --git a/helper.s b/helper.s index f8a9933..769f14d 100644 --- a/helper.s +++ b/helper.s @@ -64,6 +64,7 @@ read: # rsi = char* write: push r15 + push r11 mov r15, rdi mov rdi, rsi # no need to touch rsi call count @@ -73,6 +74,7 @@ write: mov rdi, r15 syscall + pop r11 pop r15 ret @@ -80,9 +82,9 @@ write: count: mov rax, rdi count_loop: - mov r8b, [rax] + mov r9b, [rax] inc rax - cmp r8b, 0 + cmp r9b, 0 jnz count_loop dec rax sub rax, rdi diff --git a/main.s b/main.s index 43ee130..fd8a1d7 100644 --- a/main.s +++ b/main.s @@ -165,9 +165,22 @@ process_prnt: ret process_inpt: + # Gotta flush the buffer first + mov rdi, 1 + mov rsi, r13 + call write + + # Clear Text buffer + mov rdi, r10 + sub rdi, r13 + mov rsi, rdi + mov rdi, r13 + call clear_heap_block + mov r10, r13 + + # Ask character mov rdi, r14 add rdi, r15 - mov rsi, rdi # char* xor rdi, rdi # fd mov rdx, 1 # size diff --git a/tests/test5.bf b/tests/test5.bf new file mode 100644 index 0000000..afb7c38 --- /dev/null +++ b/tests/test5.bf @@ -0,0 +1 @@ +++++++++[>++++++++<-]>+.,+.,, diff --git a/welcome.bf b/welcome.bf index ecbf2c1..3cd9f36 100644 --- a/welcome.bf +++ b/welcome.bf @@ -1 +1,2 @@ +++++++++[>++++++++>+++++++++++>++++>++++++++++>+++++++++++>++++>+++++++++++<<<<<<<-]>.>++.+++++++..+++.>---.-.>---.>++.<<<---.>>>--.<<<+++.--.>>>++.<<.<+++++++.-----.>.>>--.--.<<<+++++.>>>>+++.<<<<-.>.>>+.<<<-.>>>-.++++++++.+++++.>>+++.<<<<<+++.>>>>>---.<<---.<<.>>--.+++++.<<<-.>>>>>++.<<++++.--.++.>>.<<++.>>.<<--.>+++++.<<<.<+++.>>>.>>++++.<<++..>>----.<<------.<<.>>-----.+++++.<<.<<-------.>>>----.------.<+.>>>>>++++++++++. +,+++..,