The header consists of a record (tppuheader) containing several pieces of information for
recompilation. This is shown in table (A.1). The header is always stored in little-endian
format.
|
|
|
offset |
size (bytes) |
description |
|
|
|
00h |
3 |
Magic : ’PPU’ in ASCII |
03h |
3 |
PPU File format version (e.g : ’021’ in ASCII) |
06h |
2 |
Compiler version used to compile this module (major,minor) |
08h |
2 |
Code module target processor |
0Ah |
2 |
Code module target operating system |
0Ch |
4 |
Flags for PPU file |
10h |
4 |
Size of PPU file (without header) |
14h |
4 |
CRC-32 of the entire PPU file |
18h |
4 |
CRC-32 of partial data of PPU file (public data mostly) |
1Ch |
8 |
Reserved |
|
|
|
|
|
The header is already read by the ppufile.openfile command. You can access all fields using
ppufile.header which holds the current header record.
Table A.2: |
PPU CPU Field values |
|
|
value |
description |
|
|
0 |
unknown |
1 |
Intel 80x86 or compatible |
2 |
Motorola 680x0 or compatible |
3 |
Alpha AXP or compatible |
4 |
PowerPC or compatible |
|
|
|
|
Some of the possible flags in the header are described in table (A.3). Not all the flags are described,
for more information, read the source code of ppu.pas.
Table A.3: |
PPU Header Flag values |
|
|
Symbolic bit flag name |
Description |
|
|
uf_init |
Module has an initialization (either Delphi or TP style) section. |
uf_finalize |
Module has a finalization section. |
uf_big_endian |
All the data stored in the chunks is in big-endian format. |
uf_has_browser |
Unit contains symbol browser information. |
uf_smart_linked |
The code module has been smartlinked. |
uf_static_linked |
The code is statically linked. |
uf_has_resources |
Unit has resource section. |
|
|
|
|