1
0
mirror of synced 2024-09-24 03:18:22 +02:00

Fix initialized memory lookup, implement "movzx" instruction.

This commit is contained in:
Jennifer Taylor 2021-09-10 19:14:48 +00:00
parent 80c5ea6b17
commit b57310c9b5
3 changed files with 17 additions and 2 deletions

View File

@ -28,8 +28,8 @@ class Memory:
else:
# Attempt to return the default.
for virtual_start in self.defaults:
if offset >= virtual_start and offset < (virtual_start + len(self.defaults[virtual_start])):
data.append(self.defaults[virtual_start][offset - virtual_start])
if i >= virtual_start and i < (virtual_start + len(self.defaults[virtual_start])):
data.append(self.defaults[virtual_start][i - virtual_start])
break
else:
# Nothing here, return initialized RAM.
@ -225,6 +225,19 @@ class PEFile:
result = fetch(registers, memory, size, src)
assign(registers, memory, size, dest, result)
elif mnemonic == "movzx":
dest = formatter.format_operand(inst, 0)
src = formatter.format_operand(inst, 1)
vprint(f"movzx {dest}, {src}")
srcsize = get_size(src)
dstsize = get_size(dest)
if srcsize is None or dstsize is None:
raise Exception(f"Could not determine size of {mnemonic} operation!")
result = fetch(registers, memory, srcsize, src)
assign(registers, memory, dstsize, dest, result)
elif mnemonic == "add":
dest = formatter.format_operand(inst, 0)
amt = formatter.format_operand(inst, 1)

View File

@ -262,6 +262,7 @@ def main() -> None:
)
parser.add_argument(
"--verbose",
"-v",
help="Display verbose parsing info.",
action="store_true",
default=False,

View File

@ -307,6 +307,7 @@ Ih&h = Decodes an array of structures containing an unsigned integer and two sho
)
parser.add_argument(
"--verbose",
"-v",
help="Display verbose parsing info.",
action="store_true",
default=False,