При условии, что все ваши инструкции имеют отступ от другого кода с использованием пробела (вкладка в порядке), тогда этот awk
1-строчный будет работать:
awk '/^[[:space:]]+/{a[$1]++}END{for(op in a){print op,a[op]}}' /path/to/*.s
Input
$ cat asm.s
section .text
global _start, write
write:
mov al,1 ;write syscall
syscall
ret
_start:
mov rax,0x0a68732f6e69622f
push rax
xor rax,rax
mov rsi,rsp
mov rdi,1
mov rdx,8
call write
exit: ; just exit not a function
xor rax,rax
mov rax,60
syscall
выход
$ awk '/^[[:space:]]+/{a[$1]++}END{for(op in a){print op,a[op]}}' ./*.s
push 1
xor 2
ret 1
mov 6
syscall 2
call 1