aboutsummaryrefslogtreecommitdiffstats
path: root/asm/ffi.py
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2023-02-12 19:52:41 +0000
committerGravatar Peter McGoron 2023-02-12 19:52:41 +0000
commit827abe43054686d6b9b1749a00f521e5707031ad (patch)
tree152459167e9c6fe47ece7f2311347480b073579e /asm/ffi.py
parentadd mov and unconditional jump (diff)
add immediate signed and unsigned tests
Diffstat (limited to 'asm/ffi.py')
-rw-r--r--asm/ffi.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/asm/ffi.py b/asm/ffi.py
index ccbe40d..3442171 100644
--- a/asm/ffi.py
+++ b/asm/ffi.py
@@ -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])