optymalizacja kodu wynikowego a biblioteki dzielone
Miłosz Rzeźnikowski
majkl w op.pl
Pon, 3 Lip 2006, 15:12:04 CEST
Dnia Sat, 1 Jul 2006 15:04:10 +0200
Paweł Sikora <pluto w agmk.net> napisał(a):
> (opcja -fPIE dla programów, lub -fPIC dla bibliotek).
>
> compute:
> call __i686.get_pc_thunk.cx [1]
> addl $_GLOBAL_OFFSET_TABLE_, %ecx [1]
> movl x w GOT(%ecx), %edx [2]
> movl y w GOTOFF(%ecx), %eax [3]
> addl (%edx), %eax [2]
> ret
>
> .local y
> .comm y,4,4
> .comm x,4,4
>
> __i686.get_pc_thunk.cx:
> movl (%esp), %ecx
> ret
>
>
> np. w przypadku x86-64 (które ma nowy tryb adresowania względem
> wskaźnika instrukcji %rip) powyższe dwa warianty kodu wyglądają tak:
> (z -fPIE)
> compute:
> movq x w GOTPCREL(%rip), %rdx
> movl y(%rip), %eax
> addl (%rdx), %eax
> ret
domyslam sie ze to relocated instruction
pointer, rzeczywiście ciekawy wynalazek.
> jak czujesz niedosyt, to ponękaj gugla: ELF + GOT, ELF + PLT
> oraz zerknij w http://www.phrack.org/show.php?p=56&a=7
dzieki wielkie :)
poczułem że jednak ass to podstawa i trzeba go ogarnąć.
Więcej informacji o liście dyskusyjnej pld-devel-pl