Fix initialized memory lookup, implement "movzx" instruction.
This commit is contained in:
parent
80c5ea6b17
commit
b57310c9b5
@ -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)
|
||||
|
@ -262,6 +262,7 @@ def main() -> None:
|
||||
)
|
||||
parser.add_argument(
|
||||
"--verbose",
|
||||
"-v",
|
||||
help="Display verbose parsing info.",
|
||||
action="store_true",
|
||||
default=False,
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user