|
@@ -1,5 +1,9 @@
|
|
1
|
+import logging
|
|
2
|
+
|
1
|
3
|
from .rpnlib import *
|
2
|
4
|
|
|
5
|
+logger = logging.getLogger()
|
|
6
|
+
|
3
|
7
|
class Turmit(object):
|
4
|
8
|
''' @brief Represent a turmit that act given an RPN expression with an
|
5
|
9
|
infinite looping stack with variable stack size.
|
|
@@ -101,7 +105,7 @@ class Turmit(object):
|
101
|
105
|
@return popped value
|
102
|
106
|
'''
|
103
|
107
|
res = self._stack[self._cur]
|
104
|
|
- if self._cur == 0:
|
|
108
|
+ if self._cur <= 0:
|
105
|
109
|
self._cur = len(self._stack) - 1
|
106
|
110
|
else:
|
107
|
111
|
self._cur -= 1
|
|
@@ -137,10 +141,10 @@ class Turmit(object):
|
137
|
141
|
''' @brief Update memory stack size
|
138
|
142
|
'''
|
139
|
143
|
|
140
|
|
- if new_sz < 2:
|
141
|
|
- new_sz = 2
|
142
|
144
|
stksz = len(self._stack)
|
143
|
145
|
new_sz %= 0xFFF
|
|
146
|
+ if new_sz < 2:
|
|
147
|
+ new_sz = 2
|
144
|
148
|
if new_sz > stksz:
|
145
|
149
|
self._stack += [ 0 for _ in range(new_sz - stksz) ]
|
146
|
150
|
elif new_sz < stksz:
|
|
@@ -253,6 +257,7 @@ class Turmit(object):
|
253
|
257
|
if a == 0:
|
254
|
258
|
self.__ip += offset
|
255
|
259
|
|
|
260
|
+ """
|
256
|
261
|
@RpnOp
|
257
|
262
|
def jnz(self, a, offset):
|
258
|
263
|
''' @brief Increments IP if a != 0
|
|
@@ -261,6 +266,7 @@ class Turmit(object):
|
261
|
266
|
'''
|
262
|
267
|
if a != 0:
|
263
|
268
|
self.__ip += offset
|
|
269
|
+ """
|
264
|
270
|
|
265
|
271
|
@RpnOp
|
266
|
272
|
def jcmp(self, a, b, cnd, offset):
|