3주소코드

Three-address code

컴퓨터 과학에서 3주소 코드[1](흔히 TAC 또는 3AC로 약칭)는 코드 개선 변환의 구현에 도움이 되도록 컴파일러를 최적화하여 사용하는 중간 코드다.각 TAC 명령에는 최대 3개의 피연산자가 있으며, 일반적으로 할당과 이진 연산자의 조합이다.예를 들어,t1 := t2 + t3피연산자가 적은 지시사항이 발생할 수 있음에도 불구하고, 이 문장에서 피연산자 3명의 사용에서 이름이 유래되었다.

3주소 코드는 컴파일러 내에서 중간 언어로 사용되기 때문에 피연산자는 구체적인 메모리 주소나 프로세서 레지스터가 아니라 레지스터 할당 에 실제 주소로 변환될 상징적인 주소일 가능성이 높다.일반적으로 세 개의 주소 코드가 컴파일러에 의해 생성되기 때문에 피연산자 이름이 순차적으로 번호가 매겨지는 것도 드문 일이 아니다.

3주소 코드의 정교함은 A-정규형(ANF)이다.

3주소 코드로, 이것은 몇 가지 개별 명령으로 나누어진다.이 지침들은 조립 언어로 더 쉽게 번역된다.또한 코드 축소를 위한 일반적인 하위 표현들을 탐지하는 것이 더 쉽다.다음 예에서 하나의 계산은 여러 개의 작은 계산으로 구성된다.

3주소 코드는 조건부 및 무조건 점프와 메모리에 접근하는 방법을 가질 수 있다.그것은 또한 기능을 호출하는 방법이 있을 수도 있고, 점프로 이것을 줄일 수도 있다.이러한 방식으로 3주소 코드는 제어 흐름 분석에 유용할 수 있다.다음의 C 유사 예에서, 루프는 0과 9 사이의 숫자의 제곱을 저장한다.

참고 항목

참조

  1. ^ V., Aho, Alfred (1986). Compilers, principles, techniques, and tools. Sethi, Ravi., Ullman, Jeffrey D., 1942-. Reading, Mass.: Addison-Wesley Pub. Co. pp. 466. ISBN 0201100886. OCLC 12285707.