4 WORD $0 /* e_cblp UNUSED */
5 WORD $0 /* e_cp UNUSED */
6 WORD $0 /* e_crlc UNUSED */
7 WORD $0 /* e_cparhdr UNUSED */
8 WORD $0 /* e_minalloc UNUSED */
9 WORD $0 /* e_maxalloc UNUSED */
10 WORD $0 /* e_ss UNUSED */
11 WORD $0 /* e_sp UNUSED */
12 WORD $0 /* e_csum UNUSED */
13 WORD $0 /* e_ip UNUSED */
14 WORD $0 /* e_cs UNUSED */
15 WORD $0 /* e_lsarlc UNUSED */
16 WORD $0 /* e_ovno UNUSED */
18 WORD $0 /* e_res UNUSED */
24 WORD $0 /* e_oemid UNUSED */
26 WORD $0 /* e_res2 UNUSED */
37 LONG $pehdr-IMAGEBASE(SB) /* offset to pe header */
40 BYTE $'P'; BYTE $'E'; BYTE $0; BYTE $0
42 WORD $0x014C /* Machine (Intel 386) */
43 WORD $1 /* NumberOfSections */
44 LONG $0 /* TimeDateStamp UNUSED */
45 LONG $0 /* PointerToSymbolTable UNUSED */
46 LONG $0 /* NumberOfSymbols UNUSED */
47 WORD $0xE0 /* SizeOfOptionalHeader */
48 WORD $2103 /* Characteristics (no relocations, executable, 32 bit) */
50 WORD $0x10B /* Magic (PE32) */
51 BYTE $9 /* MajorLinkerVersion UNUSED */
52 BYTE $0 /* MinorLinkerVersion UNUSED */
53 LONG $0 /* SizeOfCode UNUSED */
54 LONG $0 /* SizeOfInitializedData UNUSED */
55 LONG $0 /* SizeOfUninitializedData UNUSED */
56 LONG $start-IMAGEBASE(SB)/* AddressOfEntryPoint */
57 LONG $0 /* BaseOfCode UNUSED */
58 LONG $0 /* BaseOfData UNUSED */
59 LONG $IMAGEBASE /* ImageBase */
60 LONG $0x200 /* SectionAlignment */
61 LONG $0x200 /* FileAlignment */
62 WORD $4 /* MajorOperatingSystemVersion UNUSED */
63 WORD $0 /* MinorOperatingSystemVersion UNUSED */
64 WORD $0 /* MajorImageVersion UNUSED */
65 WORD $0 /* MinorImageVersion UNUSED */
66 WORD $4 /* MajorSubsystemVersion */
67 WORD $0 /* MinorSubsystemVersion UNUSED */
68 LONG $0 /* Win32VersionValue UNUSED */
69 LONG $end-IMAGEBASE(SB) /* SizeOfImage */
70 LONG $start-IMAGEBASE(SB)/* SizeOfHeaders */
71 LONG $0 /* CheckSum UNUSED */
72 WORD $10 /* Subsystem (10 = efi application) */
73 WORD $0 /* DllCharacteristics UNUSED */
74 LONG $0 /* SizeOfStackReserve UNUSED */
75 LONG $0 /* SizeOfStackCommit UNUSED */
76 LONG $0 /* SizeOfHeapReserve UNUSED */
77 LONG $0 /* SizeOfHeapCommit UNUSED */
78 LONG $0 /* LoaderFlags UNUSED */
79 LONG $16 /* NumberOfRvaAndSizes UNUSED */
83 LONG $0; LONG $0 /* RVA */
84 LONG $0; LONG $0 /* RVA */
85 LONG $0; LONG $0 /* RVA */
86 LONG $0; LONG $0 /* RVA */
87 LONG $0; LONG $0 /* RVA */
88 LONG $0; LONG $0 /* RVA */
89 LONG $0; LONG $0 /* RVA */
90 LONG $0; LONG $0 /* RVA */
91 LONG $0; LONG $0 /* RVA */
92 LONG $0; LONG $0 /* RVA */
93 LONG $0; LONG $0 /* RVA */
94 LONG $0; LONG $0 /* RVA */
95 LONG $0; LONG $0 /* RVA */
96 LONG $0; LONG $0 /* RVA */
98 BYTE $'.'; BYTE $'t'; BYTE $'e'; BYTE $'x'
99 BYTE $'t'; BYTE $0; BYTE $0; BYTE $0
100 LONG $edata-(IMAGEBASE+0x200)(SB) /* VirtualSize */
101 LONG $start-IMAGEBASE(SB) /* VirtualAddress */
102 LONG $edata-(IMAGEBASE+0x200)(SB) /* SizeOfData */
103 LONG $start-IMAGEBASE(SB) /* PointerToRawData */
104 LONG $0 /* PointerToRelocations UNUSED */
105 LONG $0 /* PointerToLinenumbers UNUSED */
106 WORD $0 /* NumberOfRelocations UNUSED */
107 WORD $0 /* NumberOfLinenumbers UNUSED */
108 LONG $0x86000020 /* Characteristics (code, execute, read, write) */
110 /* padding to get start(SB) at IMAGEBASE+0x200 */
111 LONG $0; LONG $0; LONG $0; LONG $0;
112 LONG $0; LONG $0; LONG $0; LONG $0;
113 LONG $0; LONG $0; LONG $0; LONG $0;
114 LONG $0; LONG $0; LONG $0; LONG $0;
115 LONG $0; LONG $0; LONG $0; LONG $0;
116 LONG $0; LONG $0; LONG $0; LONG $0;
117 LONG $0; LONG $0; LONG $0; LONG $0;
118 LONG $0; LONG $0; LONG $0; LONG $0;
119 LONG $0; LONG $0; LONG $0; LONG $0;
120 LONG $0; LONG $0; LONG $0; LONG $0;
122 TEXT start(SB), 1, $0
125 TEXT reloc(SB), 1, $0
127 SUBL $reloc-IMAGEBASE(SB), SI
129 MOVL $edata-IMAGEBASE(SB), CX
132 MOVL $efimain(SB), DI
141 TEXT eficall(SB), 1, $0