, RIP- b. -, , , , . -, 64- , 8- (64-) , , 64- x86.
, , , . , , . . , , . , b ( ) .
32- x86 RIP, - , 32- . b (GOT), GOT. , gcc -m32 -O3 -fPIC -S test.c:
natural_generator:
call __x86.get_pc_thunk.cx
addl $_GLOBAL_OFFSET_TABLE_, %ecx
movl b.1392@GOTOFF(%ecx), %eax
leal 1(%eax), %edx
addl $2, %eax
movl %edx, b.1392@GOTOFF(%ecx)
ret
ECX. GOT GOT . ECX GOT b .
64- , gcc -m64 -O3 -S test.c:
natural_generator:
movl b.1745(%rip), %eax
leal 1(%rax), %edx
addl $2, %eax
movl %edx, b.1745(%rip)
ret
( , . , , , . , -fPIC , 64- .)
, 64- , . , (ECX). , , - . , .