본문 바로가기
C/개발환경

Section에 대해서

by memora 2024. 7. 6.

작성한 프로그램 코드와 변수는 메모리상에 배치되지만, 그 특성 별로 배치되는 영역이 조금씩 달라진다. 그래서 특성에 따라 코드나 변수를 모아놓은 영역을 섹션이라고 부른다. 어플리케이션이나 웹쪽 개발자들에겐 더욱 생소한 단어일 수 있다.  왜냐하면, 내장제어 분야와는 다르게 OS가 알아서 해주기 때문에 개발자가 일일이 신경 안써도 된다.  하지만 내장제어 분야는 하나부터 열까지 지가 알아서 배치 해야 된다. 특히 특수한 목적에 따라서 배치를 바꿔야 할 경우엔 지맘대로 섹션을 만들어서 배치해 주어도 된다.

 

그럼 일반적으로 쓰이는 섹션에 어떤 것들이 있는지 살펴보자.

섹션의 종류
P   :  프로그램 섹션
C   :  정수 데이터 섹션(const로 설정된 변수)
D   :  초기화된  데이터 섹션
B   :  초기화 되지 않은 데이터 섹션
W  :  스위치문을 위한 분기 테이블 섹션
L    : 문자열 리터럴(string literal : 소스코드상이 직접 작성한 문자열 데이터) 섹션

SU : User Stack 섹션

SI  : Interrupt Stack 섹션

R   : ROM에서 RAM으로 카피하기 위한 섹션(D=R등)

 

섹션명은 컴파일러나 개발 환경에 따라서 달라질 수 있으나 위에 언급한 섹션명은 대부분의 개발환경에서 공통으로 사용되고 있다. 

 

다음은 일본의 Renesas 가 개발한 e2studio계열에서 자주 쓰이는 섹션명이다.


FIXEDVECT  : 예외처리 섹션
PResetPRG   : 리셋직후 최초로 실행되는 프로그램 섹션
PIntPRG        : 인터럽터함수 섹션
C$INIT           : 글로벌 클래스 오브젝트에 대해서 호출되는 컨스트럭트및 디스트럭트의 어드레스를 보관하는 섹션
C$VTBL          : 가변벡터 테이블 섹션

개발환경에 따라서 조금씩 달라 지지만, 내장제어 개발자들은 알아두면 피가 되고 살이 된다.
또 기억나지 않을 때는 요 페이지로 돌아오시라. 그럴 목적으로 만든 거니까...

 

〇섹션 설정 방법
이것도 개발환경에 따라서 조금씩 달라질 수 있으니, 필히 매뉴얼을 참조하자.
일반적으론
#pragma section MYSECTION        // 섹션 지정 개시    MYSECTION(0x0000 0100~ 0x0000 0200)
int         a1;
int         b1;
#pragma section                               // 섹션 지정 종료
int         c1;
위와 같이 지정하였다면, a1, b1은 0x0000 0100~ 0x0000 0200 사이에 배치 된다.
하지만 c1은 일반적인 B 섹션에 배치 된다(초기화 하지 않은 변수 이므로).
 
 
반응형

'C > 개발환경' 카테고리의 다른 글

Code::Blocks 인스톨 하기  (0) 2024.08.12
연산자  (0) 2024.07.09
ASCII 코드  (0) 2024.07.02
통합 개발 환경(IDE)  (0) 2024.06.17
포인터란?  (1) 2024.05.22