diff options
| author | 2023-02-12 19:52:41 +0000 | |
|---|---|---|
| committer | 2023-02-12 19:52:41 +0000 | |
| commit | 827abe43054686d6b9b1749a00f521e5707031ad (patch) | |
| tree | 152459167e9c6fe47ece7f2311347480b073579e /asm/ffi.py | |
| parent | add mov and unconditional jump (diff) | |
add immediate signed and unsigned tests
Diffstat (limited to 'asm/ffi.py')
| -rw-r--r-- | asm/ffi.py | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -76,11 +76,26 @@ class CompileError(Exception): self.r = r class Environment: - def getreg(self, reg): + def getreg(self, reg, signed=False): + """ Get the value at the register. + + :param reg: Register number. + :param signed: If the register value should be interpreted + as signed. + """ if reg >= self.cenv.reglen or reg < 0: raise RegisterOverflowError(r) - return creole.from_2c(self.cenv.reg[reg]) + if signed: + return creole.from_2c(self.cenv.reg[reg]) + else: + return self.cenv.reg[reg] def getstk(self, stk): + """ Get the value at the stack position. + + :param reg: Register number. + :param signed: If the stack value should be interpreted + as signed. + """ if stk >= self.cenv.stklen or stk < 0: raise StackOverflowError(r) return creole.from_2c(self.cenv.stk[stk]) |
