Execute in place

In x86 systems, typically the First Stage Boot Loader is an XIP program that is linked to run at the address at which the flash chip(s) are mapped at power-up and contains a minimal program to set up the system RAM (which depends on the components used on the individual boards and cannot be generalized enough so that the proper sequence could be embedded into the processor hardware) and then loads the second stage bootloader or the OS kernel into RAM.

For this reason, first stage boot loaders tend to be written in assembly language and only do the minimum to provide a normal execution environment for the next program.

Some processors either embed a small amount of SRAM in the chip itself,[1] or allow using the onboard cache memory as RAM,[2] to make this first stage boot loader easier to write using high-level language.

All these complications and the speed tradeoff mean that XIP is generally only used for first stage bootloaders or when RAM is in extremely short supply.

For example, it makes it possible to split up an executable binary file into "XIP regions", thus avoiding the restriction of fragmentation that was mentioned above.