def test_load_mem(mem): addr2 = 0x200 data = b'hello' other = BufferMemory(ARCH_X86) other.map(addr2, 0x100, 'seg2') other.segments.seg2.write(data) mem.load_memory(other) assert mem.read(mem.segments.seg2.address, len(data)) == data
def test_write_seg(mem): data = b'babafafa' other_mem = BufferMemory(ARCH_ARM) seg = other_mem.load(SEG_ADDRESS, data) mem.write_segment(seg) assert mem.read(SEG_ADDRESS, len(data)) == data
def test_alloc_after_last(): mem = BufferMemory(ARCH_ARM) mem.map(0x1000, 0x100, 'seg1') seg3 = mem.allocate(0x100, 'name') assert seg3.address == 0x2000
def test_alloc_between(): mem = BufferMemory(ARCH_ARM) mem.map(0x0, 0x100, 'seg1') mem.map(0x300, 0x100, 'seg2') mem.map(0x1400, 0x100, 'seg3') mem.map(0x4000, 0x100, 'seg4') mem.map(0x5000, 0x100, 'seg5') seg = mem.allocate(0x70, 'seg6') assert seg.address == 0x2000
def test_alloc_before_first(): mem = BufferMemory(ARCH_ARM) mem.map(0x2000, 0x1000, 'seg') seg2 = mem.allocate(0x1000, 'seg2') assert seg2.address == 0x1000
def mem(): mem = BufferMemory(ARCH_ARM) mem.load(SEG_ADDRESS, INITIAL_DATA, name=SEG_NAME) return mem
def arch_mem(arch, isa): mem = BufferMemory(arch) mem.default_isa = isa mem.load(SEG_ADDRESS, INITIAL_DATA, name=SEG_NAME) return mem
def test_from_mem(): mem = BufferMemory(ARCH_ARM) mem.map(0x1000, 0x1000, 'seg') emu = Emulator.from_memory(mem) assert emu.mem.segments.seg.address == 0x1000