diff options
author | Vladimir Menshakov | 2011-06-17 21:15:06 +0400 |
---|---|---|
committer | Vladimir Menshakov | 2011-06-17 21:15:06 +0400 |
commit | 27890ec3e2cb708fc18f46f839dc8ce9d8311b3d (patch) | |
tree | 5684bba3062a834a030a2275b147e1a43dc50a42 /devtools/tasmrecover/tasm | |
parent | 2e2676526d97db7b1bff5be2838e4479aca3ba97 (diff) | |
download | scummvm-rg350-27890ec3e2cb708fc18f46f839dc8ce9d8311b3d.tar.gz scummvm-rg350-27890ec3e2cb708fc18f46f839dc8ce9d8311b3d.tar.bz2 scummvm-rg350-27890ec3e2cb708fc18f46f839dc8ce9d8311b3d.zip |
DREAMWEB: clear cx after rep movs/stos commands
Diffstat (limited to 'devtools/tasmrecover/tasm')
-rw-r--r-- | devtools/tasmrecover/tasm/cpp.py | 16 | ||||
-rw-r--r-- | devtools/tasmrecover/tasm/op.py | 12 | ||||
-rw-r--r-- | devtools/tasmrecover/tasm/proc.py | 1 |
3 files changed, 17 insertions, 12 deletions
diff --git a/devtools/tasmrecover/tasm/cpp.py b/devtools/tasmrecover/tasm/cpp.py index 324772120e..0196e5b45c 100644 --- a/devtools/tasmrecover/tasm/cpp.py +++ b/devtools/tasmrecover/tasm/cpp.py @@ -407,17 +407,17 @@ namespace %s { def _lodsw(self): self.body += "\t_lodsw();\n" - def _stosb(self, n): - self.body += "\t_stosb(%s);\n" %("" if n == 1 else n) + def _stosb(self, n, clear_cx): + self.body += "\t_stosb(%s%s);\n" %("" if n == 1 else n, ", true" if clear_cx else "") - def _stosw(self, n): - self.body += "\t_stosw(%s);\n" %("" if n == 1 else n) + def _stosw(self, n, clear_cx): + self.body += "\t_stosw(%s%s);\n" %("" if n == 1 else n, ", true" if clear_cx else "") - def _movsb(self, n): - self.body += "\t_movsb(%s);\n" %("" if n == 1 else n) + def _movsb(self, n, clear_cx): + self.body += "\t_movsb(%s%s);\n" %("" if n == 1 else n, ", true" if clear_cx else "") - def _movsw(self, n): - self.body += "\t_movsw(%s);\n" %("" if n == 1 else n) + def _movsw(self, n, clear_cx): + self.body += "\t_movsw(%s%s);\n" %("" if n == 1 else n, ", true" if clear_cx else "") def _stc(self): self.body += "\tflags._c = true;\n " diff --git a/devtools/tasmrecover/tasm/op.py b/devtools/tasmrecover/tasm/op.py index 9baebccfc3..10fdd8a568 100644 --- a/devtools/tasmrecover/tasm/op.py +++ b/devtools/tasmrecover/tasm/op.py @@ -317,26 +317,30 @@ class _lodsw(baseop): class _stosw(baseop): def __init__(self, arg): self.repeat = 1 + self.clear_cx = False def visit(self, visitor): - visitor._stosw(self.repeat) + visitor._stosw(self.repeat, self.clear_cx) class _stosb(baseop): def __init__(self, arg): self.repeat = 1 + self.clear_cx = False def visit(self, visitor): - visitor._stosb(self.repeat) + visitor._stosb(self.repeat, self.clear_cx) class _movsw(baseop): def __init__(self, arg): self.repeat = 1 + self.clear_cx = False def visit(self, visitor): - visitor._movsw(self.repeat) + visitor._movsw(self.repeat, self.clear_cx) class _movsb(baseop): def __init__(self, arg): self.repeat = 1 + self.clear_cx = False def visit(self, visitor): - visitor._movsb(self.repeat) + visitor._movsb(self.repeat, self.clear_cx) class _in(baseop): def __init__(self, arg): diff --git a/devtools/tasmrecover/tasm/proc.py b/devtools/tasmrecover/tasm/proc.py index c304438984..c127c406f7 100644 --- a/devtools/tasmrecover/tasm/proc.py +++ b/devtools/tasmrecover/tasm/proc.py @@ -62,6 +62,7 @@ class proc: break if isinstance(stmts[i + 1], cls): stmts[i + 1].repeat = 'cx' + stmts[i + 1].clear_cx = True del stmts[i] i += 1 return |