LinkedInTwitterFacebook

Assembly language x64: The System V ABI – part 001.

The System V Application Binary Interface named ABI defines a system interface for compiled application programs.
This System V Application Binary Interface is a set of specifications that detail calling conventions, object file formats, executable file formats, dynamic linking semantics, and much more.
The ABI defines a binary interface for application programs that are compiled for System V implementations on many different hardware architectures.
Also the System V ABI is a family of specifications composed of two basic parts:
– a generic part of the specification ( describes those parts of the interface that remain constant across all hardware implementations of System V;
– a processor-specific part ( the specification describes the parts of the specification that are specific to a particular processor architecture ).
Example:
Virtual addresses and file offsets for the 64-bit PowerPC processor family segments are congruent modulo 64
Kbytes (0x10000) or larger powers of 2. Although 4096 bytes is currently the 64-bit PowerPC page size, this
allows files to be suitable for paging even if implementations appear with larger page sizes. The value of the
p_align member of each program header in a shared object file must be 0x10000.
You need to put segments with different characteristics in separate 256 Mbyte portions of the address space, to give the operating system full paging flexibility in the 64-bit address space.
One example of an executable file (the program linked with a base address of 0x10000000):

The possible corresponding program header segments:

The memory image of virtual adress for the program above is shown here, assuming 4096 (0x1000) byte pages.

Documents about: System V ABI
TODO:Ensure whether these are the latest official links.

Share