diff --git a/src/dbg_main.py b/src/dbg_main.py index 0fa300c..9423c55 100644 --- a/src/dbg_main.py +++ b/src/dbg_main.py @@ -1,11 +1,29 @@ -from dpdebugger import Debugger, DbgDict +""" +Это очень грязное решение, но из-за страданий с пакетированием всех скриптов +оказалось тупо проще засунуть дебаггер сразу в эту папку и не мучить себя +""" + +from typing import cast +from dpdebugger import Debugger, DbgDict, DbgInstrDesc from argparse import ArgumentParser import json +import dbg_tui def parse_dbg(dbg_json_dict: dict) -> DbgDict: - instr = dbg_json_dict["instructions"] - print(instr) - + """ + При сериализации json всегда переводит ключи в формат строк и с этим + ничего поделать нельзя. Но для работы отладчика мне нужно, чтобы + ключами были числа, поэтому эта функция пытается привести к int + все ключи, лежащие в "instructions" + """ + instrs: dict[str | str, DbgInstrDesc] = dbg_json_dict["instructions"] + result: dict[int, DbgInstrDesc] = { + int(k) : instrs[k] for k in instrs + } + dbg_copy = dbg_json_dict.copy() + dbg_copy["instructions"] = result + dbg_copy = cast(DbgDict, dbg_copy) + return dbg_copy if __name__ == "__main__": parser = ArgumentParser( @@ -31,3 +49,9 @@ if __name__ == "__main__": mem = bytearray(f.read()) with open(args.debug_file, 'r') as f: dbg_dict: DbgDict = parse_dbg(json.load(f)) + + dbg = Debugger(mem, dbg_dict) + with open (dbg_dict["src"], 'r') as f: + src = f.read() + + dbg_tui.main(dbg, src)