DREAMWEB: added inc/dec instructions.

This commit is contained in:
Vladimir Menshakov 2011-06-12 20:10:17 +04:00 committed by Alyssa Milburn
parent f8422b56a9
commit bf80a8a3ac
3 changed files with 394 additions and 370 deletions

View File

@ -303,17 +303,17 @@ namespace %s {
def _shl(self, dst, src):
self.body += "\tcontext._shl(%s, %s);\n" %self.parse2(dst, src)
def _sar(self, dst, src):
self.body += "\tcontext._sar(%s%s);\n" %self.parse2(dst, src)
#def _sar(self, dst, src):
# self.body += "\tcontext._sar(%s%s);\n" %self.parse2(dst, src)
def _sal(self, dst, src):
self.body += "\tcontext._sal(%s, %s);\n" %self.parse2(dst, src)
#def _sal(self, dst, src):
# self.body += "\tcontext._sal(%s, %s);\n" %self.parse2(dst, src)
def _rcl(self, dst, src):
self.body += "\tcontext._rcl(%s, %s);\n" %self.parse2(dst, src)
#def _rcl(self, dst, src):
# self.body += "\tcontext._rcl(%s, %s);\n" %self.parse2(dst, src)
def _rcr(self, dst, src):
self.body += "\tcontext._rcr(%s, %s);\n" %self.parse2(dst, src)
#def _rcr(self, dst, src):
# self.body += "\tcontext._rcr(%s, %s);\n" %self.parse2(dst, src)
def _mul(self, src):
src = self.expand(src)
@ -325,11 +325,11 @@ namespace %s {
def _inc(self, dst):
dst = self.expand(dst)
self.body += "\tcontext._add(%s, 1);\n" %(dst)
self.body += "\tcontext._inc(%s);\n" %(dst)
def _dec(self, dst):
dst = self.expand(dst)
self.body += "\tcontext._sub(%s, 1);\n" %(dst)
self.body += "\tcontext._dec(%s);\n" %(dst)
def _cmp(self, a, b):
self.body += "\tcontext._cmp(%s, %s);\n" %self.parse2(a, b)

File diff suppressed because it is too large Load Diff

View File

@ -302,6 +302,30 @@ public:
flags.update_zs(dst);
}
inline void _inc(uint8 &dst) {
flags.update_o((uint8)(dst + 1), dst);
++dst;
flags.update_zs(dst);
}
inline void _inc(uint16 &dst) {
flags.update_o((uint16)(dst + 1), dst);
++dst;
flags.update_zs(dst);
}
inline void _dec(uint8 &dst) {
flags.update_o(uint8(dst - 1), dst);
--dst;
flags.update_zs(dst);
}
inline void _dec(uint16 &dst) {
flags.update_o(uint16(dst - 1), dst);
--dst;
flags.update_zs(dst);
}
inline void _and(uint8 &dst, uint8 src) {
dst &= src;
flags.update_zs(dst);