제어테이블

제어테이블(Control Table)은 컴퓨터 프로그램의 제어 흐름을 규정하기 위하여 사용되는 표 형태의 데이터 구조로서, 일반적으로 레코드의 배열로 구성된다. 이러한 방식으로 동작하는 소프트웨어는 흔히 테이블 기반 프로그램이라 지칭된다.

조건식을 평가하는데 필요한 매개변수뿐만 아니라 해당 조건이 충족될 경우 호출되어야 할 함수에 대한 참조를 함께 포함한다. 인터프리터 또는 테이블 기반 알고리즘은 입력 데이터를 바탕으로 조건식을 순차적으로 평가한 뒤, 그 결과에 따라 테이블에 명시된 적절한 함수를 호출함으로써 동작을 수행한다. 이와 같은 구조는 동일한 제어 로직을 반복하여 작성할 필요성을 감소시켜, 프로그램 내 중복 코드를 효과적으로 줄이는 장점이 있다.

입력 매개변수를 테이블 항목과 대응시키는 방식은 특정 자료구조에 한정되지 않는다. 대표적인 예로는 빠른 조회 성능을 제공하나 상대적으로 높은 메모리 사용량을 요구하는 조회 테이블, 메모리 효율성은 높으나 조회 시간이 다소 증가할 수 있는 연관 배열이 있다.

테이블에 기재된 동작을 참조하는 방식 역시 프로그래밍 언어에 따라 상이하다. 일부 언어는 직접적인 함수 참조(예: 함수 포인터)를 지원하여 테이블에서 즉시 함수를 호출할 수 있는 반면, 다른 언어는 특정 코드 위치로 점프하기 위한 라벨(label)이나 분기 구조를 제공한다. 이러한 기능이 제한된 언어에서는 입력값을 인덱스로 변환한 뒤, 해당 인덱스에 대응하는 분기문(branch)을 수행함으로써 유사한 제어 구조를 구현할 수 있다.

일반적으로 상위 수준 알고리즘의 일부로 사용되며, 이벤트 기반 프로그램의 주 반복문을 제어하거나, 가상 기계의 명령 체계를 구성하는 데 활용된다. 가상 기계에서의 제어테이블은 바이트코드와 유사한 역할을 수행하되, 연산이 테이블의 구조적 배치에 의해 암시되는 경우가 많다는 점에서 차이를 보인다.

분류:제어 흐름
분류:컴파일러 구성
분류:컴파일러 구조