Newer
Older
alicedbg / dumper / format / ne.d
/// Windows 1.x NE file dumper
///
/// Authors: dd86k <dd@dax.moe>
/// Copyright: © dd86k <dd@dax.moe>
/// License: BSD-3-Clause-Clear
module format.ne;

import adbg.disassembler;
import adbg.object.server;
import adbg.machines : AdbgMachine;
import adbg.object.format.ne;
import dumper;

extern (C):

int dump_ne(adbg_object_t *o) {
	if (selected_headers())
		dump_ne_hdr(o);
	return 0;
}

private:

void dump_ne_hdr(adbg_object_t *o) {
	print_header("Header");
	
	with (o.i.ne.header) {
	print_x16("ne_magic", ne_magic);
	print_u8("ne_ver", ne_ver);
	print_u8("ne_rev", ne_rev);
	print_x16("ne_enttab", ne_enttab);
	print_u16("ne_cbenttab", ne_cbenttab);
	print_x32("ne_crc", ne_crc);
	print_flags16("ne_flags", ne_flags,
		"SINGLEDATA".ptr, NE_HFLAG_SINGLEDATA,
		"MULTIPLEDATA".ptr, NE_HFLAG_MULTIPLEDATA,
		"LINKERERROR".ptr, NE_HFLAG_LINKERERROR,
		"LIBMODULE".ptr, NE_HFLAG_LIBMODULE,
		null);
	print_u16("ne_autodata", ne_autodata);
	print_u16("ne_heap", ne_heap);
	print_u16("ne_stack", ne_stack);
	print_x32("ne_csip", ne_csip);
	print_x32("ne_sssp", ne_sssp);
	print_u16("ne_cseg", ne_cseg);
	print_u16("ne_cmod", ne_cmod);
	print_u16("ne_cbnrestab", ne_cbnrestab);
	print_x16("ne_segtab", ne_segtab);
	print_x16("ne_rsrctab", ne_rsrctab);
	print_x16("ne_restab", ne_restab);
	print_x16("ne_modtab", ne_modtab);
	print_x16("ne_imptab", ne_imptab);
	print_x32("ne_nrestab", ne_nrestab);
	print_u16("ne_cmovent", ne_cmovent);
	print_u16("ne_align", ne_align);
	print_u16("ne_cres", ne_cres);
	print_u8("ne_exetyp", ne_exetyp, adbg_object_ne_type(ne_exetyp));
	print_x8("ne_flagsothers", ne_flagsothers);
	print_x16("ne_pretthunks", ne_pretthunks);
	print_x16("ne_psegrefbytes", ne_psegrefbytes);
	print_x16("ne_swaparea", ne_swaparea);
	print_x16("ne_expver", ne_expver);
	}
}