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