분기 테이블이란 무엇입니까?
분기 테이블은 명령 분기를 보내거나 switch 문을 구현하여 프로그램의 한 부분에서 다른 부분으로 또는 동적으로로드 된 두 번째 프로그램으로 프로그램 제어를 효율적으로 전송하는 방법입니다. 점프 테이블이라고도하는이 방법은 일련의 상황이나 조건에 따라 C + 컴파일러의 switch 문에 따라 프로 시저를 구현하기 위해 점프를 수행합니다. 브랜치 테이블의 주요 장점 중 일부는 컴팩트 한 코드 구조와 프로그램 흐름을 결정할 때 개별적으로 리턴 코드를 테스트 할 필요성이 줄어든다는 것입니다.
1980 년대에 분기 테이블은 어셈블리 언어 프로그래밍에 널리 사용되었습니다. 이들은 임베디드 시스템 및 운영 체제 개발을위한 어셈블리 프로그래밍에 여전히 사용됩니다. 1990 년대 이래로 컴파일러 프로그래밍 언어는 브랜치 테이블 기능을 사용했습니다.
분기 테이블은 입력이 주어지면 다른 대상으로 분기되는 무조건 명령어 목록으로 구성됩니다. 대부분의 컴퓨터 하드웨어는 이러한 명령어를 효율적으로 실행할 수 있습니다. 때때로, 오프셋 (기본적으로 목적지까지의 거리)은 프로그램 카운터 레지스터에 추가 될 수 있으며, 프로그램 카운터 레지스터는 분기 명령 세트를 가리 키거나 분기 명령 세트 사이를 이동할 수 있습니다. 분기 테이블을 구현하는 데 필요한 것은 입력 코드의 유효성 검사, 데이터를 오프셋으로 변환 및 데이터에 지정된 명령 길이를 곱하는 것입니다.
임베디드 프로그래밍은 머신 코드 또는 배열 포인터를 사용하는 것보다 메모리 효율성이 더 높은 분기 테이블을 사용합니다. 임베디드 제어 시스템은 메모리 절약을 필요로하며, 브랜치 테이블에 액세스하는 동안 적은 양의 성능이 필요할 수 있지만 모든 가상 메소드 함수 호출은 안정적인 기능을 위해 동일한 양의 성능이 필요합니다. 임베디드 시스템의 제한된 CPU 액세스 및 메모리 절약에는 정적 기능 세트를위한 분기 테이블이 필요합니다.
컴파일러 프로그래밍 언어는 필요한 경우 컴파일러 최적화에 검색 키를 사용하여 자체 분기 테이블을 생성합니다. 일부 프로그래머는 키를 검색 할 컴파일러에 2 단계 조건부 매개 변수를 제공하여 컨텍스트 분기 테이블 생성을 통해 컴파일러를 수동으로 지원하도록 선택합니다. 초기 컴파일 프로그램에서 분기 테이블 구현은 Fortran 컴파일러 언어의 "GoTo"명령이었습니다. 분기 테이블은 여전히 컴파일러 언어에서 프로그램 흐름의 변경을 구현하거나 반복되는 명령 시퀀스의 시작점이되기 위해 사용됩니다.