独習アセンブラ 新版 (2021) 翔泳社 pp.273-275 で/usr/bin内の実行ファイルにおける機械語の命令の出現回数を数える方法が紹介されていたので、自分の環境(Docker ubuntu:24.04)でも試してみた。
cutがうまくいかなかったので、grepで作り直した。
#!/bin/sh
for i in /usr/bin/*
do
file $i | grep ELF >/dev/null && objdump -d $i -M intel
done |
grep -oP '^\s*[0-9A-Fa-f]+:\s+(?:[0-9A-Fa-f]{2}\s+)*\K[a-zA-Z][a-zA-Z0-9_]*' |
sort | uniq -c |
sort -rn#!/usr/bin/env python3
import sys
def main():
entries = []
for line in sys.stdin:
parts = line.strip().split()
entries.append((int(parts[0]), parts[1]))
total = sum(c for c, _ in entries)
print('Rank | Percentile | Mnemonic')
for rank, (count, mnemonic) in enumerate(entries, start=1):
pct = count / total * 100
print(f'{rank} | {pct:.2f} | {mnemonic}')
if __name__ == '__main__':
main()| Rank | Pct | CumPct | Mnemonic |
|---|---|---|---|
| 1 | 35.131 | 35.131 | mov |
| 2 | 7.408 | 42.539 | call |
| 3 | 6.050 | 48.588 | cmp |
| 4 | 5.268 | 53.856 | je |
| 5 | 5.194 | 59.050 | test |
| 6 | 5.009 | 64.060 | jmp |
| 7 | 4.110 | 68.169 | lea |
| 8 | 3.963 | 72.132 | jne |
| 9 | 3.355 | 75.487 | pop |
| 10 | 3.265 | 78.752 | xor |
| 11 | 3.174 | 81.926 | push |
| 12 | 2.061 | 83.987 | add |
| 13 | 1.976 | 85.963 | nop |
| 14 | 1.642 | 87.605 | movzx |
| 15 | 1.537 | 89.142 | sub |
| 16 | 1.186 | 90.328 | endbr64 |
| 17 | 0.922 | 91.250 | ret |
| 18 | 0.811 | 92.061 | and |
| 19 | 0.473 | 92.533 | or |
| 20 | 0.408 | 92.941 | movsxd |
| 21 | 0.379 | 93.320 | xchg |
| 22 | 0.376 | 93.696 | movaps |
| 23 | 0.369 | 94.065 | shl |
| 24 | 0.361 | 94.426 | ja |
| 25 | 0.349 | 94.775 | jae |
| 26 | 0.310 | 95.085 | movq |
| 27 | 0.302 | 95.387 | movups |
| 28 | 0.279 | 95.666 | jg |
| 29 | 0.265 | 95.931 | jbe |
| 30 | 0.247 | 96.178 | jb |
| 31 | 0.227 | 96.406 | shr |
| 32 | 0.223 | 96.629 | jle |
| 33 | 0.200 | 96.828 | ff |
| 34 | 0.163 | 96.991 | cs |
| 35 | 0.160 | 97.151 | sete |
| 36 | 0.142 | 97.293 | js |
| 37 | 0.140 | 97.433 | movabs |
| 38 | 0.133 | 97.566 | data16 |
| 39 | 0.124 | 97.690 | movdqa |
| 40 | 0.119 | 97.810 | imul |
| 41 | 0.111 | 97.920 | cmove |
| 42 | 0.106 | 98.026 | punpcklqdq |
| 43 | 0.101 | 98.127 | not |
| 44 | 0.101 | 98.229 | setne |
| 45 | 0.094 | 98.322 | sar |
| 46 | 0.089 | 98.411 | movsx |
| 47 | 0.082 | 98.493 | inc |
| 48 | 0.080 | 98.573 | movdqu |
| 49 | 0.077 | 98.650 | bt |
| 50 | 0.072 | 98.722 | pxor |
| 51 | 0.068 | 98.790 | cdqe |
| 52 | 0.067 | 98.857 | jns |
| 53 | 0.066 | 98.923 | sbb |
| 54 | 0.065 | 98.988 | cmovne |
| 55 | 0.063 | 99.051 | notrack |
| 56 | 0.061 | 99.111 | leave |
| 57 | 0.055 | 99.166 | jge |
| 58 | 0.051 | 99.217 | dec |
| 59 | 0.043 | 99.260 | jl |
| 60 | 0.037 | 99.298 | neg |
| 61 | 0.037 | 99.335 | rep |
| 62 | 0.031 | 99.366 | cmovb |
| 63 | 0.029 | 99.395 | movhps |
| 64 | 0.029 | 99.423 | movsd |
| 65 | 0.028 | 99.451 | movd |
| 66 | 0.023 | 99.474 | cmovae |
| 67 | 0.021 | 99.495 | div |
| 68 | 0.020 | 99.515 | rol |
| 69 | 0.019 | 99.534 | cmova |
| 70 | 0.015 | 99.550 | ud2 |
| 71 | 0.015 | 99.564 | setb |
| 72 | 0.014 | 99.578 | idiv |
| 73 | 0.014 | 99.592 | cmovbe |
| 74 | 0.013 | 99.605 | ror |
| 75 | 0.013 | 99.618 | setg |
| 76 | 0.011 | 99.629 | punpckldq |
| 77 | 0.010 | 99.639 | setbe |
| 78 | 0.010 | 99.649 | cvtsi2sd |
| 79 | 0.009 | 99.658 | cb |
| 80 | 0.009 | 99.667 | mul |
| 81 | 0.009 | 99.676 | cmovg |
| 82 | 0.009 | 99.685 | jo |
| 83 | 0.009 | 99.693 | lock |
| 84 | 0.008 | 99.701 | cmovle |
| 85 | 0.008 | 99.709 | comisd |
| 86 | 0.008 | 99.717 | xorps |
| 87 | 0.007 | 99.724 | bswap |
| 88 | 0.007 | 99.732 | cdq |
| 89 | 0.007 | 99.739 | cmovs |
| 90 | 0.007 | 99.745 | movss |
| 91 | 0.007 | 99.752 | cqo |
| 92 | 0.007 | 99.759 | cmovl |
| 93 | 0.006 | 99.765 | adc |
| 94 | 0.006 | 99.771 | setl |
| 95 | 0.005 | 99.777 | shufpd |
| 96 | 0.005 | 99.782 | cmovge |
| 97 | 0.005 | 99.787 | comiss |
| 98 | 0.005 | 99.792 | fstp |
| 99 | 0.005 | 99.797 | addsd |
| 100 | 0.005 | 99.802 | c0 |
| 101 | 0.005 | 99.807 | cc |
| 102 | 0.005 | 99.812 | bts |
| 103 | 0.005 | 99.816 | cmovns |
| 104 | 0.004 | 99.821 | pshufd |
| 105 | 0.004 | 99.825 | setae |
| 106 | 0.004 | 99.829 | cvtsi2ss |
| 107 | 0.004 | 99.834 | cvttsd2si |
| 108 | 0.004 | 99.838 | c2 |
| 109 | 0.004 | 99.842 | movapd |
| 110 | 0.004 | 99.846 | punpcklwd |
| 111 | 0.004 | 99.850 | seta |
| 112 | 0.004 | 99.854 | pand |
| 113 | 0.004 | 99.858 | fld |
| 114 | 0.004 | 99.861 | ucomisd |
| 115 | 0.004 | 99.865 | tzcnt |
| 116 | 0.004 | 99.869 | aa |
| 117 | 0.003 | 99.872 | por |
| 118 | 0.003 | 99.876 | mulsd |
| 119 | 0.003 | 99.879 | c1 |
| 120 | 0.003 | 99.882 | paddq |
| 121 | 0.003 | 99.885 | paddd |
| 122 | 0.003 | 99.888 | movhlps |
| 123 | 0.003 | 99.891 | setle |
| 124 | 0.003 | 99.894 | bsr |
| 125 | 0.003 | 99.897 | divsd |
| 126 | 0.003 | 99.900 | mulss |
| 127 | 0.003 | 99.903 | f0 |
| 128 | 0.003 | 99.906 | hlt |
| 129 | 0.003 | 99.908 | punpckhwd |
| 130 | 0.002 | 99.911 | f8 |
| 131 | 0.002 | 99.913 | e0 |
| 132 | 0.002 | 99.915 | seto |
| 133 | 0.002 | 99.918 | jp |
| 134 | 0.002 | 99.920 | addss |
| 135 | 0.002 | 99.922 | subsd |
| 136 | 0.002 | 99.924 | c3 |
| 137 | 0.002 | 99.926 | btc |
| 138 | 0.002 | 99.928 | pcmpeqd |
| 139 | 0.002 | 99.930 | jno |
| 140 | 0.002 | 99.932 | setge |
| 141 | 0.002 | 99.934 | psrldq |
| 142 | 0.002 | 99.936 | e8 |
| 143 | 0.002 | 99.937 | cvttss2si |
| 144 | 0.002 | 99.939 | fxch |
| 145 | 0.001 | 99.941 | movs |
| 146 | 0.001 | 99.942 | andpd |
| 147 | 0.001 | 99.943 | a3 |
| 148 | 0.001 | 99.945 | cvtss2sd |
| 149 | 0.001 | 99.946 | bsf |
| 150 | 0.001 | 99.947 | btr |
| 151 | 0.001 | 99.948 | fldcw |
| 152 | 0.001 | 99.950 | cpuid |
| 153 | 0.001 | 99.951 | bd |
| 154 | 0.001 | 99.952 | fe |
| 155 | 0.001 | 99.953 | divss |
| 156 | 0.001 | 99.954 | c8 |
| 157 | 0.001 | 99.955 | subss |
| 158 | 0.001 | 99.956 | pandn |
| 159 | 0.001 | 99.957 | pcmpgtd |
| 160 | 0.001 | 99.958 | bc |
| 161 | 0.001 | 99.959 | fild |
| 162 | 0.001 | 99.960 | shufps |
| 163 | 0.001 | 99.961 | incsspq |
| 164 | 0.001 | 99.961 | f7 |
| 165 | 0.001 | 99.962 | c4 |
| 166 | 0.001 | 99.963 | setp |
| 167 | 0.001 | 99.964 | fc |
| 168 | 0.001 | 99.964 | d1 |
| 169 | 0.001 | 99.965 | b8 |
| 170 | 0.001 | 99.966 | psubd |
| 171 | 0.001 | 99.967 | fd |
| 172 | 0.001 | 99.967 | e3 |
| 173 | 0.001 | 99.968 | af |
| 174 | 0.001 | 99.969 | b4 |
| 175 | 0.001 | 99.969 | packuswb |
| 176 | 0.001 | 99.970 | orpd |
| 177 | 0.001 | 99.971 | andnpd |
| 178 | 0.001 | 99.971 | ca |
| 179 | 0.001 | 99.972 | pmuludq |
| 180 | 0.001 | 99.972 | fistp |
| 181 | 0.001 | 99.973 | cmpnlesd |
| 182 | 0.001 | 99.973 | a4 |
| 183 | 0.001 | 99.974 | psubq |
| 184 | 0.001 | 99.974 | fadd |
| 185 | 0.000 | 99.975 | movlpd |
| 186 | 0.000 | 99.975 | fnstcw |
| 187 | 0.000 | 99.976 | punpckhqdq |
| 188 | 0.000 | 99.976 | fcomip |
| 189 | 0.000 | 99.977 | fb |
| 190 | 0.000 | 99.977 | df |
| 191 | 0.000 | 99.978 | a0 |
| 192 | 0.000 | 99.978 | psrlq |
| 193 | 0.000 | 99.979 | xorpd |
| 194 | 0.000 | 99.979 | pslld |
| 195 | 0.000 | 99.980 | ba |
| 196 | 0.000 | 99.980 | fldz |
| 197 | 0.000 | 99.980 | fmul |
| 198 | 0.000 | 99.981 | punpcklbw |
| 199 | 0.000 | 99.981 | punpckhdq |
| 200 | 0.000 | 99.982 | cd |
| 201 | 0.000 | 99.982 | f3 |
| 202 | 0.000 | 99.982 | rdsspq |
| 203 | 0.000 | 99.983 | ef |
| 204 | 0.000 | 99.983 | c7 |
| 205 | 0.000 | 99.983 | bf |
| 206 | 0.000 | 99.984 | shrd |
| 207 | 0.000 | 99.984 | fcomi |
| 208 | 0.000 | 99.984 | psrld |
| 209 | 0.000 | 99.985 | de |
| 210 | 0.000 | 99.985 | f5 |
| 211 | 0.000 | 99.985 | d8 |
| 212 | 0.000 | 99.986 | pextrw |
| 213 | 0.000 | 99.986 | a8 |
| 214 | 0.000 | 99.986 | rdseed |
| 215 | 0.000 | 99.987 | psllq |
| 216 | 0.000 | 99.987 | fucomip |
| 217 | 0.000 | 99.987 | cvtsd2ss |
| 218 | 0.000 | 99.987 | orps |
| 219 | 0.000 | 99.988 | cf |
| 220 | 0.000 | 99.988 | vmovdqa |
| 221 | 0.000 | 99.988 | punpckhbw |
| 222 | 0.000 | 99.988 | pshuflw |
| 223 | 0.000 | 99.989 | fmulp |
| 224 | 0.000 | 99.989 | b3 |
| 225 | 0.000 | 99.989 | psrad |
| 226 | 0.000 | 99.989 | fdivp |
| 227 | 0.000 | 99.989 | e7 |
| 228 | 0.000 | 99.990 | e6 |
| 229 | 0.000 | 99.990 | e4 |
| 230 | 0.000 | 99.990 | sha1rnds4 |
| 231 | 0.000 | 99.990 | sha1nexte |
| 232 | 0.000 | 99.990 | d4 |
| 233 | 0.000 | 99.991 | d0 |
| 234 | 0.000 | 99.991 | fsubr |
| 235 | 0.000 | 99.991 | b2 |
| 236 | 0.000 | 99.991 | vpxor |
| 237 | 0.000 | 99.991 | f4 |
| 238 | 0.000 | 99.992 | bb |
| 239 | 0.000 | 99.992 | ea |
| 240 | 0.000 | 99.992 | b9 |
| 241 | 0.000 | 99.992 | vpshufb |
| 242 | 0.000 | 99.992 | sha1msg2 |
| 243 | 0.000 | 99.992 | sha1msg1 |
| 244 | 0.000 | 99.993 | f9 |
| 245 | 0.000 | 99.993 | andps |
| 246 | 0.000 | 99.993 | ae |
| 247 | 0.000 | 99.993 | paddw |
| 248 | 0.000 | 99.993 | f1 |
| 249 | 0.000 | 99.993 | e1 |
| 250 | 0.000 | 99.993 | cwde |
| 251 | 0.000 | 99.994 | c9 |
| 252 | 0.000 | 99.994 | a5 |
| 253 | 0.000 | 99.994 | setnp |
| 254 | 0.000 | 99.994 | pause |
| 255 | 0.000 | 99.994 | fprem |
| 256 | 0.000 | 99.994 | fnstsw |
| 257 | 0.000 | 99.994 | d3 |
| 258 | 0.000 | 99.995 | b6 |
| 259 | 0.000 | 99.995 | a9 |
| 260 | 0.000 | 99.995 | ucomiss |
| 261 | 0.000 | 99.995 | f6 |
| 262 | 0.000 | 99.995 | a6 |
| 263 | 0.000 | 99.995 | a2 |
| 264 | 0.000 | 99.995 | pcmpgtw |
| 265 | 0.000 | 99.995 | f2 |
| 266 | 0.000 | 99.996 | ab |
| 267 | 0.000 | 99.996 | shld |
| 268 | 0.000 | 99.996 | jnp |
| 269 | 0.000 | 99.996 | faddp |
| 270 | 0.000 | 99.996 | c5 |
| 271 | 0.000 | 99.996 | psubw |
| 272 | 0.000 | 99.996 | fa |
| 273 | 0.000 | 99.996 | c6 |
| 274 | 0.000 | 99.996 | ac |
| 275 | 0.000 | 99.997 | a7 |
| 276 | 0.000 | 99.997 | pinsrw |
| 277 | 0.000 | 99.997 | fchs |
| 278 | 0.000 | 99.997 | e9 |
| 279 | 0.000 | 99.997 | b1 |
| 280 | 0.000 | 99.997 | a1 |
| 281 | 0.000 | 99.997 | vpextrw |
| 282 | 0.000 | 99.997 | psrlw |
| 283 | 0.000 | 99.997 | pcmpestri |
| 284 | 0.000 | 99.997 | pcmpeqb |
| 285 | 0.000 | 99.997 | fucomi |
| 286 | 0.000 | 99.997 | fsub |
| 287 | 0.000 | 99.998 | fld1 |
| 288 | 0.000 | 99.998 | fdiv |
| 289 | 0.000 | 99.998 | db |
| 290 | 0.000 | 99.998 | d9 |
| 291 | 0.000 | 99.998 | d7 |
| 292 | 0.000 | 99.998 | rdrand |
| 293 | 0.000 | 99.998 | fdivrp |
| 294 | 0.000 | 99.998 | eb |
| 295 | 0.000 | 99.998 | e2 |
| 296 | 0.000 | 99.998 | b0 |
| 297 | 0.000 | 99.998 | prefetcht0 |
| 298 | 0.000 | 99.998 | prefetchnta |
| 299 | 0.000 | 99.998 | pcmpeqw |
| 300 | 0.000 | 99.998 | minsd |
| 301 | 0.000 | 99.999 | ee |
| 302 | 0.000 | 99.999 | ed |
| 303 | 0.000 | 99.999 | e5 |
| 304 | 0.000 | 99.999 | ce |
| 305 | 0.000 | 99.999 | vpclmullqlqdq |
| 306 | 0.000 | 99.999 | vpclmulhqhqdq |
| 307 | 0.000 | 99.999 | unpcklpd |
| 308 | 0.000 | 99.999 | pcmpgtb |
| 309 | 0.000 | 99.999 | maxsd |
| 310 | 0.000 | 99.999 | dc |
| 311 | 0.000 | 99.999 | be |
| 312 | 0.000 | 99.999 | b5 |
| 313 | 0.000 | 99.999 | xgetbv |
| 314 | 0.000 | 99.999 | sqrtsd |
| 315 | 0.000 | 99.999 | pshufb |
| 316 | 0.000 | 99.999 | fcmovbe |
| 317 | 0.000 | 99.999 | ec |
| 318 | 0.000 | 99.999 | dd |
| 319 | 0.000 | 99.999 | da |
| 320 | 0.000 | 99.999 | d2 |
| 321 | 0.000 | 99.999 | ad |
| 322 | 0.000 | 99.999 | vzeroupper |
| 323 | 0.000 | 100.000 | mulpd |
| 324 | 0.000 | 100.000 | fsubrp |
| 325 | 0.000 | 100.000 | cmpltsd |
| 326 | 0.000 | 100.000 | b7 |
| 327 | 0.000 | 100.000 | vpsubb |
| 328 | 0.000 | 100.000 | vpsadbw |
| 329 | 0.000 | 100.000 | vpinsrd |
| 330 | 0.000 | 100.000 | vpcmpeqb |
| 331 | 0.000 | 100.000 | vmovdqu |
| 332 | 0.000 | 100.000 | vextracti128 |
| 333 | 0.000 | 100.000 | unpckhpd |
| 334 | 0.000 | 100.000 | sets |
| 335 | 0.000 | 100.000 | psubusw |
| 336 | 0.000 | 100.000 | paddb |
| 337 | 0.000 | 100.000 | movupd |
| 338 | 0.000 | 100.000 | movmskpd |
| 339 | 0.000 | 100.000 | maxss |
| 340 | 0.000 | 100.000 | d5 |
| 341 | 0.000 | 100.000 | subpd |
| 342 | 0.000 | 100.000 | pmovmskb |
| 343 | 0.000 | 100.000 | pinsrd |
| 344 | 0.000 | 100.000 | pextrd |
| 345 | 0.000 | 100.000 | minss |
| 346 | 0.000 | 100.000 | in |
| 347 | 0.000 | 100.000 | cvttpd2dq |
| 348 | 0.000 | 100.000 | cmpltss |
| 349 | 0.000 | 100.000 | cbw |
| 350 | 0.000 | 100.000 | andnps |
| 351 | 0.000 | 100.000 | addpd |