Portál AbcLinuxu, 11. května 2025 09:51
dummy at 0x400738: ff 25 b2 06 10 00 68 06 00 00 dummy(): 849 dummy(): 23 dummy(): 23 dummy(): 23 dummy(): 23 dummy(): 23 dummy(): 23 dummy(): 23 dummy(): 23 dummy(): 23 dummy_ptr at 0x2aaaaabc261c: f3 c3 90 90 55 48 89 e5 53 48 dummy_ptr(): 25 dummy_ptr(): 20 dummy_ptr(): 20 dummy_ptr(): 20 dummy_ptr(): 20 dummy_ptr(): 20 dummy_ptr(): 20 dummy_ptr(): 20 dummy_ptr(): 20 dummy_ptr(): 20
dummy at 0x400738: ff 25 22 07 10 00 68 06 00 00 dummy(): 850 dummy(): 23 dummy(): 9 dummy(): 9 dummy(): 9 dummy(): 9 dummy(): 9 dummy(): 9 dummy(): 9 dummy(): 9 dummy_ptr at 0x2aaaaabc2620: f3 c3 90 90 90 90 90 90 90 90 dummy_ptr(): 24 dummy_ptr(): 9 dummy_ptr(): 9 dummy_ptr(): 9 dummy_ptr(): 9 dummy_ptr(): 9 dummy_ptr(): 9 dummy_ptr(): 9 dummy_ptr(): 9 dummy_ptr(): 9
80486d0: 0f 31 rdtsc 80486d2: 89 c3 mov %eax,%ebx 80486d4: e8 43 fe ff ff call 804851c <dummy@plt> 80486d9: 0f 31 rdtsc ... a ... 8048780: 0f 31 rdtsc 8048782: 89 c3 mov %eax,%ebx 8048784: ff d7 call *%edi 8048786: 0f 31 rdtsc..ale výsledek se mění při každém spuštění. Nejdřív je PLT překvapivě o 9 taktů rychlejší, pak zase o 2 taky pomalejší. Adresa PLT i jeho obsah je stále stejný, jediné co se mění je adresa, kam Linuks načetl dynamickou knihovnu. Asi se nějak projevuje aliasing cache, nebo nějaká podobná magie... Neoptimalizovaná verze se ale z nějakého neznámého důvodu chová stále stejně.
# run 1 dummy at 0x804851c: ff 25 78 9a 04 08 68 30 00 00 dummy(): 37 dummy_ptr at 0xb7f4d4bc: c3 90 90 90 55 89 e5 56 53 e8 dummy_ptr(): 46 # run 2 dummy at 0x804851c: ff 25 78 9a 04 08 68 30 00 00 dummy(): 37 dummy_ptr at 0xb7f044bc: c3 90 90 90 55 89 e5 56 53 e8 dummy_ptr(): 35
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.