diff options
Diffstat (limited to 'src/codegen.zig')
-rw-r--r-- | src/codegen.zig | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index 011d28a..1e8ed41 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -610,31 +610,31 @@ const Context = struct { } fn genPrint(self: *Context, print: compile.Instr.Print) !void { - const arg = self.register_allocator.get(print.arg); + const num = self.register_allocator.get(print.arg); const quot = try self.register_allocator.allocateAux(); defer self.register_allocator.freeAux(quot); - const aux1 = try self.register_allocator.allocateAux(); - defer self.register_allocator.freeAux(aux1); + const digit = try self.register_allocator.allocateAux(); + defer self.register_allocator.freeAux(digit); const count = try self.register_allocator.allocateAux(); defer self.register_allocator.freeAux(count); try self.maybeFreeSources(print.sources()); - try self.emit(.addi(aux1, .zero, '\n')); + try self.emit(.addi(digit, .zero, '\n')); try self.emit(.addi(.sp, .sp, -1)); - try self.emit(.sb(.sp, 0, aux1)); + try self.emit(.sb(.sp, 0, digit)); try self.emit(.addi(count, .zero, 1)); - - try self.emit(.addi(aux1, arg, 0)); try self.emit(.addi(quot, .zero, 10)); - try self.emit(.divu(arg, aux1, quot)); - try self.emit(.remu(aux1, aux1, quot)); - try self.emit(.addi(aux1, aux1, '0')); + + try self.emit(.addi(digit, num, 0)); + try self.emit(.divu(num, digit, quot)); + try self.emit(.remu(digit, digit, quot)); + try self.emit(.addi(digit, digit, '0')); try self.emit(.addi(.sp, .sp, -1)); - try self.emit(.sb(.sp, 0, aux1)); + try self.emit(.sb(.sp, 0, digit)); try self.emit(.addi(count, count, 1)); - try self.emit(.bne(arg, .zero, -4 * 8)); + try self.emit(.bne(num, .zero, -4 * 7)); try self.emit(.addi(.a7, .zero, 64)); // no = write try self.emit(.addi(.a0, .zero, 1)); // fd = stdout |