#1 Le 29/09/2011, à 15:47
- ehmicky
[x86]Instructions les plus fréquentes
Bonjour à tous,
Je me suis amusé à désassembler l'ensemble des codes exécutables (sections .plt, .text, .init et .fini des exécutables et bibliothèques partagées) de mon PC pour voir les instructions les plus courantes. Voici le résultat ! ("Présence" est le pourcentage de fichiers avec du code exécutable ayant au moins une occurence de cette instruction)
OPCODE FREQUENCE(%) FREQUENCE CUMULEE PRESENCE(%) ARCHITECTURE EXTENSION
mov 44.4870203 44.4870203 99.9664
call 8.8395074 53.3265277 99.88801
lea 6.931867 60.2583947 99.74244
push 3.6951799 63.9535746 99.944
jmp 3.564656 67.5182306 99.78723
test 3.4684624 70.986693 99.64165
add 3.3249257 74.3116187 99.77603
je 3.2710429 77.5826616 99.69764
pop 2.8175398 80.4002014 99.87681
cmp 2.730277 83.1304784 99.75363
nop 2.646571 85.7770494 97.84994
sub 2.166679 87.9437284 99.91041
jne 1.7580636 89.701792 99.76483
ret 1.2679828 90.9697748 99.92161
AUTRES 9.0289096
movzx 0.9655471 91.9353219 86.05823
xor 0.9412933 92.8766152 97.71556
fstp 0.52296 93.3995752 41.243 x87
fld 0.4740133 93.8735885 38.86898 x87
and 0.4452092 94.3187977 83.54983
xchg 0.3238556 94.6426533 91.43337
setne 0.2749146 94.9175679 57.84994
lock 0.2733012 95.1908691 19.00335
or 0.2731167 95.4639858 66.41657
shl 0.2560816 95.7200674 63.62821
jle 0.2255755 95.9456429 77.41321
sar 0.2065391 96.152182 98.15229
shr 0.1894724 96.3416544 59.02575
fxch 0.1879906 96.529645 28.44344 x87
ja 0.1870781 96.7167231 71.11982
jbe 0.185011 96.9017341 68.62262
imul 0.1678382 97.0695723 53.77379
jg 0.1560971 97.2256694 69.3617
fmul 0.1530484 97.3787178 28.86898 x87
js 0.1227581 97.5014759 62.31802
leave 0.1108236 97.6122995 99.3729
movsx 0.0990476 97.7113471 46.1926
jb 0.0771999 97.788547 98.44344
jae 0.0737431 97.8622901 97.98432
fadd 0.0722736 97.9345637 22.88913 x87
jl 0.0672313 98.001795 54.86002
fild 0.0626085 98.0644035 33.75139 x87
faddp 0.0623003 98.1267038 19.00335 x87
fst 0.0602202 98.186924 21.45576 x87
fldcw 0.0587042 98.2456282 28.79059 x87
sete 0.0582429 98.3038711 55.02799
jge 0.0577154 98.3615865 48.7458
sbb 0.0554005 98.416987 49.46248
movq 0.0524516 98.4694386 1.2206 PentiumMMX MMX
cmove 0.0518361 98.5212747 55.91265 PentiumPro
not 0.0440324 98.5653071 45.80067
jns 0.0423067 98.6076138 42.4748
inc 0.0419137 98.6495275 8.27547
fldz 0.040469 98.6899965 27.64837 x87
fucomi 0.0399206 98.7299171 18.63381 PentiumPro x87
adc 0.0364008 98.7663179 25.33034
cmovne 0.0358788 98.8021967 48.01791 PentiumPro
neg 0.0345599 98.8367566 32.56438
fsub 0.0340686 98.8708252 15.49832 x87
repz 0.0317632 98.9025884 50.30235
fucomip 0.0290736 98.931662 20.48152 PentiumPro x87
movss 0.0289449 98.9606069 0.45912 PentiumIII sse1
fistp 0.0285487 98.9891556 28.21948 x87
rep 0.0278874 99.017043 40.39193
fmulp 0.0276697 99.0447127 19.9552 x87
movsd 0.0250476 99.0697603 0.19036
dec 0.0221831 99.0919434 6.99888
paddw 0.0208409 99.1127843 0.77267 PentiumMMX MMX
fsubrp 0.0200286 99.1328129 12.68756 x87
mulss 0.0195148 99.1523277 0.15677 PentiumIII sse1
fnstcw 0.0191696 99.1714973 28.58902 x87
fld1 0.0191401 99.1906374 22.32922 x87
movaps 0.0189686 99.209606 0.6047 PentiumIII sse1
fabs 0.0184162 99.2280222 5.97984 x87
jp 0.0181317 99.2461539 13.66181
fnstsw 0.017434 99.2635879 3.94176 x87
mulsd 0.0166958 99.2802837 0.07838 PentiumIV sse2
fdiv 0.0166958 99.2969795 20.6047 x87
sahf 0.0161032 99.3130827 3.53863
addss 0.0160646 99.3291473 0.22396 PentiumIII sse1
movapd 0.0159444 99.3450917 0.15677 PentiumIV sse2
idiv 0.0155311 99.3606228 25.26315
movd 0.0147417 99.3753645 1.06382 PentiumMMX MMX
fsubr 0.014691 99.3900555 13.05711 x87
movdqa 0.0144939 99.4045494 0.34714 PentiumIV sse2
div 0.014431 99.4189804 29.28331
ud2 0.0142908 99.4332712 0.17917
fchs 0.0142883 99.4475595 12.58678 x87
seta 0.0139861 99.4615456 37.03247
addsd 0.0137883 99.4753339 0.12318 PentiumIV sse2
rol 0.0127144 99.4880483 6.8197
mul 0.0120683 99.5001166 23.30347
bswap 0.01198 99.5120966 7.64837
punpcklbw 0.0117142 99.5238108 0.95184 PentiumMMX MMX
shrd 0.011345 99.5351558 9.16013
cmovle 0.0111855 99.5463413 24.86002 PentiumPro
ror 0.0111491 99.5574904 8.80179
setb 0.0107093 99.5681997 32.55319
cmovg 0.0095658 99.5777655 21.35498 PentiumPro
psubw 0.0093898 99.5871553 0.55991 PentiumMMX MMX
fsubp 0.0093531 99.5965084 11.13101 x87
cmovns 0.0091991 99.6057075 22.81075 PentiumPro
fucom 0.0085099 99.6142174 1.53415 x87
bt 0.0082764 99.6224938 8.49944
jnp 0.0081546 99.6306484 7.72676
pxor 0.00806 99.6387084 1.04143 PentiumMMX MMX
cmovs 0.007866 99.6465744 19.77603 PentiumPro
fdivr 0.0078606 99.654435 15.05039 x87
cmovbe 0.0075793 99.6620143 20.6159 PentiumPro
fdivrp 0.0074607 99.669475 19.04815 x87
pand 0.006849 99.676324 0.85106 PentiumMMX MMX
cmovge 0.0068079 99.6831319 19.3729 PentiumPro
packuswb 0.0067867 99.6899186 0.83986 PentiumMMX MMX
addps 0.0066845 99.6966031 0.38073 PentiumIII sse1
mulps 0.0063969 99.703 0.44792 PentiumIII sse1
(bad) 0.0060406 99.7090406 0.16797
out 0.0059545 99.7149951 1.14221
setg 0.0059488 99.7209439 20.91825
shld 0.0058913 99.7268352 8.54423
mulpd 0.0057533 99.7325885 0.08958 PentiumIV sse2
psraw 0.0056543 99.7382428 0.49272 PentiumMMX MMX
por 0.0053904 99.7436332 0.79507 PentiumMMX MMX
pmullw 0.0053464 99.7489796 0.55991 PentiumMMX MMX
cmovl 0.0051366 99.7541162 15.49832 PentiumPro
fdivp 0.0049756 99.7590918 12.94512 x87
cwde 0.0046158 99.7637076 8.48824
pmulhw 0.0044946 99.7682022 0.53751 PentiumMMX MMX
cmova 0.004463 99.7726652 17.32362 PentiumPro
repnz 0.0043902 99.7770554 12.90033
paddd 0.0043408 99.7813962 0.53751 PentiumMMX MMX
in 0.0043035 99.7856997 1.16461
psubusb 0.0040048 99.7897045 0.50391 PentiumMMX MMX
paddsw 0.0037653 99.7934698 0.41433 PentiumMMX MMX
fsqrt 0.0037191 99.7971889 5.77827 x87
psllw 0.0037169 99.8009058 0.6159 PentiumMMX MMX
fcomi 0.0037143 99.8046201 1.8365 PentiumPro x87
fucomp 0.0035707 99.8081908 1.1982 x87
punpckhbw 0.0035593 99.8117501 0.75027 PentiumMMX MMX
pavgb 0.0035175 99.8152676 0.40313 PentiumIII sse1
subps 0.0035093 99.8187769 0.27995 PentiumIII sse1
fucompp 0.0034523 99.8222292 1.53415 x87
cmovae 0.0033963 99.8256255 15.80067 PentiumPro
pmaddwd 0.003384 99.8290095 0.47032 PentiumMMX MMX
psrlw 0.0031454 99.8321549 0.80627 PentiumMMX MMX
psadbw 0.00309 99.8352449 0.21276 PentiumIII sse1
cmovb 0.0029916 99.8382365 13.26987 PentiumPro
punpcklwd 0.0029394 99.8411759 0.6159 PentiumMMX MMX
shufps 0.0028977 99.8440736 0.35834 PentiumIII sse1
setbe 0.0028926 99.8469662 12.04927
addpd 0.0028366 99.8498028 0.08958 PentiumIV sse2
fcomip 0.0026401 99.8524429 1.95968 PentiumPro x87
cdq 0.0025642 99.8550071 3.50503
stos 0.0025502 99.8575573 2.74356
fcmovbe 0.0024626 99.8600199 6.03583 PentiumPro x87
setle 0.0024585 99.8624784 12.21724
psrlq 0.0024322 99.8649106 0.71668 PentiumMMX MMX
punpckhwd 0.0023636 99.8672742 0.5823 PentiumMMX MMX
movs 0.0022728 99.869547 3.95296
fist 0.0022449 99.8717919 6.18141 x87
movdqu 0.0022092 99.8740011 0.36954 PentiumIV sse2
cld 0.0021993 99.8762004 5.74468
fcmovnbe 0.0021728 99.8783732 6.13661 PentiumPro x87
shufpd 0.0021493 99.8805225 0.06718 PentiumIV sse2
bsr 0.0021164 99.8826389 11.66853
pavgusb 0.0020633 99.8847022 0.17917
xorps 0.0020611 99.8867633 0.47032 PentiumIII sse1
setl 0.0020478 99.8888111 9.18253
int3 0.0019304 99.8907415 0.34714
paddusw 0.0017984 99.8925399 0.29115 PentiumMMX MMX
setae 0.0017871 99.894327 6.33818
setnp 0.001781 99.896108 3.1131
xorpd 0.0017228 99.8978308 0.12318 PentiumIV sse2
pcmpeqb 0.0016845 99.8995153 0.38073 PentiumMMX MMX
hlt 0.0016823 99.9011976 33.53863
psllq 0.0016437 99.9028413 0.54871 PentiumMMX MMX
subss 0.0015855 99.9044268 0.14557 PentiumIII sse1
punpckldq 0.0015852 99.906012 0.45912 PentiumMMX MMX
setp 0.001544 99.907556 3.61702
psrad 0.0015051 99.9090611 0.36954 PentiumMMX MMX
paddusb 0.0014618 99.9105229 0.50391 PentiumMMX MMX
cmps 0.001452 99.9119749 0.08958
ins 0.0014377 99.9134126 0.05599
retf 0.0014254 99.914838 0.06718
palignr 0.0014159 99.9162539 0.12318 Core2 ssse3
outs 0.0014127 99.9176666 0.05599
lods 0.0013998 99.9190664 0.12318
movhps 0.0013934 99.9204598 0.19036 PentiumIII sse1
packssdw 0.0013703 99.9218301 0.42553 PentiumMMX MMX
scas 0.0013697 99.9231998 0.04479
ucomiss 0.0013425 99.9245423 0.14557 PentiumIII sse1
movsxd 0.0012814 99.9258237 0.03359
setge 0.0012726 99.9270963 8.96976
fcmovb 0.0012422 99.9283385 1.66853 PentiumPro x87
movlps 0.0012299 99.9295684 0.30235 PentiumIII sse1
cvtsi2ss 0.0012159 99.9307843 0.08958 PentiumIII sse1
ucomisd 0.0011969 99.9319812 0.11198
psubsw 0.00117 99.9331512 0.40313 PentiumMMX MMX
punpckhdq 0.0011362 99.9342874 0.36954 PentiumMMX MMX
cvttss2si 0.0011223 99.9354097 0.15677 PentiumIII sse1
emms 0.0011083 99.936518 1.36618 PentiumMMX MMX
prefetcht0 0.0010979 99.9376159 0.19036 PentiumIII sse1
prefetchnta 0.0010884 99.9387043 0.36954
subsd 0.001077 99.9397813 0.07838
pshufw 0.0010723 99.9408536 0.38073 PentiumIII sse1
int 0.0010555 99.9419091 0.49272
pshufd 0.0009666 99.9428757 0.29115 PentiumIV sse2
fxam 0.0009422 99.9438179 0.75027 x87
pushf 0.0009163 99.9447342 1.88129
pmaxsw 0.0009096 99.9456438 0.20156 PentiumIII sse1
movups 0.0008653 99.9465091 0.27995 PentiumIII sse1
pmulhuw 0.0008619 99.947371 0.25755 PentiumIII sse1
pusha 0.0008328 99.9482038 0.25755
popf 0.0008248 99.9490286 1.8701
comiss 0.0007904 99.949819 0.07838 PentiumIII sse1
popa 0.0007894 99.9506084 0.20156
std 0.0007698 99.9513782 0.20156
icebp 0.000759 99.9521372 0.03359
fwait 0.0007495 99.9528867 0.14557 x87
jo 0.0007467 99.9536334 0.10078
cmc 0.0007445 99.9543779 0.05599
sti 0.0007435 99.9551214 0.08958
enter 0.0007423 99.9558637 0.05599
aam 0.0007356 99.9565993 0.04479
psrld 0.0007337 99.957333 0.42553 PentiumMMX MMX
jno 0.0007337 99.9580667 0.04479
lahf 0.0007299 99.9587966 0.04479
iret 0.0007299 99.9595265 0.08958
clc 0.000729 99.9602555 0.06718
loop 0.0007264 99.9609819 0.10078
loopne 0.0007258 99.9617077 0.07838
jecxz 0.0007258 99.9624335 0.20156
stc 0.0007223 99.9631558 0.08958
cli 0.0007179 99.9638737 0.11198
aas 0.0007166 99.9645903 0.05599
daa 0.0007087 99.965299 0.02239
aad 0.0007078 99.9660068 0.03359
das 0.0007059 99.9667127 0.03359
arpl 0.000703 99.9674157 0.03359
loope 0.0007021 99.9681178 0.03359
into 0.0006983 99.9688161 0.04479
aaa 0.000691 99.9695071 0.02239
psrldq 0.0006894 99.9701965 0.22396 PentiumIV sse2
psubd 0.0006872 99.9708837 0.26875 PentiumMMX MMX
fimul 0.0006726 99.9715563 0.20156 x87
movupd 0.0006692 99.9722255 0.08958 PentiumIV sse2
paddb 0.0006685 99.972894 0.40313 PentiumMMX MMX
psubb 0.0006597 99.9735537 0.32474 PentiumMMX MMX
fcmovnb 0.0006204 99.9741741 1.48936 PentiumPro x87
movntq 0.0006078 99.9747819 0.45912 PentiumIII sse1
fidivr 0.0005749 99.9753568 0.19036 x87
rcr 0.0005692 99.975926 0.06718
pshuflw 0.0005499 99.9764759 0.21276 PentiumIV sse2
rcl 0.0005492 99.9770251 0.06718
lds 0.0005454 99.9775705 0.03359
fprem 0.000542 99.9781125 1.88129 x87
unpcklps 0.0005382 99.9786507 0.25755 PentiumIII sse1
les 0.0005299 99.9791806 0.04479
fcmove 0.0005024 99.979683 1.8253 PentiumPro x87
divss 0.0004923 99.9801753 0.12318 PentiumIII sse1
punpcklqdq 0.00046 99.9806353 0.14557 PentiumIV sse2
lddqu 0.0004391 99.9810744 0.10078 PentiumIV sse3
pminsw 0.0004315 99.9815059 0.21276 PentiumIII sse1
pslld 0.0004211 99.981927 0.44792 PentiumMMX MMX
pmovmskb 0.0003546 99.9822816 0.16797 PentiumIII sse1
bsf 0.0003515 99.9826331 1.03023
unpckhps 0.0003436 99.9829767 0.20156 PentiumIII sse1
pcmpgtw 0.0003385 99.9833152 0.33594 PentiumMMX MMX
pmaddubsw 0.0003309 99.9836461 0.10078 Core2 ssse3
fcom 0.0003303 99.9839764 0.07838 x87
cpuid 0.0003284 99.9843048 2.19484
cvtps2pd 0.0003186 99.9846234 0.05599 PentiumIV sse2
pandn 0.0003119 99.9849353 0.40313 PentiumMMX MMX
pfadd 0.0003113 99.9852466 0.14557
paddq 0.0003047 99.9855513 0.05599 PentiumMMX SSE2
pfmul 0.0003005 99.9858518 0.13437
fcmovne 0.0002929 99.9861447 2.21724 PentiumPro x87
divsd 0.0002809 99.9864256 0.07838 PentiumIV sse2
packsswb 0.0002749 99.9867005 0.35834 PentiumMMX MMX
pmaxub 0.0002711 99.9869716 0.23516 PentiumIII sse1
cvtpd2ps 0.0002711 99.9872427 0.04479 PentiumIV sse2
pslldq 0.0002667 99.9875094 0.21276 PentiumIV sse2
movntdq 0.0002575 99.9877669 0.20156 PentiumIV sse2
unpcklpd 0.0002566 99.9880235 0.06718 PentiumIV sse2
movhlps 0.000255 99.9882785 0.23516 PentiumIII sse1
psubusw 0.0002502 99.9885287 0.33594 PentiumMMX MMX
pminub 0.0002487 99.9887774 0.20156 PentiumIII sse1
fcomp 0.0002474 99.9890248 0.07838 x87
pmuludq 0.0002439 99.9892687 0.07838 PentiumIV sse2
cdqe 0.000243 99.9895117 0.02239
fidiv 0.0002357 99.9897474 0.13437 x87
pcmpeqw 0.0002344 99.9899818 0.31354 PentiumMMX MMX
fiadd 0.0002186 99.9902004 0.13437 x87
fcmovu 0.0002135 99.9904139 0.21276 PentiumPro x87
pabsw 0.0002104 99.9906243 0.10078 Core2 ssse3
cvtsi2sd 0.0002085 99.9908328 0.10078 PentiumIV sse2
pcmpeqd 0.0002037 99.9910365 0.30235 PentiumMMX MMX
pshufhw 0.000199 99.9912355 0.19036 PentiumIV sse2
pfsub 0.000198 99.9914335 0.12318
fisttp 0.0001885 99.991622 0.02239 PentiumIV x87
pcmpgtb 0.0001813 99.9918033 0.26875 PentiumMMX MMX
pause 0.0001809 99.9919842 0.27995 PentiumIV sse2
pshufb 0.0001794 99.9921636 0.15677 Core2 ssse3
cbw 0.0001664 99.99233 1.34378
fisub 0.0001651 99.9924951 0.15677 x87
pavgw 0.0001645 99.9926596 0.15677 PentiumIII sse1
punpckhqdq 0.0001604 99.99282 0.11198 PentiumIV sse2
paddsb 0.0001569 99.9929769 0.12318 PentiumMMX MMX
fldpi 0.0001531 99.99313 0.42553 x87
frndint 0.0001509 99.9932809 0.51511 x87
fisubr 0.0001433 99.9934242 0.06718 x87
sets 0.0001303 99.9935545 0.96304
prefetch 0.00013 99.9936845 0.19036
psubsb 0.0001294 99.9938139 0.11198 PentiumMMX MMX
femms 0.0001284 99.9939423 0.27995 x87
movlhps 0.0001262 99.9940685 0.17917 PentiumIII sse1
ficomp 0.0001252 99.9941937 0.02239 x87
cmovnp 0.0001167 99.9943104 0.10078 PentiumPro
cvttsd2si 0.0001154 99.9944258 0.06718 PentiumIV sse2
andps 0.0001151 99.9945409 0.16797 PentiumIII sse1
minss 0.0001142 99.9946551 0.10078 PentiumIII sse1
cvtps2pi 0.0001059 99.994761 0.19036 PentiumIII sse1
comisd 0.0001028 99.9948638 0.04479 PentiumIV sse2
mpsadbw 0.0001009 99.9949647 0.04479 Core2 sse4.1
ftst 0.0000958 99.9950605 0.04479 x87
fyl2x 0.0000936 99.9951541 0.44792 x87
maxss 0.0000898 99.9952439 0.12318 PentiumIII sse1
fnstenv 0.0000876 99.9953315 0.04479 x87
movlpd 0.0000873 99.9954188 0.06718 PentiumIV sse2
sfence 0.0000857 99.9955045 0.34714 PentiumIII sse1
movhpd 0.0000825 99.995587 0.07838 PentiumIV sse2
bound 0.0000775 99.9956645 0.03359
fnsave 0.0000749 99.9957394 0.05599 x87
fbstp 0.0000724 99.9958118 0.02239 x87
fscale 0.0000705 99.9958823 0.41433 x87
frstor 0.0000683 99.9959506 0.10078 x87
pswapd 0.0000664 99.996017 0.08958
rdtsc 0.0000661 99.9960831 0.6047 Pentium1
fbld 0.0000654 99.9961485 0.03359 x87
pf2id 0.0000645 99.996213 0.08958
fsincos 0.0000632 99.9962762 0.49272 x87
f2xm1 0.0000588 99.996335 0.35834 x87
movddup 0.0000566 99.9963916 0.05599 PentiumIV sse3
fpatan 0.0000553 99.9964469 0.32474 x87
movabs 0.0000541 99.996501 0.03359
ptest 0.0000537 99.9965547 0.06718 Core2 sse4.1
fcos 0.0000522 99.9966069 0.41433 x87
setns 0.0000518 99.9966587 0.6047
cmovp 0.0000509 99.9967096 0.20156 PentiumPro
andpd 0.0000496 99.9967592 0.04479
cvtpi2ps 0.0000493 99.9968085 0.12318 PentiumIII sse1
fsin 0.0000474 99.9968559 0.40313 x87
ldmxcsr 0.0000465 99.9969024 1.03023 PentiumIII sse1
bts 0.0000417 99.9969441 0.26875
orps 0.0000411 99.9969852 0.10078 PentiumIII sse1
fldln2 0.0000411 99.9970263 0.44792 x87
maxps 0.0000408 99.9970671 0.20156 PentiumIII sse1
fcmovnu 0.0000398 99.9971069 0.20156 PentiumPro x87
fldl2e 0.0000395 99.9971464 0.38073 x87
movntps 0.0000379 99.9971843 0.13437 PentiumIII sse1
pcmpgtd 0.0000376 99.9972219 0.14557 PentiumMMX MMX
stmxcsr 0.000037 99.9972589 1.01903 PentiumIII sse1
movdq2q 0.000037 99.9972959 0.06718 PentiumIV sse2
cvtsd2ss 0.000036 99.9973319 0.03359 PentiumIV sse2
psignw 0.0000351 99.997367 0.06718 Core2 ssse3
fcompp 0.0000335 99.9974005 0.05599 x87
vmwrite 0.0000329 99.9974334 0.03359 PentiumIV sse2
minps 0.0000316 99.997465 0.17917 PentiumIII sse1
subpd 0.0000313 99.9974963 0.08958
pfacc 0.0000313 99.9975276 0.05599
sqrtss 0.0000303 99.9975579 0.08958 PentiumIII sse1
pmulhrsw 0.0000275 99.9975854 0.07838 Core2 ssse3
cvtdq2ps 0.0000268 99.9976122 0.10078 PentiumIV sse2
sqrtsd 0.0000259 99.9976381 0.07838 PentiumIV sse2
cvtss2sd 0.0000256 99.9976637 0.02239 PentiumIV sse2
fxsave 0.000024 99.9976877 0.76147 PentiumPro x87
rdmsr 0.0000237 99.9977114 0.06718 Pentium1
andnps 0.0000237 99.9977351 0.13437 PentiumIII sse1
fldlg2 0.0000224 99.9977575 0.14557 x87
ffreep 0.0000224 99.9977799 0.03359 x87
pushw 0.0000215 99.9978014 0.02239
vpunpckhwd 0.0000205 99.9978219 0.03359
movsldup 0.0000202 99.9978421 0.07838 PentiumIV sse3
btr 0.0000202 99.9978623 0.25755
fldenv 0.0000199 99.9978822 0.05599 x87
cvtps2dq 0.0000199 99.9979021 0.11198 PentiumIV sse2
prefetchw 0.0000196 99.9979217 0.06718
cvttpd2dq 0.0000193 99.997941 0.03359 PentiumIV sse2
cmplepd 0.0000193 99.9979603 0.03359
vpaddw 0.0000189 99.9979792 0.02239
vpunpckhqdq 0.000018 99.9979972 0.03359
rcpss 0.000018 99.9980152 0.02239 PentiumIII sse1
pblendw 0.0000174 99.9980326 0.03359 Core2 sse4.1
pextrw 0.0000167 99.9980493 0.08958 Core2 sse4.1
fstcw 0.0000167 99.998066 0.34714 x87
pfsubr 0.0000164 99.9980824 0.05599
rcpps 0.0000151 99.9980975 0.06718 PentiumIII sse1
pcmpistri 0.0000151 99.9981126 0.03359 Core2 sse4.2
fprem1 0.0000142 99.9981268 0.10078 x87
fstsw 0.0000139 99.9981407 0.06718 x87
psubq 0.0000129 99.9981536 0.05599 PentiumMMX SSE2
pinsrw 0.0000123 99.9981659 0.08958 PentiumIII sse1
pi2fd 0.0000123 99.9981782 0.05599
rsqrtss 0.000012 99.9981902 0.03359 PentiumIII sse1
pfpnacc 0.000012 99.9982022 0.06718
lzcnt 0.0000107 99.9982129 0.04479
wrmsr 0.0000104 99.9982233 0.04479 Pentium1
vpsraw 0.0000101 99.9982334 0.02239
fyl2xp1 0.0000091 99.9982425 0.04479 x87
fptan 0.0000091 99.9982516 0.14557 x87
fnclex 0.0000091 99.9982607 0.07838 x87
divps 0.0000091 99.9982698 0.11198 PentiumIII sse1
vpunpckhbw 0.0000085 99.9982783 0.03359
vpsubusb 0.0000085 99.9982868 0.02239
movq2dq 0.0000085 99.9982953 0.05599 PentiumIV sse2
vmread 0.0000079 99.9983032 0.03359 PentiumIV sse2
sidtd 0.0000079 99.9983111 0.17917
sgdtd 0.0000075 99.9983186 0.15677
cmpless 0.0000075 99.9983261 0.02239
vpavgb 0.0000072 99.9983333 0.03359
unpckhpd 0.0000072 99.9983405 0.03359 PentiumIV sse2
seto 0.0000072 99.9983477 0.02239
minsd 0.0000069 99.9983546 0.05599 PentiumIV sse2
prefetcht2 0.0000066 99.9983612 0.06718 PentiumIII sse1
popw 0.0000066 99.9983678 0.02239
pf2iw 0.0000066 99.9983744 0.02239
cvttps2pi 0.0000066 99.998381 0.03359 PentiumIII sse1
vpunpckhdq 0.0000063 99.9983873 0.02239
fninit 0.0000063 99.9983936 0.08958 x87
cwd 0.0000063 99.9983999 0.05599
pinsrd 0.000006 99.9984059 0.03359 Core2 sse4.1
movmskps 0.000006 99.9984119 0.04479 PentiumIII sse1
retw 0.0000056 99.9984175 0.02239
lfence 0.0000056 99.9984231 0.06718 PentiumIV sse2
vshufps 0.0000053 99.9984284 0.03359
pmulhrw 0.0000053 99.9984337 0.05599
pabsb 0.0000053 99.998439 0.03359 Core2 ssse3
maxsd 0.0000053 99.9984443 0.03359 PentiumIV sse2
lgdtd 0.0000053 99.9984496 0.04479
cmpltss 0.0000053 99.9984549 0.03359
lss 0.000005 99.9984599 0.03359
cmpxchg 0.000005 99.9984649 0.05599
ltr 0.0000047 99.9984696 0.04479
cmpnleps 0.0000047 99.9984743 0.04479
btc 0.0000047 99.998479 0.04479
sqrtps 0.0000044 99.9984834 0.04479
sldt 0.0000044 99.9984878 0.05599
vpalignr 0.0000041 99.9984919 0.02239
prefetcht1 0.0000041 99.998496 0.03359 PentiumIII sse1
popaw 0.0000041 99.9985001 0.02239
pextrd 0.0000041 99.9985042 0.03359 Core2 sse4.1
fxrstor 0.0000041 99.9985083 0.05599 PentiumPro x87
finit 0.0000041 99.9985124 0.14557 x87
cvtpi2pd 0.0000041 99.9985165 0.04479 PentiumIV sse2
cmpnless 0.0000041 99.9985206 0.03359
cmpleps 0.0000041 99.9985247 0.06718
xadd 0.0000037 99.9985284 0.05599
vpblendw 0.0000037 99.9985321 0.02239
rsqrtps 0.0000037 99.9985358 0.03359 PentiumIII sse1
vpsubusw 0.0000034 99.9985392 0.03359
cvttps2dq 0.0000034 99.9985426 0.02239 PentiumIV sse2
andnpd 0.0000034 99.998546 0.03359 PentiumIV sse2
vpsrld 0.0000031 99.9985491 0.02239
fxtract 0.0000031 99.9985522 0.02239 x87
fldl2t 0.0000031 99.9985553 0.02239 x87
vpand 0.0000028 99.9985581 0.03359
pfcmpge 0.0000028 99.9985609 0.05599
orpd 0.0000028 99.9985637 0.03359 PentiumIV sse2
movmskpd 0.0000028 99.9985665 0.02239 PentiumIV sse2
maxpd 0.0000028 99.9985693 0.03359 PentiumIV sse2
cmovno 0.0000028 99.9985721 0.02239 PentiumPro
callw 0.0000028 99.9985749 0.02239
vpxor 0.0000025 99.9985774 0.02239
maskmovq 0.0000025 99.9985799 0.02239 PentiumIII sse1
vpsubw 0.0000022 99.9985821 0.02239
pinsrb 0.0000022 99.9985843 0.03359 Core2 sse4.1
cmpnltss 0.0000022 99.9985865 0.04479
cmpltps 0.0000022 99.9985887 0.02239
vpslldq 0.0000018 99.9985905 0.02239
vpmaddwd 0.0000018 99.9985923 0.02239
vmclear 0.0000018 99.9985941 0.02239 PentiumIV sse2
pushfw 0.0000018 99.9985959 0.02239
lidtd 0.0000018 99.9985977 0.03359
xlat 0.0000015 99.9985992 0.02239
vpunpcklqdq 0.0000015 99.9986007 0.03359
vpsrldq 0.0000015 99.9986022 0.02239
vpshufb 0.0000015 99.9986037 0.02239
vpcmpeqb 0.0000015 99.9986052 0.02239
vmxon 0.0000015 99.9986067 0.02239 PentiumIV sse2
vmxoff 0.0000015 99.9986082 0.02239 PentiumIV sse2
vmptrld 0.0000015 99.9986097 0.02239 PentiumIV sse2
psignd 0.0000015 99.9986112 0.02239 Core2 ssse3
packusdw 0.0000015 99.9986127 0.03359 Core2 sse4.1
maskmovdqu 0.0000015 99.9986142 0.02239 PentiumIV sse2
cmpnltsd 0.0000015 99.9986157 0.02239
cmpnlepd 0.0000015 99.9986172 0.02239
cmpeqps 0.0000015 99.9986187 0.02239
cmpeqpd 0.0000015 99.9986202 0.02239
vpunpcklwd 0.0000012 99.9986214 0.02239
vpaddsw 0.0000012 99.9986226 0.02239
vmovss 0.0000012 99.9986238 0.02239
vmovsd 0.0000012 99.998625 0.02239
retfw 0.0000012 99.9986262 0.02239
pushaw 0.0000012 99.9986274 0.02239
popfw 0.0000012 99.9986286 0.02239
lldt 0.0000012 99.9986298 0.02239
fsave 0.0000012 99.998631 0.04479 x87
fclex 0.0000012 99.9986322 0.02239 x87
cmpxchg8b 0.0000012 99.9986334 0.04479 Pentium1
vpsignd 0.0000009 99.9986343 0.02239
vpaddb 0.0000009 99.9986352 0.02239
vmsave 0.0000009 99.9986361 0.02239
vmpsadbw 0.0000009 99.998637 0.02239
vmload 0.0000009 99.9986379 0.02239
cvtss2si 0.0000009 99.9986388 0.02239 PentiumIII sse1
xgetbv 0.0000006 99.9986394 0.02239 Core2
vpsubb 0.0000006 99.99864 0.02239
vpsrlw 0.0000006 99.9986406 0.02239
vpsadbw 0.0000006 99.9986412 0.02239
vpmullw 0.0000006 99.9986418 0.02239
vpmaddubsw 0.0000006 99.9986424 0.02239
vmrun 0.0000006 99.998643 0.02239
vmlaunch 0.0000006 99.9986436 0.02239 PentiumIV sse2
stgi 0.0000006 99.9986442 0.02239
smsw 0.0000006 99.9986448 0.02239
frstorw 0.0000006 99.9986454 0.02239 x87
fldenvw 0.0000006 99.998646 0.02239 x87
clgi 0.0000006 99.9986466 0.02239
xsha256 0.0000003 99.9986469 0.01119
xrstor 0.0000003 99.9986472 0.01119 Core2
xcrypt-ecb 0.0000003 99.9986475 0.01119
xcrypt-ctr 0.0000003 99.9986478 0.01119
xcrypt-cfb 0.0000003 99.9986481 0.01119
wbinvd 0.0000003 99.9986484 0.01119
vxorps 0.0000003 99.9986487 0.01119
vxorpd 0.0000003 99.998649 0.01119
vunpcklps 0.0000003 99.9986493 0.01119
vunpckhps 0.0000003 99.9986496 0.01119
vucomisd 0.0000003 99.9986499 0.01119
vsubss 0.0000003 99.9986502 0.01119
vsqrtps 0.0000003 99.9986505 0.01119
vsqrtpd 0.0000003 99.9986508 0.01119
vshufpd 0.0000003 99.9986511 0.01119
vrsqrtss 0.0000003 99.9986514 0.01119
vrcpps 0.0000003 99.9986517 0.01119
vpunpckldq 0.0000003 99.998652 0.01119
vpsubq 0.0000003 99.9986523 0.01119
vpsrlq 0.0000003 99.9986526 0.01119
vpsllw 0.0000003 99.9986529 0.01119
vpshufhw 0.0000003 99.9986532 0.01119
vpshld 0.0000003 99.9986535 0.01119
vprotd 0.0000003 99.9986538 0.01119
vpmulhuw 0.0000003 99.9986541 0.01119
vpmadcswd 0.0000003 99.9986544 0.01119
vpextrw 0.0000003 99.9986547 0.01119
vpavgw 0.0000003 99.998655 0.01119
vpandn 0.0000003 99.9986553 0.01119
vpackuswb 0.0000003 99.9986556 0.01119
vpacksswb 0.0000003 99.9986559 0.01119
vorps 0.0000003 99.9986562 0.01119
vmulss 0.0000003 99.9986565 0.01119
vmresume 0.0000003 99.9986568 0.01119 PentiumIV sse2
vmptrst 0.0000003 99.9986571 0.01119
vmovupd 0.0000003 99.9986574 0.01119
vmovsldup 0.0000003 99.9986577 0.01119
vmovntps 0.0000003 99.998658 0.01119
vmovmskpd 0.0000003 99.9986583 0.01119
vmovlps 0.0000003 99.9986586 0.01119
vmovlpd 0.0000003 99.9986589 0.01119
vmovhlps 0.0000003 99.9986592 0.01119
vmovdqu 0.0000003 99.9986595 0.01119
vmovdqa 0.0000003 99.9986598 0.01119
vmovd 0.0000003 99.9986601 0.01119
vmovaps 0.0000003 99.9986604 0.01119
vminss 0.0000003 99.9986607 0.01119
vmaskmovdqu 0.0000003 99.998661 0.01119
vhsubpd 0.0000003 99.9986613 0.01119
vfrczpd 0.0000003 99.9986616 0.01119
vfmadd213ss 0.0000003 99.9986619 0.01119
vfmadd213sd 0.0000003 99.9986622 0.01119
verw 0.0000003 99.9986625 0.01119
verr 0.0000003 99.9986628 0.01119
vcvttsd2si 0.0000003 99.9986631 0.01119
vcvtss2sd 0.0000003 99.9986634 0.01119
vcvtsi2sd 0.0000003 99.9986637 0.01119
vcvtps2pd 0.0000003 99.998664 0.01119
vcvtpd2dq 0.0000003 99.9986643 0.01119
vcvtdq2pd 0.0000003 99.9986646 0.01119
vcmpsd 0.0000003 99.9986649 0.01119
vandps 0.0000003 99.9986652 0.01119
vandpd 0.0000003 99.9986655 0.01119
vandnps 0.0000003 99.9986658 0.01119
vandnpd 0.0000003 99.9986661 0.01119
vaddsubpd 0.0000003 99.9986664 0.01119
vaddsd 0.0000003 99.9986667 0.01119
vaddpd 0.0000003 99.998667 0.01119
ud1 0.0000003 99.9986673 0.01119
sysret 0.0000003 99.9986676 0.01119
sysexit 0.0000003 99.9986679 0.01119 PentiumII
sysenter 0.0000003 99.9986682 0.01119 PentiumII
syscall 0.0000003 99.9986685 0.01119
setno 0.0000003 99.9986688 0.01119
rsm 0.0000003 99.9986691 0.01119
rdpmc 0.0000003 99.9986694 0.01119 PentiumMMX
popcnt 0.0000003 99.9986697 0.01119 Core2
pmaxsb 0.0000003 99.99867 0.01119 Core2 sse4.1
phsubbq 0.0000003 99.9986703 0.01119
pfrsqrt 0.0000003 99.9986706 0.01119
pfrsqit1 0.0000003 99.9986709 0.01119
pfrcpit2 0.0000003 99.9986712 0.01119
pfnacc 0.0000003 99.9986715 0.01119
pcmpgtq 0.0000003 99.9986718 0.01119 Core2 sse4.2
movshdup 0.0000003 99.9986721 0.01119 PentiumIV sse3
movnti 0.0000003 99.9986724 0.01119 PentiumIV sse2
movntdqa 0.0000003 99.9986727 0.01119 Core2 sse4.1
minpd 0.0000003 99.998673 0.01119 PentiumIV sse2
mfence 0.0000003 99.9986733 0.01119 PentiumIV sse2
lsl 0.0000003 99.9986736 0.01119
lmsw 0.0000003 99.9986739 0.01119
lgs 0.0000003 99.9986742 0.01119
lfs 0.0000003 99.9986745 0.01119
leavew 0.0000003 99.9986748 0.01119
lar 0.0000003 99.9986751 0.01119
jmpw 0.0000003 99.9986754 0.01119
jcxz 0.0000003 99.9986757 0.01119
iretw 0.0000003 99.998676 0.01119
invvpid 0.0000003 99.9986763 0.01119 Core2 VMX
invlpga 0.0000003 99.9986766 0.01119
invlpg 0.0000003 99.9986769 0.01119
invept 0.0000003 99.9986772 0.01119 Core2 VMX
invd 0.0000003 99.9986775 0.01119
haddps 0.0000003 99.9986778 0.01119 PentiumIV sse3
getsec 0.0000003 99.9986781 0.01119 Core2 SMX
fstenv 0.0000003 99.9986784 0.01119 x87
frstpm 0.0000003 99.9986787 0.01119 x87
fnsetpm 0.0000003 99.998679 0.01119 x87
fnop 0.0000003 99.9986793 0.01119 x87
fneni 0.0000003 99.9986796 0.01119 x87
fndisi 0.0000003 99.9986799 0.01119 x87
fincstp 0.0000003 99.9986802 0.01119 x87
ficom 0.0000003 99.9986805 0.01119 x87
ffree 0.0000003 99.9986808 0.01119 x87
fdecstp 0.0000003 99.9986811 0.01119 x87
enterw 0.0000003 99.9986814 0.01119
cvtsd2si 0.0000003 99.9986817 0.01119 PentiumIV sse2
cmpps 0.0000003 99.998682 0.01119 PentiumIII sse1
cmpnltps 0.0000003 99.9986823 0.01119
cmpneqps 0.0000003 99.9986826 0.01119
cmpltsd 0.0000003 99.9986829 0.01119
cmplesd 0.0000003 99.9986832 0.01119
cmovo 0.0000003 99.9986835 0.01119 PentiumPro
clts 0.0000003 99.9986838 0.01119
clflush 0.0000003 99.9986841 0.01119 PentiumIV sse2
addsubps 0.0000003 99.9986844 0.01119 PentiumIV sse3
(j'ai eu la flemme de finir la colonne sur les architectures et extensions)
On voit que quasiment une instruction sur deux est un "mov", et que seulement 7 instructions sont utilisées dans 75% des cas (mov, call, lea, push, jmp, test, add). Ce qui veut dire que quand vous écrivez une ligne de code par exemple C ou C++, vous avez (en quelque sorte... ) des chances pour que la moitié des instructions compilées soient de simples "mov"
On voit aussi que la quasi-totalité des binaires sont compatibles i686, avec vraiment aucune utilisation des extensions sse et mmx. Les rares fichiers utilisant des instructions exotiques sont ou bien des codes systèmes, ou des codes obfusqués (skype ayant l'air d'être par exemple diablement obfusqué, avec des vingtaines d'opcodes non-documentés).
Bon encore une fois, c'est un test limité, car c'est particulier à mon PC, x86 32 bits, et sous Ubuntu. J'ai pas inclus le noyau également.
Dernière modification par ehmicky (Le 29/09/2011, à 15:53)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#2 Le 29/09/2011, à 16:08
- Nasman
Re : [x86]Instructions les plus fréquentes
Ce n'est pas forcément représentatif d'un "bon" code. Effectivement les mov sont les instructions les plus employées, les push, pop proviennent souvent de l'empilement des paramètres avant appel à un sous programme.
Ceci provient d'un compromis des langages de plus haut niveau qui utilisent des routines standard déjà existantes plutôt que de réécrire (souvent de façon plus succinte) quelque chose qui existe déjà.
Genre :
bla
bla
bla
push truc
push machin
push bidule
call routine existante
au lieu de
bla
bla
bla
machin
bidule
Avec
machin
bidule
qui fait la même chose que
routine existante
PC fixe sous Bionic 64 bits et portable avec Focal 64 bits
Hors ligne
#3 Le 29/09/2011, à 16:24
- Compte supprimé
Re : [x86]Instructions les plus fréquentes
bonjour ehmicky,
Cela signifie-t-il que ce n'est pas optimisé ?
Dernière modification par Compte supprimé (Le 29/09/2011, à 16:33)
#4 Le 29/09/2011, à 16:33
- Bousky
Re : [x86]Instructions les plus fréquentes
Cela signifie-t-il que ce n'est pas optimisé ?
En fait c'est un compromis entre lisibilité du code, durée d'exécution et taille de l'exécutable.
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne
#5 Le 29/09/2011, à 16:37
- ehmicky
Re : [x86]Instructions les plus fréquentes
Euh en fait effectivement la plupart des binaires et libraries sous Ubuntu sont précompilées et ne tiennent pas en compte les dernières extensions sorties, donc par exemple pas de "vector optimization".
Par contre le fait qu'il y ait plein de "mov" ne signifie pas que c'est pas optimisé. Par exemple, les entrées de frames sont typiquement compilées par gcc avec "push ebp ; mov ebp, esp ; sub esp, X" et non "enter X, 0", parce que c'est plus efficient, même si ça prend plus de place en mémoire (et comme le dit Bouksy, moins lisible au désassemblage).
Dernière modification par ehmicky (Le 29/09/2011, à 16:39)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#6 Le 29/09/2011, à 16:52
- Compte supprimé
Re : [x86]Instructions les plus fréquentes
Ok merci.
#7 Le 30/09/2011, à 09:25
- Compte supprimé
Re : [x86]Instructions les plus fréquentes
Et d'un point de vue énergétique, non optimisé pour être "lisible" génère donc de gros codes, demandant plus d'énergie pour fonctionner ? Facture d'électricité plus importante, équivalente à une autonomie réduite sur batteries sur portables ?
#8 Le 30/09/2011, à 12:19
- ehmicky
Re : [x86]Instructions les plus fréquentes
Je dirais que si c'est plus efficient, c'est que ça demande moins de cycles CPU, donc moins de consommation d'énergie.
Par exemple, sur un Intel486 :
"enter X,0" demande 14 cycles
"push ebp ; mov ebp, esp ; sub esp,X" demande 1+1+2 = 4 cycles
Après, ça partirait du principe que les cycles CPU consomment tous la même énergie, et je suis pas électronicien, si un ingénieur électronicien peut confirmer ça
Est-ce que deux instructions demandant le même nombre de cycle, mais l'une ne tenant que sur 1 octet, l'autre sur 3, demandent la même énergie ?
Dernière modification par ehmicky (Le 30/09/2011, à 12:39)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#9 Le 30/09/2011, à 12:51
- Compte supprimé
Re : [x86]Instructions les plus fréquentes
Je suis d'accord avec toi que dans l'ensemble plus il y a de cycles consommés, plus cela semble consommer.
"Nop" est peut-être l'instruction qui consomme le moins.
Ensuite je demandais l'optimisation par rapport à certain processeurs qui ont des jeux d'instructions étendues et dont l'emploi pourrait justement raccourcir le code, ou le temps puisque tu as bien souligné que trois instructions peuvent être plus économes qu'une seule instruction en cycles d'horloges (un peu comme autrefois faire un décalage de bits plutôt que de faire une multiplication ×2 sur 68k).
#10 Le 30/09/2011, à 14:15
- ehmicky
Re : [x86]Instructions les plus fréquentes
Ensuite je connais pas les processeurs RISC (si c'est ce à quoi tu fais référence)
et me relisant, je me dis qu'il faut sûrement aussi prendre en compte le parallélisme du CPU : out-of-order instructions, register renaming, etc., mais je n'y connais rien sur le sujet, mais je me souviens que d'autres membres du forum oui, donc s'ils peuvent éclairer nos lanternes sur le sujet (et corriger les bêtises que j'ai dû dire dans le post précédent... )
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#11 Le 30/09/2011, à 15:20
- Compte supprimé
Re : [x86]Instructions les plus fréquentes
Les Motorola 68k sont de vrais CISC (sauf le 68060 qui est un RISC) et justement il était plus avantageux sur des CISC de faire des décalages de bits si possible que des multiplications qui consommaient plusieurs cycles d'horloges.
(j'ai vu beaucoup de démonstration 40ko et 64kio qui affichaient 5 mn de vidéo en moyenne avec un .mod sonore en fond sur Motorola 68k, et je ne connais que Zoom3 sur PC qui arrive à la cheville et dépasse même les anciennes démonstrations grâce à la programmation en code machine x86 d'un PC en exploitant la carte graphique)