From fd6b39c0b7ac547437cf9b04250e90cdc125452e Mon Sep 17 00:00:00 2001 From: Ry Date: Sun, 5 Feb 2023 16:42:17 -0800 Subject: [PATCH] rv2fox: Implement support for x0-x31 registers --- gcc/rv2fox | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc/rv2fox b/gcc/rv2fox index f977568..ff5ebf5 100755 --- a/gcc/rv2fox +++ b/gcc/rv2fox @@ -121,12 +121,13 @@ class Converter: self.start_file = start_file self.additional_includes = additional_includes - self.xregs = ['x{n}' for n in range(32)] # TODO: map all registers, consider calling conventions + self.xregs = [f'x{n}' for n in range(32)] self.regs = ['zero', 'ra', 'sp', 'gp', 'tp'] self.regs += [f't{n}' for n in range(3)] self.regs += [f's{n}' for n in range(2)] self.regs += [f'a{n}' for n in range(8)] self.regidx = { r: i for i, r in enumerate(self.regs) } + self.xregidx = { r: i for i, r in enumerate(self.xregs) } self.tmp = 'r0' # temporary register self.branches = ['bge', 'blt', 'ble', 'bne'] @@ -172,6 +173,8 @@ class Converter: return 'rsp' elif reg in self.regidx: return f'r{self.regidx[reg]}' + elif reg in self.xregidx: + return f'r{self.xregidx[reg]}' else: raise Exception(f'Unknown register {reg}')