feat: добавлено выбрасывание исключений в некоторые места

так странно написано потому что я уверен, что будут еще другие исключительные случаи и корнеркейсы, которые я забыл
This commit is contained in:
ElectronixTM
2025-03-29 22:24:30 +03:00
parent bdfdfe06da
commit 6e3216d16c

View File

@ -119,6 +119,11 @@ class VM:
"""
Make one step (only step into)
"""
if self.pc.value * 4 > len(self.mem) - 4:
raise VMException(
VMExceptionType.END_OF_MEM,
self.pc.value
)
opcode = self.mem[self.pc.value * 4]
opdesc = self._fetch_opcode_desc(opcode)
args = self._parse_arguments(opdesc)
@ -148,6 +153,11 @@ class VM:
self.continue_()
def _fetch_opcode_desc(self, opcode: int):
if not opcode in OPCODES:
raise VMException(
VMExceptionType.INVALID_OPCODE,
self.pc.value
)
return OPCODES[opcode]
def _parse_arguments(self, opdesc: OpcodeDescription) -> tuple[int, ...]: