La ABI, o Application Binary Interface, define c贸mo los binarios interact煤an entre s铆 en una plataforma en particular e incluye una convenci贸n de llamada. La mayor铆a de las ABI tienen un defecto de dise帽o que ralentiza el rendimiento.
Comencemos mirando la ABI de System V para la l铆nea de procesadores x86. La ABI clasifica los argumentos de las funciones en varias categor铆as diferentes; solo consideraremos dos:
INTEGER: , .
MEMORY: , .
; , :
, INTEGER .
, MEMORY .
, , , .
, , .
? , , , . , ; , , .
:
void foo(int*);
void bar(void);
int x = 5;
foo(&x); // , foo &x
x = 7;
bar(); // , bar x
return x; // , ;
// ( , x , , , .)
restrict
! foo
restrict
, foo (C11搂6.7.3.1p4,11). , . , restrict
C , , , ABI C .
, ABI . void foo
(struct bla
) , void foo
(const struct bla *restrict
), , .
, System V. ABI? Microsoft , :
[ ] , .
( , , ), . 芦, 禄, , , - .
ABI! ARM (, AAA arch 64):
, 16 , , , .
RISC-V:
2脳XLEN [: ?] .
[...]
, , .
PowerPC:
[] (GPR), , .
MIPS n32:
(structs), (unions), (doublewords), , , , , .
.
ABI immutable , . , , , , . , .
, ABI!
:
"C++ Developer. Professional". , , , .