===========================[ amd64 ABI ]======================== Get it: https://www.uclibc.org/docs/psABI-x86_64.pdf Read sections 3.1 and 3.2; then sections 4 and 5. On page 20 of the AMD64 ABI document, find how integer and pointer arguments are passed to functions: If the class is INTEGER, the next available register of the sequence %rdi, %rsi, %rdx, %rcx, %r8 and %r9 is used. Note that this is very different from the 32-bit Linux calling convention, where arguments are pushed onto the stack and referenced off of %esp. Look at Figure 3.3 on page 16 to see the layout of an amd64 stack frame. Look at Figure 3.1 on page 12, which shows how different C types are represented. This table is very important; not understanding these representations leads to nasty surprises like integer overflows. ===========================[ i386 ABI ]======================== Get it from http://www.sco.com/developers/devspecs/abi386-4.pdf Find the calling convention description and see that it is obeyed by complied C code.