独習アセンブラ 新版 (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()
RankPctCumPctMnemonic
135.13135.131mov
27.40842.539call
36.05048.588cmp
45.26853.856je
55.19459.050test
65.00964.060jmp
74.11068.169lea
83.96372.132jne
93.35575.487pop
103.26578.752xor
113.17481.926push
122.06183.987add
131.97685.963nop
141.64287.605movzx
151.53789.142sub
161.18690.328endbr64
170.92291.250ret
180.81192.061and
190.47392.533or
200.40892.941movsxd
210.37993.320xchg
220.37693.696movaps
230.36994.065shl
240.36194.426ja
250.34994.775jae
260.31095.085movq
270.30295.387movups
280.27995.666jg
290.26595.931jbe
300.24796.178jb
310.22796.406shr
320.22396.629jle
330.20096.828ff
340.16396.991cs
350.16097.151sete
360.14297.293js
370.14097.433movabs
380.13397.566data16
390.12497.690movdqa
400.11997.810imul
410.11197.920cmove
420.10698.026punpcklqdq
430.10198.127not
440.10198.229setne
450.09498.322sar
460.08998.411movsx
470.08298.493inc
480.08098.573movdqu
490.07798.650bt
500.07298.722pxor
510.06898.790cdqe
520.06798.857jns
530.06698.923sbb
540.06598.988cmovne
550.06399.051notrack
560.06199.111leave
570.05599.166jge
580.05199.217dec
590.04399.260jl
600.03799.298neg
610.03799.335rep
620.03199.366cmovb
630.02999.395movhps
640.02999.423movsd
650.02899.451movd
660.02399.474cmovae
670.02199.495div
680.02099.515rol
690.01999.534cmova
700.01599.550ud2
710.01599.564setb
720.01499.578idiv
730.01499.592cmovbe
740.01399.605ror
750.01399.618setg
760.01199.629punpckldq
770.01099.639setbe
780.01099.649cvtsi2sd
790.00999.658cb
800.00999.667mul
810.00999.676cmovg
820.00999.685jo
830.00999.693lock
840.00899.701cmovle
850.00899.709comisd
860.00899.717xorps
870.00799.724bswap
880.00799.732cdq
890.00799.739cmovs
900.00799.745movss
910.00799.752cqo
920.00799.759cmovl
930.00699.765adc
940.00699.771setl
950.00599.777shufpd
960.00599.782cmovge
970.00599.787comiss
980.00599.792fstp
990.00599.797addsd
1000.00599.802c0
1010.00599.807cc
1020.00599.812bts
1030.00599.816cmovns
1040.00499.821pshufd
1050.00499.825setae
1060.00499.829cvtsi2ss
1070.00499.834cvttsd2si
1080.00499.838c2
1090.00499.842movapd
1100.00499.846punpcklwd
1110.00499.850seta
1120.00499.854pand
1130.00499.858fld
1140.00499.861ucomisd
1150.00499.865tzcnt
1160.00499.869aa
1170.00399.872por
1180.00399.876mulsd
1190.00399.879c1
1200.00399.882paddq
1210.00399.885paddd
1220.00399.888movhlps
1230.00399.891setle
1240.00399.894bsr
1250.00399.897divsd
1260.00399.900mulss
1270.00399.903f0
1280.00399.906hlt
1290.00399.908punpckhwd
1300.00299.911f8
1310.00299.913e0
1320.00299.915seto
1330.00299.918jp
1340.00299.920addss
1350.00299.922subsd
1360.00299.924c3
1370.00299.926btc
1380.00299.928pcmpeqd
1390.00299.930jno
1400.00299.932setge
1410.00299.934psrldq
1420.00299.936e8
1430.00299.937cvttss2si
1440.00299.939fxch
1450.00199.941movs
1460.00199.942andpd
1470.00199.943a3
1480.00199.945cvtss2sd
1490.00199.946bsf
1500.00199.947btr
1510.00199.948fldcw
1520.00199.950cpuid
1530.00199.951bd
1540.00199.952fe
1550.00199.953divss
1560.00199.954c8
1570.00199.955subss
1580.00199.956pandn
1590.00199.957pcmpgtd
1600.00199.958bc
1610.00199.959fild
1620.00199.960shufps
1630.00199.961incsspq
1640.00199.961f7
1650.00199.962c4
1660.00199.963setp
1670.00199.964fc
1680.00199.964d1
1690.00199.965b8
1700.00199.966psubd
1710.00199.967fd
1720.00199.967e3
1730.00199.968af
1740.00199.969b4
1750.00199.969packuswb
1760.00199.970orpd
1770.00199.971andnpd
1780.00199.971ca
1790.00199.972pmuludq
1800.00199.972fistp
1810.00199.973cmpnlesd
1820.00199.973a4
1830.00199.974psubq
1840.00199.974fadd
1850.00099.975movlpd
1860.00099.975fnstcw
1870.00099.976punpckhqdq
1880.00099.976fcomip
1890.00099.977fb
1900.00099.977df
1910.00099.978a0
1920.00099.978psrlq
1930.00099.979xorpd
1940.00099.979pslld
1950.00099.980ba
1960.00099.980fldz
1970.00099.980fmul
1980.00099.981punpcklbw
1990.00099.981punpckhdq
2000.00099.982cd
2010.00099.982f3
2020.00099.982rdsspq
2030.00099.983ef
2040.00099.983c7
2050.00099.983bf
2060.00099.984shrd
2070.00099.984fcomi
2080.00099.984psrld
2090.00099.985de
2100.00099.985f5
2110.00099.985d8
2120.00099.986pextrw
2130.00099.986a8
2140.00099.986rdseed
2150.00099.987psllq
2160.00099.987fucomip
2170.00099.987cvtsd2ss
2180.00099.987orps
2190.00099.988cf
2200.00099.988vmovdqa
2210.00099.988punpckhbw
2220.00099.988pshuflw
2230.00099.989fmulp
2240.00099.989b3
2250.00099.989psrad
2260.00099.989fdivp
2270.00099.989e7
2280.00099.990e6
2290.00099.990e4
2300.00099.990sha1rnds4
2310.00099.990sha1nexte
2320.00099.990d4
2330.00099.991d0
2340.00099.991fsubr
2350.00099.991b2
2360.00099.991vpxor
2370.00099.991f4
2380.00099.992bb
2390.00099.992ea
2400.00099.992b9
2410.00099.992vpshufb
2420.00099.992sha1msg2
2430.00099.992sha1msg1
2440.00099.993f9
2450.00099.993andps
2460.00099.993ae
2470.00099.993paddw
2480.00099.993f1
2490.00099.993e1
2500.00099.993cwde
2510.00099.994c9
2520.00099.994a5
2530.00099.994setnp
2540.00099.994pause
2550.00099.994fprem
2560.00099.994fnstsw
2570.00099.994d3
2580.00099.995b6
2590.00099.995a9
2600.00099.995ucomiss
2610.00099.995f6
2620.00099.995a6
2630.00099.995a2
2640.00099.995pcmpgtw
2650.00099.995f2
2660.00099.996ab
2670.00099.996shld
2680.00099.996jnp
2690.00099.996faddp
2700.00099.996c5
2710.00099.996psubw
2720.00099.996fa
2730.00099.996c6
2740.00099.996ac
2750.00099.997a7
2760.00099.997pinsrw
2770.00099.997fchs
2780.00099.997e9
2790.00099.997b1
2800.00099.997a1
2810.00099.997vpextrw
2820.00099.997psrlw
2830.00099.997pcmpestri
2840.00099.997pcmpeqb
2850.00099.997fucomi
2860.00099.997fsub
2870.00099.998fld1
2880.00099.998fdiv
2890.00099.998db
2900.00099.998d9
2910.00099.998d7
2920.00099.998rdrand
2930.00099.998fdivrp
2940.00099.998eb
2950.00099.998e2
2960.00099.998b0
2970.00099.998prefetcht0
2980.00099.998prefetchnta
2990.00099.998pcmpeqw
3000.00099.998minsd
3010.00099.999ee
3020.00099.999ed
3030.00099.999e5
3040.00099.999ce
3050.00099.999vpclmullqlqdq
3060.00099.999vpclmulhqhqdq
3070.00099.999unpcklpd
3080.00099.999pcmpgtb
3090.00099.999maxsd
3100.00099.999dc
3110.00099.999be
3120.00099.999b5
3130.00099.999xgetbv
3140.00099.999sqrtsd
3150.00099.999pshufb
3160.00099.999fcmovbe
3170.00099.999ec
3180.00099.999dd
3190.00099.999da
3200.00099.999d2
3210.00099.999ad
3220.00099.999vzeroupper
3230.000100.000mulpd
3240.000100.000fsubrp
3250.000100.000cmpltsd
3260.000100.000b7
3270.000100.000vpsubb
3280.000100.000vpsadbw
3290.000100.000vpinsrd
3300.000100.000vpcmpeqb
3310.000100.000vmovdqu
3320.000100.000vextracti128
3330.000100.000unpckhpd
3340.000100.000sets
3350.000100.000psubusw
3360.000100.000paddb
3370.000100.000movupd
3380.000100.000movmskpd
3390.000100.000maxss
3400.000100.000d5
3410.000100.000subpd
3420.000100.000pmovmskb
3430.000100.000pinsrd
3440.000100.000pextrd
3450.000100.000minss
3460.000100.000in
3470.000100.000cvttpd2dq
3480.000100.000cmpltss
3490.000100.000cbw
3500.000100.000andnps
3510.000100.000addpd