xref: /inferno-os/module/loader.m (revision 46439007cf417cbd9ac8049bb4122c890097a0fa)
1#
2# External loader interface
3#
4Nilmod: module
5{
6};
7
8Loader: module
9{
10	PATH:	con	"$Loader";
11
12	Inst: adt
13	{
14		op:	byte;
15		addr:	byte;
16		src:	int;
17		mid:	int;
18		dst:	int;
19	};
20
21	Typedesc: adt
22	{
23		size:	int;
24		map:	array of byte;
25	};
26
27	Link: adt
28	{
29		name:	string;
30		sig:	int;
31		pc:	int;
32		tdesc:	int;
33	};
34
35	Niladt: adt
36	{
37	};
38
39	ifetch:		fn(mp: Nilmod): array of Inst;
40	tdesc:		fn(mp: Nilmod): array of Typedesc;
41	newmod:		fn(name: string, ss, nlink: int,
42				inst: array of Inst, data: ref Niladt): Nilmod;
43	tnew:		fn(mp: Nilmod, size: int, map: array of byte): int;
44	link:		fn(mp: Nilmod): array of Link;
45	ext:		fn(mp: Nilmod, idx, pc: int, tdesc: int): int;
46	dnew:		fn(size: int, map: array of byte): ref Niladt;
47	compile:	fn(mp: Nilmod, flag: int): int;
48};
49