Fix initialized memory lookup, implement "movzx" instruction.
This commit is contained in:
parent
80c5ea6b17
commit
b57310c9b5
@ -28,8 +28,8 @@ class Memory:
|
|||||||
else:
|
else:
|
||||||
# Attempt to return the default.
|
# Attempt to return the default.
|
||||||
for virtual_start in self.defaults:
|
for virtual_start in self.defaults:
|
||||||
if offset >= virtual_start and offset < (virtual_start + len(self.defaults[virtual_start])):
|
if i >= virtual_start and i < (virtual_start + len(self.defaults[virtual_start])):
|
||||||
data.append(self.defaults[virtual_start][offset - virtual_start])
|
data.append(self.defaults[virtual_start][i - virtual_start])
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
# Nothing here, return initialized RAM.
|
# Nothing here, return initialized RAM.
|
||||||
@ -225,6 +225,19 @@ class PEFile:
|
|||||||
result = fetch(registers, memory, size, src)
|
result = fetch(registers, memory, size, src)
|
||||||
assign(registers, memory, size, dest, result)
|
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":
|
elif mnemonic == "add":
|
||||||
dest = formatter.format_operand(inst, 0)
|
dest = formatter.format_operand(inst, 0)
|
||||||
amt = formatter.format_operand(inst, 1)
|
amt = formatter.format_operand(inst, 1)
|
||||||
|
@ -262,6 +262,7 @@ def main() -> None:
|
|||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--verbose",
|
"--verbose",
|
||||||
|
"-v",
|
||||||
help="Display verbose parsing info.",
|
help="Display verbose parsing info.",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
default=False,
|
default=False,
|
||||||
|
@ -307,6 +307,7 @@ Ih&h = Decodes an array of structures containing an unsigned integer and two sho
|
|||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--verbose",
|
"--verbose",
|
||||||
|
"-v",
|
||||||
help="Display verbose parsing info.",
|
help="Display verbose parsing info.",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
default=False,
|
default=False,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user