17
나는 (ILDasm을 통해) 내 어셈블리 중 하나의 일리노이를 통해 트롤링했다. 그리고 나는 모든 메소드가nop
명령으로 시작된다는 것을 알아 차렸다.생성 된 일리노이 코드가 Nop으로 시작하는 이유는 무엇입니까?
왜 그런지 알고 있습니까?
나는 (ILDasm을 통해) 내 어셈블리 중 하나의 일리노이를 통해 트롤링했다. 그리고 나는 모든 메소드가nop
명령으로 시작된다는 것을 알아 차렸다.생성 된 일리노이 코드가 Nop으로 시작하는 이유는 무엇입니까?
왜 그런지 알고 있습니까?
어셈블리가 디버그 모드로 컴파일되었습니다. Nop
명령어는 아무 것도 (즉 부작용이 없음) 있지만 중단 점을 배치하는 편리한 명령어로 작동합니다.
팁
당신이 디버깅 목적으로 추가 중단을위한 장소가 필요하면, 당신은 빈 중괄호 한 쌍을 추가하여 디버그 빌드에서 Nop
의 포함을 강제 할 수, 예를 들어,
_grid.PreviewMouseRightButtonDown += (sender, e) =>
{
_isRightMouseDown = true;
RowColumnIndex cell = _grid.PointToCellRowColumnIndex(e);
{} //<------ Adding a Nop allows a breakpoint here.
};
그들은 사이클을 낭비합니까? – YellPika
@YellPika 예. 그렇습니다. 그들은 무의미한 사이클을 낭비합니다. 디버그 빌드를 느리게 만드는 요소 중 하나입니다. –
JIT 컴파일러는 네이티브 명령 흐름에서 이들을 최적화해야합니다. – devstuff