특정 주소에 포인터 테이블 배치하기

기술노트 44835

아키텍처:

All

컴포넌트:

compiler

업데이트:

2021-05-11 오전 10:58

소개

본 기술 노트는 특정 주소에 포인터 배열을 배치하는 방법에 대해 논합니다.

해결방안

@ 배치를 지원하는 IAR C/C++ 컴파일러 버전에는, 두가지 방법을 사용할 수 있습니다. 배열을 const 형으로 선언하거나, 런타임시에 값이 변해야 하는 경우 배열을 초기화하지 않은 것으로 선언합니다.

첫 번째 방법은 다음과 같습니다.

unsigned char * const RamAddresses[4] @ 0x8000 =
{
&object1,
&object2,
&object3,
&object4,
};

두 번째 방법입니다.

이 방법을 위해 두 가지 조치를 취해야 합니다.

절대 배치 (@ 기호)에서는 초기화된 비 상수 변수를 허용하지 않습니다. 따라서 배열을 __no_init 로 선언해야 합니다.

__no_init unsigned char * RamAddresses[4] @ 0x8000;

다음 응용프로그램의 코드에서 예를 들어 main()의 시작부에서 배열을 초기화 합니다.

RamAddresses[0] = &object1;
RamAddresses[1] = &object2;
RamAddresses[2] = &object3;
RamAddresses[3] = &object4;

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.