diff options
author | Ratakor <ratakor@disroot.org> | 2023-09-16 21:17:46 +0200 |
---|---|---|
committer | Ratakor <ratakor@disroot.org> | 2023-09-16 21:17:46 +0200 |
commit | 26f5ad706518938d886782e153f01da0c3eb80af (patch) | |
tree | a414394900db4fc96dd34700faaac70cf7343307 | |
parent | baef9cc1f54b92d36db9ed9c0257dbe5a09050c9 (diff) |
Fix unrollBasic missing optimizations
-rw-r--r-- | src/bfc.zig | 13 |
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(); |