2017-01-03 13 views
0

코어가 프로세스를 완료하는 데 필요한 명령어 수를 결정하고 싶습니다. 그것을 결정할 방법이 있습니까? 따라서 마이크로 컨트롤러에서는 함수의 명령어 크기를 결정할 수 있습니다. 리눅스에서도 똑같이하고 싶습니다. 미리 감사드립니다.Linux에서 프로세스/A 함수 호출의 명령어 크기 결정

는 편집 : [이 해결] 내 애플리케이션에 가장 적합한 이었다 단지

perf stat -p <pid> 

그 작업을 수행하는 여러 가지 방법이 있습니다

perf stat <command> 
+0

이 어셈블리 언어 프로그램을 마치려면 얼마나 많은 지침이 필요합니까? 'jmp $'? –

답변

2

:

[]$ readelf -s /usr/lib64/libc.so.6|grep usleep 
    1542: 00000000000f9090 57 FUNC GLOBAL DEFAULT 12 [email protected]@GLIBC_2.2.5 
    1560: 0000000000000000  0 FILE LOCAL DEFAULT ABS usleep.c 
    7073: 00000000000f9090 57 FUNC GLOBAL DEFAULT 12 usleep 

[]$ objdump -t /usr/lib64/libc.so.6|grep usleep 
0000000000000000 l df *ABS* 0000000000000000    usleep.c 
00000000000f9090 g  F .text 0000000000000039    usleep 

[]$ nm -S /usr/lib64/libc.so.6|grep usleep 
00000000000f9090 0000000000000039 T usleep 

가 모든 경우의 크기는 0x39 (57) 바이트입니다. 당신이 주어진 함수의 명령어 수를 원하는 경우

, 당신은 여전히 ​​objdump를 사용할 수 있습니다

[]$ objdump -d /usr/lib64/libc.so.6 | perl -ne 'BEGIN { $/="\n\n" }; print if $_ =~ /usleep/;' 

는 ... 분해를 나열합니다.

[]$ echo $(objdump -d /lib32/libc.so.6 | perl -ne 'BEGIN { $/="\n\n" }; print if $_ =~ /usleep/;'|wc -l)-2| bc -l 

를 동적 솔루션을 위해 당신은 반환 한 통계를 사용할 수 있습니다 : 명령의 정확한 수를 들어 당신은 카운트 라인을 뺄 필요가

[]$ perf stat uptime 
10:57:28 up 21 days, 10:30, 4 users, load average: 2.00, 1.98, 2.16 

Performance counter stats for 'uptime': 

      0.719094  task-clock (msec)   # 0.802 CPUs utilized   
       0  context-switches   # 0.000 K/sec     
       0  cpu-migrations   # 0.000 K/sec     
       123  page-faults    # 0.171 M/sec     
     2,297,093  cycles     # 3.194 GHz      
    <not supported>  stalled-cycles-frontend 
    <not supported>  stalled-cycles-backend 
     1,985,122  instructions    # 0.86 insns per cycle   
      389,193  branches     # 541.227 M/sec     
      15,847  branch-misses    # 4.07% of all branches   

     0.000896079 seconds time elapsed 

는 명령을 몇 번 실행하는 경우 것 가장 가능성이 실행 사이의 값이 변동 참조하십시오. 그러므로 이것은 정확한 과학이 아닙니다.

+0

안녕하세요, 답변 해 주셔서 감사합니다. 내가 잘못했거나 크기가 단위가 없어야합니까? 제 말은 명령 수를 얻고 싶습니다. 그것을 얻을 수 있습니까? – mozcelikors

+0

죄송합니다. 나는 나의 대답을 확장했다. – FrodeTennebo

+0

대단히 감사합니다. 파이썬이나 터미널에서 명령을 통해 실행되는 다른 응용 프로그램의 경우 한 가지 더 알아보십시오. 어떻게 명령 수를 찾을 수 있습니까? 감사합니다. – mozcelikors