본문 바로가기
개념공부/C, C++, IDE

[IDE] 비주얼 스튜디오 디스어셈블리 코드 확인 방법

by Zach Choi 2024. 7. 8.
728x90
반응형

 C, C++ 코드 성능을 확인하거나 동작 방식을 로우 레벨에서 확인해야할 때 어셈블리 코드를 직접 보는 것이 도움된다. Visual Studio 에서는 컴파일된 어셈블리 코드를 확인할 수 있는 창을 제공한다.


디스어셈블리 코드 창 사용 설정

디스어셈블리코드 창을 사용하기 위해선 먼저 설정이 필요하다. Visual Studio에서 도구 > 옵션 > 디버깅 > 일반 > '주소 수준 디버깅 사용' 을 체크한다.

 디스어셈블리 코드 확인 방법

작성한 코드에 중단점을 걸고 디버그 모드로 실행한다. 중단점은 F9 키로 설정 가능하며, 디버그 모드는 F5 키를 누르면 된다. 코드가 컴파일 이후 실행되고, 중단점에 제어가 걸려 있을 때 디스어셈블리 창을 실행한다.

13 line 중단점에 제어가 걸려 있다.

 

디스 어셈블리 창은 디버그 > 창 > 디스어셈블리를 클릭하면 실행된다. (단축키는 Ctrl + Alt + D)이다.

 

설정 및 실행이 정상적으로 이루어 졌다면 다음과 같은 디스 어셈블리 코드를 볼 수 있다. 코드 라인 별 어셈블리 코드를 볼 수 있고, 13 line return 코드에 중단점이 걸려 있는 것도 확인할 수 있다.


 나는 임베디드 C 최적화를 위해 디스 어셈블리 코드 확인이 필요 했다. 위 예시로 든 코드는 배열과 포인터의 접근 속도 비교를 위한 테스트 코드 이다.

 

문자열에 접근하여 값을 수정할 때, 배열로 접근하는 7 line과 포인터로 접근하는 8 line의 코드 수행 시간을 비교하는 것인데, 8line의 디스 어셈블리 코드를 보면 1줄 더 긴 것을 알 수 있다. 이는 포인터 변수로 메모리 접근 시, 포인터 변수에 접근 후 저장된 메모리로 한번 더 이동해야 하므로 수행 시간이 더 소모되는 것을 알 수 있다.

 

 이렇게 C, C++ 코드를 최적화 할때나 코드의 동작을 로우레벨에서 확인해야 할 때 디스 어셈블리 창은 좋은 도구가 되므로 참고해두자.

728x90
반응형