3.1.3 The address fields of Multiboot header
All of the address fields enabled by flag bit 16 are physical addresses.
The meaning of each is as follows:
header_addr
- Contains the address corresponding to the beginning of the Multiboot
header — the physical memory location at which the magic value is
supposed to be loaded. This field serves to synchronize the
mapping between OS image offsets and physical memory addresses.
load_addr
- Contains the physical address of the beginning of the text segment. The
offset in the OS image file at which to start loading is defined by the
offset at which the header was found, minus (header_addr -
load_addr). load_addr must be less than or equal to header_addr.
load_end_addr
- Contains the physical address of the end of the data
segment. (load_end_addr - load_addr) specifies how much data to load.
This implies that the text and data segments must be consecutive in the
OS image; this is true for existing a.out executable formats.
If this field is zero, the boot loader assumes that the text and data
segments occupy the whole OS image file.
bss_end_addr
- Contains the physical address of the end of the bss segment. The boot
loader initializes this area to zero, and reserves the memory it
occupies to avoid placing boot modules and other data relevant to the
operating system in that area. If this field is zero, the boot loader
assumes that no bss segment is present.
entry_addr
- The physical address to which the boot loader should jump in order to
start running the operating system.