aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRatakor <ratakor@disroot.org>2023-09-16 21:17:46 +0200
committerRatakor <ratakor@disroot.org>2023-09-16 21:17:46 +0200
commit26f5ad706518938d886782e153f01da0c3eb80af (patch)
treea414394900db4fc96dd34700faaac70cf7343307
parentbaef9cc1f54b92d36db9ed9c0257dbe5a09050c9 (diff)
Fix unrollBasic missing optimizations
-rw-r--r--src/bfc.zig13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/bfc.zig b/src/bfc.zig
index 72475b8..1f21dc6 100644
--- a/src/bfc.zig
+++ b/src/bfc.zig
@@ -51,16 +51,16 @@ fn die(status: u8, comptime fmt: []const u8, args: anytype) noreturn {
fn unrollBasic(instruction: u8, reader: anytype, writer: anytype) !u8 {
var counter: u16 = 1;
- var res: u8 = undefined;
+ var byte = try reader.readByte();
while (true) {
- const byte = try reader.readByte();
if (byte == instruction) {
counter += 1;
- } else {
- res = byte;
- break;
+ } else switch (byte) {
+ '>', '<', '+', '-', '[', ']', '.', ',' => break,
+ else => {},
}
+ byte = try reader.readByte();
}
if (counter == 1) {
@@ -81,7 +81,7 @@ fn unrollBasic(instruction: u8, reader: anytype, writer: anytype) !u8 {
}
}
- return res;
+ return byte;
}
pub fn main() !void {
@@ -246,6 +246,7 @@ pub fn main() !void {
\\ xor rdi, rdi
\\ mov rax, 0x3c
\\ syscall
+ \\
);
try bw.flush();