diff options
author | Vladimir Menshakov | 2011-06-13 15:22:14 +0400 |
---|---|---|
committer | Alyssa Milburn | 2011-06-15 17:34:43 +0200 |
commit | 49e7c7a7355b78a3dc4e0aae120a95dba9600bbf (patch) | |
tree | 91a5ea2803e5905a697799cfd9fa2d04a8a47fcd /devtools/tasmrecover/tasm | |
parent | f46a889e6df85a9046a7468ce7acc0c4c34bf1e4 (diff) | |
download | scummvm-rg350-49e7c7a7355b78a3dc4e0aae120a95dba9600bbf.tar.gz scummvm-rg350-49e7c7a7355b78a3dc4e0aae120a95dba9600bbf.tar.bz2 scummvm-rg350-49e7c7a7355b78a3dc4e0aae120a95dba9600bbf.zip |
DREAMWEB: fixed occasional stripping of the strings in data segment
Diffstat (limited to 'devtools/tasmrecover/tasm')
-rw-r--r-- | devtools/tasmrecover/tasm/lex.py | 2 | ||||
-rw-r--r-- | devtools/tasmrecover/tasm/parser.py | 16 |
2 files changed, 11 insertions, 7 deletions
diff --git a/devtools/tasmrecover/tasm/lex.py b/devtools/tasmrecover/tasm/lex.py index ba66611bce..cf7e6e19bf 100644 --- a/devtools/tasmrecover/tasm/lex.py +++ b/devtools/tasmrecover/tasm/lex.py @@ -41,7 +41,7 @@ def parse_args(text): break token += c - token = token.strip() + #token = token.strip() if len(token): result.append(token) #print result diff --git a/devtools/tasmrecover/tasm/parser.py b/devtools/tasmrecover/tasm/parser.py index b1d7995597..0583d851b4 100644 --- a/devtools/tasmrecover/tasm/parser.py +++ b/devtools/tasmrecover/tasm/parser.py @@ -169,15 +169,17 @@ class parser: if len(line) == 0 or line[0] == ';' or line[0] == chr(0x1a): continue - #print cmd + #print line m = re.match('(\w+)\s*?:', line) if m is not None: - line = line[len(m.group(0)):] + line = line[len(m.group(0)):].strip() if self.visible(): name = m.group(1) if self.proc is not None: self.proc.add_label(name) + print "offset %s -> %d" %(name, len(self.binary_data)) self.set_offset(name, (len(self.binary_data), self.proc, len(self.proc.stmts) if self.proc is not None else 0)) + #print line cmd = line.split() if len(cmd) == 0: @@ -198,8 +200,8 @@ class parser: continue if cmd0 == 'db' or cmd0 == 'dw' or cmd0 == 'dd': - arg = " ".join(cmd[1:]) - print "%d: %s" %(len(self.binary_data), line) #fixme: COPYPASTE + arg = line[len(cmd0):].strip() + print "%d:1: %s" %(len(self.binary_data), arg) #fixme: COPYPASTE binary_width = {'b': 1, 'w': 2, 'd': 4}[cmd0[1]] self.binary_data += self.compact_data(binary_width, lex.parse_args(arg)) continue @@ -223,10 +225,12 @@ class parser: v = cmd[2] self.set_global(cmd0, op.const(self.fix_dollar(v))) elif cmd1 == 'db' or cmd1 == 'dw' or cmd1 == 'dd': - print "%d: %s" %(len(self.binary_data), line) binary_width = {'b': 1, 'w': 2, 'd': 4}[cmd1[1]] offset = len(self.binary_data) - self.binary_data += self.compact_data(binary_width, lex.parse_args(" ".join(cmd[2:]))) + arg = line[len(cmd0):].strip() + arg = arg[len(cmd1):].strip() + print "%d: %s" %(offset, arg) + self.binary_data += self.compact_data(binary_width, lex.parse_args(arg)) self.set_global(cmd0.lower(), op.var(binary_width, offset)) continue elif cmd1 == 'proc': |