JavaScript와 유사한 언어에 대한 최적화 프로그램을 작성 중이며 중간 코드 표현을 선택해야합니다. 요즘 명백하고 전형적인 선택은 정적 단일 할당 (SSA)입니다.
그러나 C에서 Modern Compiler Implementation은 기본적으로 중간 표현을 위해 순수한 기능을 수행하는 것을 의미하는 기능적 중간 형식에 대해 논의합니다 (로컬 변수 측면에서 순수하고 힙 데이터는 여전히 변경 가능하며 CPS가 아닌 단순한 let
블록 및 테일 호출). 추론하기 쉬운 측면에서 몇 가지 장점이 있습니다.
아마도 그것은 쉬운 일이 아니거나 모든 사람들이 이미 그러한 표현을 사용하고있을 것이므로 내 질문은 기능적 중간 형태가 SSA와 비교했을 때 어떤 단점이 있습니까?
3
이 중간 형태에 대해 어떤 종류의 분석을 하시겠습니까? SSA는 데드 코드 제거, 지속적인 전파, 부분 특수화 등에 적합합니다. 이러한 종류의 항목이 메뉴에 없으면 SSA를 건너 뛰고보다 간단한 해석 단계를 위해보다 완화 된 표현을 사용할 수 있습니다. 그러나 SSA 양식을 생성하는 것은 쉬운 일이 아니며 SSA를 CPS로 쉽게 변환 할 수 있으며 그 반대도 가능합니다.
—
SK-logic
예, 나는 전체 몬티를 목표로하고 있으며 입력 언어와 출력 형식 (초기 C ++)은 모두 필수 언어입니다.
—
rwallace 2016 년
SSA 양식을 생성하는 것은 매우 간단한 작업이며 SSA를 CPS로 쉽게 변환 할 수 있으며 CPS를 SSA로 변환하여 이점을 두 배로 늘릴 수 있습니다.
—
레온 알렉시스 추기경