diff --git a/riscemu/priv/ElfLoader.py b/riscemu/priv/ElfLoader.py index cf58bea..f908f4d 100644 --- a/riscemu/priv/ElfLoader.py +++ b/riscemu/priv/ElfLoader.py @@ -1,5 +1,5 @@ from dataclasses import dataclass -from typing import List, Dict, Union +from typing import List, Dict, Tuple from elftools.elf.elffile import ELFFile from elftools.elf.sections import Section, SymbolTableSection @@ -108,10 +108,12 @@ class ElfInstruction: def get_reg(self, num: int) -> str: return RISCV_REGS[self.args[num]] - def __repr__(self): - if self.name in ('sw', 'sh', 'sb', 'lb', 'lh', 'lb', 'lbu', 'lhu'): + def __repr__(self) -> str: + if self.name == 'jal' and self.args[0] == 0: + return "j {}".format(self.args[1]) + elif self.name in ('lw', 'lh', 'lb', 'lbu', 'lhu', 'sw', 'sh', 'sb'): args = "{}, {}({})".format( - self.args[1], self.args[2], self.args[0] + RISCV_REGS[self.args[0]], self.args[2], RISCV_REGS[self.args[1]] ) else: args = ", ".join(map(str, self.args))