- "You know, throughout the years in bussiness, I found something, which I was always ask why you do things, and the answers you inevitably get are 'oh that's just the way it's done', nobody knows why they do, nobody thinks about things very deeply in bussiness, that's what I found."
- Feeling: Impressive, attractive, passionate
- eabi: embedded
- the sizes, layout, and alignment of data types
- the calling convention, which controls how functions' arguments are passed and return values retrieved; for example, whether all parameters are passed on the stack or some are passed in registers, which registers are used for which function parameters, and whether the first function parameter passed on the stack is pushed first or last onto the stack
- how an application should make system calls to the operating system and, if the ABI specifies direct system calls rather than procedure calls to system call stubs, the system call numbers
- and in the case of a complete operating system ABI, the binary format of object files, program libraries and so on.
- hf: hard float，預設有FPU
- armeb-linux-gnueabihf-*: ARMv7 big-endian Linux GNU EABI HF
- Turing completeness：a system of data-manipulation rules can be used to simulate any single-taped .
- compiler：compile source code to native machine code(ISA, ABI)
const char *const prologue =
" pushq %rbp\n"
" movq %rsp, %rbp\n"
" pushq %r12\n" // store callee saved register
" subq $30008, %rsp\n" // allocate 30,008 B on stack, and realign
" leaq (%rsp), %rdi\n" // address of beginning of tape
" movl $0, %esi\n" // fill with 0's
" movq $30000, %rdx\n" // length 30,000 B
" call memset\n" // memset
" movq %rsp, %r12";
const char *const epilogue =
" addq $30008, %rsp\n" // clean up tape from stack.
" popq %r12\n" // restore callee saved register
" popq %rbp\n"
- X64 calling convention: