, , , : Mach-O , , , . , name , , .
, , , , GCC. ,
static unsigned global_var;
unsigned inc(void)
{
return ++global_var;
}
_inc:
mflr r0 ; Save old link register
bcl 20,31,"L00000000001$pb" ; Jump
"L00000000001$pb":
mflr r10 ; Get address of jump
mtlr r0 ; Restore old link register
addis r2,r10,ha16(_global_var-"L00000000001$pb") ; Add offset to address
lwz r3,lo16(_global_var-"L00000000001$pb")(r2) ; Load global_var
addi r3,r3,1 ; Increment global_var
stw r3,lo16(_global_var-"L00000000001$pb")(r2) ; Store global_var
blr ; Return
, PowerPC, Mach-O ABI x86-64. PowerPC , , . , x86-64 .
(. GCC, -O2. -O0, .)
? ( ), :
, , , ABI. ABI - ! ABI , , . , LibSDL , libc memcpy ( ) .