해결된 질문
작성
·
77
·
수정됨
0
안녕하세요! 항상 잘 보고 있습니다
최적화 관련으로 궁금증이 생겨 질문을 남깁니다
제가 찾아본 관련 내용은 아래와 같습니다
중간 코드 생성 다음으로 이루어지는 중간 코드 최적화
기계어 생성 다음으로 이루어지는 기계어 최적화( ? )
중간 코드 최적화의 다양한 기법
데드 코드 제거( Dead Code Elimination )
상수 폴딩( Constant Folding )
공통 하위표현식 제거( Common Subexpression Elimination )
질문 1
영상 5:30의 어셈블리어를 보면 a = 3 + 4 표현식이 결과값인 7로 대체 되어 있습니다
이것은 중간 코드 최적화 기법중 상수 폴딩에 해당하는거 같습니다
그렇다면면 여기서 이루어진 최적화는 중간 코드 최적화가 맞을까요?
감사합니다 !
답변 1
0
컴파일러 마다 다를 수 있습니다. 중간 코드를 생성하는 것이 최신 컴파일러의 보편적 특성이긴 하지만 C언어의 경량 컴파일러는 중간 코드를 생성하지 않고 바로 기계어를 생성합니다. 그러므로 PC환경이고 Visual C++ 환경이라면 중간 코드를 생성한다고 봐야 하겠습니다.
그러나 3 + 4를 7로 단순 변환하는 정도는 추상 구문 트리를 생성하는 단계에서도 가능합니다. 중간 코드로 변환되기도 전에 최적화 될 수 있으며 이는 컴파일러가 결정할 문제입니다. 반드시 중간 코드 생성 단계라 단정 할 수는 없습니다. 참고하시기 바랍니다. 😄