문제

할 수 있는 누군가를 설명하는 역학의 뛰어 테이블은 왜 필요한 것이 임베디드 시스템의 차이점은 무엇입니까?

도움이 되었습니까?

해결책

점프 테이블 수 있습 중 하나는 포인터 배열하는 기능 또는 배열의 컴퓨터 코드 뛰어오.는 경우에 당신은 상대적으로 정적의 설정 기능(같은 시스템 호출하거나 가상 기능을위한 클래스)다 만들 수 있는 이 테이블은 한번 함수를 호출을 사용하여 간단한 인덱스 array.이 검색하는 포인터와 함수를 호출하거나 점프하여 컴퓨터 코드의 종류에 따라 테이블에 사용됩니다.

의 혜택을하고 이에 포함된 프로그래밍:

  1. 인덱스는 더 많은 메모리보다 효율적으로 컴퓨터 코드나 포인터가 잠재적인 위해 메모리에 있는 저축 제약 환경입니다.
  2. 특정 기능의 색인이 안정적으로 유지하고 변경하는 기능이 단순히 필요한 교환 함수 포인터이다.

는 경우가 비용을 작은 조금의 성능에 액세스하기 위한 테이블,하지만 이것은 더 이상 다른 어떤 가상 함수 호출합니다.

다른 팁

점프,테이블도로 알려진 지점 테이블의 지침은 모든 무조건적으로 분기하는 또 다른 점에서 코드입니다.

할 수 있습으로 그들의 생각 스위치(또는 선택)문는 모든 경우에 있으로 가득:

MyJump(int c)
{
   switch(state)
   {
      case 0:
         goto func0label;
      case 1:
         goto func1label;
      case 2:
         goto func2label;
   }
}

참고가 없어 반환하는 코드를 실행할 반환,그리고 다시 이동하는 어디든지 myjump 에 부름을 받았습니다.

이용 상태계 어디서를 실행하는 특정 코드에 상태에 따라 변수입니다.많은,많은 다른 사용하지만,이는 주요 사용합니다.

그것은 당신을 원하지 않는 시간을 낭비와 조롱 스택,그리고 저장하려는 코드는 공간입니다.그것은 특히 사용에서의 인터럽트 처리기는 속도는 매우 중요하며 주변이 발생하는 인터럽트만으로 알려진 하나의 변수입니다.이와 유사한 벡터 테이블에서 프로세서 인터럽트 컨트롤러입니다.

중 하나를 사용될 것입 취$0.60 마이크로컨트롤러를 생성하는 composite(TV)신호를 위한 동영상 응용 프로그램.마이크로 강력하지 않은 사실 그것의 겨우를 충분히 빠르게 쓰는 각 스캔 라인입니다.점프 테이블에 사용될 문자를 그리기 때문에,너무 오래 걸릴 것입을 로드하는 비트맵 메모리에서 사용하고,()를 위한 루프를 밀어 비트맵다.신이 별도로 점프하는 문자와 스캔 라인,그리고 다음 8 또는 그래서 지시하는 실제로 쓰는 데이터로 바로 포트입니다.

-Adam

점프 테이블은 설명 , 지만,간단하게,그것은 배열의 주소는 CPU 를 이동해야를 특정 조건에 따라.예를 들어,C switch 문은 자주 구현으로 점프하는 테이블의 각 항목을 뛰어 갈 것입니다 특정"의 경우"라벨입니다.

에서는 임베디드 시스템,어디 메모리 사용량에 많은 구문을 통해 보다 효율적으로 점프를 사용하 테이블 대신 더 많은 메모리 집약적인 방법(처럼 대규모는 경우-다른 경우).

Wikipedia 은 그것을 매우 잘:

에서 컴퓨터 프로그래밍,점 테이블(때로는 알려진으로 이동 table)용어를 설명하는 데 사용되는 효율적인 방법의 전송 제어 프로그램(분기)다른 프로그램의 일부(또는 다른 프로그램되어 있을 수 있는 동적으로 로드)테이블을 사용하의점 다.점 테이블 건축입니다 일반적으로 사용되는 경우 프로그래밍에 어셈블리 언어 수도 있습 컴파일러에서 생성.

...의 사용을 지점 테이블과 기타 원 데이터 인코딩은 일반적이었다 초기에 일 컴퓨팅의 경우 메모리 비싼,Cpu 를 느린 조밀한 데이터 표현과 효율적인 선택의 대안들 중요합니다.요즘 그들은 일반적으로 에서 사용되는 임베디드 프로그램 운영 체제 개발이다.

다시 말해서,그것은 유용한을 구성할 때 사용하는 시스템이 매우 메모리고/또는 CPU 으로 제한된 경우가 종종에서는 임베디드 플랫폼입니다.

:

에서 컴퓨터 프로그래밍,점 테이블(때로는 알려진으로 이동 table)용어를 설명하는 데 사용되는 효율적인 방법의 전송 제어 프로그램(분기)다른 프로그램의 일부(또는 다른 프로그램되어 있을 수 있는 동적으로 로드)테이블을 사용하의점 다.점 테이블 건축입니다 일반적으로 사용되는 경우 프로그래밍에 어셈블리 언어 수도 있습 컴파일러에서 생성.

점 테이블로 구성되어 있 serial 목록의 무조건적지점 지시는 분기에 사용한 오프셋에 의해 만들어 곱 순차적으로 명령에 의해 인덱스 길이(바이트 수를 메모리에 에 의해 점유되는 각 지점 명령).을 사용한다는 사실 기계 코드에 대한 지침 분야 고정 길이가 될 수 있 실행 매우 효과적으로 대부분에 의해 하드웨어가 가장 유용한 경우 을 다루는 원시 데이터 값을 수 있는 게 변환하여 순차 인덱스 값이 있습니다.주어진 데이터 점 테이블은 매우 수 있습니다 효율적이다;그것은 일반적으로 이루어져 있다의 다음과 같은 단계:필요에 따라 검증 입력된 데이터 보장하기 위해 수용;변환로 데이터 오프셋은 지점으로 테이블,이 일반적으로 곱하여 또는 이동 계정 명령어 길이를;고 분하여 주소를 만들어 최대의 기초 테이블 생성된 오프셋:이 자주를 포함한 오프셋에 프로그램 카운터 등록합니다.

점프,테이블,더 많은 수시로 알려진 지점 테이블,일반적으로만 사용됩니다.

컴파일러를 만들의 목록에 있는 모든 레이블에 어셈블리 프로그램과 연결 상표하는 메모리 위치에 있습니다.점프 표 꽤 많은 참조 카드하는,함수 또는 가변 또는 이제까지 상표면 메모리에 저장됩니다.

그래서 같은 함수가 실행에 마무리 그것으로 되돌아간 그것은 이전의 메모리 위치로 점프하는 다음 함수,등등.

그리고 만약 당신의 이야기에 대해 내가 무엇을 생각하는,당신은 단지 그들이 필요에 임베디드 시스템 하에서 모든 유형의 컴파일/해석되는 환경입니다.

Brian Gianforcaro

뛰어 테이블은 일반적으로(그러나 독점적으로)에서 사용 finite state machines 그들은 데이터 구동됩니다.

대신 중첩 스위치/케이스

  switch (state)
     case A:
       switch (event):
         case e1: ....
         case e2: ....
     case B:
       switch (event):
         case e3: ....
         case e1: ....

을 만들 수 있습 2d 배열 또는 함수 포인터 및 전화 handleEvent[state][event]

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top