Machine code (or executable code) are binary instructions that tell processors what to do. Machine code is produced by compilers, who do all the intermediate steps between human-readable code (i.e., in C/C++) and parse and optimise the code before generating the executable code.

Executable and linkable format (.elf)

On UNIX/Linux systems, machine code (including executable files, object code, shared libraries) is stored in .elf files. It has a magic number of 0x7F 'E' 'L' 'F'. To output the hex contents of an .elf file, we can use readelf -a <FILE>.

The first segment of the .elf file after the magic number is the file header. It consists of 52 bytes (32-bit system) or 64 bytes (64-bit system), and specifies:

The segment after this is the program header, stored in 56 bytes.