Lo m谩s probable es que su ABI sea incorrecta

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: , .





; , :





  1. , INTEGER .





  2. , MEMORY .





  3. , , , .





, , .





? , , , . , ; , , .





:





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!






:





  • SysV ABI





  • Microsoft ABI





  • ARM ABI





  • RISC-V ABI





  • PowerPC ABI





  • MIPS n32 ABI





  • C11






"C++ Developer. Professional". , , , .





- DEMO DAY








All Articles