diff --git a/py/coproc_manager.py b/py/coproc_manager.py new file mode 100644 index 0000000..1e59dda --- /dev/null +++ b/py/coproc_manager.py @@ -0,0 +1,17 @@ +import minielf + +class Program: + def __init__(self, filename): + self.elf = minielf.ELFFile(open(filename, "rb")) + code_header = self.elf.get_header_by_type(minielf.PT_LOAD) + self.code = bytes(self.elf.pread(code_header.p_offset, code_header.p_filesz)) + self.symtab = self.elf.get_section_by_name('.symtab') + + def get_code(self): + return + + def get_symbol(self, name): + r = self.symtab.get_first_symbol_by_name(name) + if r is None: + raise ValueError(f"{repr(name)} not found") + return r diff --git a/py/do_coproc.py b/py/do_coproc.py index e29091e..feb4eb0 100644 --- a/py/do_coproc.py +++ b/py/do_coproc.py @@ -1,26 +1,28 @@ import time import struct from coproc import * -from minidump import e, h, en +from coproc_manager import Program -def storele32(cm, off, x): - print(off, ":=", x) - cm[off:off+4] = struct.pack("