2010-04-19 6 views
1

VC++에 컴파일하는 동안 ASM 파일을 생성하는 방법에 대해서는 아직까지 언급하지 않았습니다. 그러나 컴파일 과정에서 버려진 여분의 파일과 마찬가지로 매우 제한적으로 보입니다. ASM/C++ 코드가 링크되어있을 수 있으므로 C++에서 직접 생성 된 ASM 코드로 이동할 수 있다고 생각 했습니까? 아니면 ASM 코드에서 중단 점을 설정할 수 있습니까? 이것이 가능하고 도구를 모르거나 오프라인 분석을위한 ASM 생성입니까?VC++ ASM 생성 이해

+1

C++과 asm은 1 : 1 표현이 없기 때문에 그렇게하기가 어려울 것입니다. –

+0

그러나 컴파일러는 생성 된 코드를 정확히 알고 있으며 C++에서 ASM으로 매핑 할 수 있어야합니다. 따라서 PDB 파일에이 데이터가 포함되어 있거나 ASM 코드가 부작용 일 경우에만 문제가됩니다. –

답변

2

컴파일러에서 생성 된 어셈블리 언어 파일은 주로 오프라인 분석 용입니다. 생성 된 어셈블리 코드에서 중단 점을 설정하는 것과 같은 일을하고 싶다면 그렇게 할 수 있습니다. 적절한 소스 파일을 열었 으면 마우스 오른쪽 버튼을 클릭하고 "분해"로 이동하십시오. 그러면 소스 문이 주석으로 인터리브 된 어셈블리 언어 코드가 표시됩니다 (별도로 생성되는 파일과 유사). 그런 다음 특정 소스 문에서 생성 된 개별 어셈블리 언어 문에 중단 점을 설정할 수 있습니다.

+0

이것은 생성 된 어셈블리가 출시 된 것만 큼 교육적이지 않은 디버그 모드에서만 실제로 작동합니다. http://stackoverflow.com/questions/563000/can-optimizations-affect-theability-to-debug-a-vc-app-using-its-pdb –

+1

@BlueRaja : 예, 아니오. 릴리스 모드에서 디버깅 정보를 생성하는 한, 대략 동일한 작업을 수행 할 수 있습니다. 다른 점은 전역 최적화가 소스 코드와 소스 코드간에 1 : 1로 대응하지 않도록 코드를 재정렬 할 수 있다는 것입니다. –