1.4 메모리 모델 메모리 모델 개요

 

 

메모리 모델 RL78 컴파일러에는 3 종류의 메모리 모델이 있습니다. 메모리 모델은 대상 장치의 메모리 스페이스는 사용자가 결정해야합니다.

소형 모델 코드 昀大64K 바이트 데이터 昀大64K 바이트의 128K 바이트 코드 / 데이터 모두 near 영역으로 컴파일합니다.

미디엄 모델 (기본) 코드 昀大1M 바이트 데이터 昀大64K 바이트의 1M 바이트 코드 부는 far 영역 데이터 부는 near 영역으로 컴파일합니다.

대형 모델 코드 昀大1M 바이트 데이터 昀大1M 바이트의 1M 바이트 코드 / 데이터 모두 far 영역으로 컴파일합니다.

 

코드 코드 near 영역昀大64K 바이트이며 00000h ~ 0FFFFh 배치됩니다. 그렇지 코드 부는 far 영역입니다,

昀大1M 바이트이며, 00000h ~ FFFFFh 배치됩니다.

데이터 데이터 부의 near 영역昀大64K 바이트이며 F0000h ~ FFFFFh 배치됩니다. 다른 데이터 부는 far 영역입니다,

昀大1M 바이트이며, 00000h ~ FFFFFh 배치됩니다.

 

 

메모리 모델의 옵션 설정 메모리 모델은 "메모리 모델의 종류" 컴파일 옵션 (-ms/-mm/-ml) 지정합니다. 기본값은 미디엄 모델이되고 있습니다.

 

소스 프로그램 소형 모델에서의 컴파일 결과

미디엄 모델의 컴파일 결과

대형 모델의 컴파일 결과

 

 

메모리 모델 코드 효율 메모리 모델 코드 효율은 위의 설명과 같습니다.

코드 / 데이터 모두昀大64K 바이트의 메모리 모델이 코드 효율 우수합니다.

예를 들어, 소형 모델과 미디엄 모델을 비교하면 데이터 부분은 함께昀大64K 바이트이기 때문에 변수 액세스 코드 효율은 동일합니다.

그러나 코드 부가昀大64K 바이트昀大1M 바이트의 차이가 있기 때문에 함수 호출 코드 효율 미디엄 모델이 나빠집니다.

또한 미디엄 모델 대형 모델을 비교하면 코드 부분은 함께昀大1M 바이트이기 때문에 함수 호출 코드 효율은 동일합니다.

그러나 데이터 부가昀大64K 바이트昀大1M 바이트의 차이가 있기 때문에 변수 액세스 코드 효율성 대형 모델이 나빠집니다.

 

또한, 메모리 모델의 near / far 영역은 프로그래머가 __near / __far 키워드를 지정하여 메모리 모델의 기본 설정에서 변경할 있습니다.

, 소형 모델로 생각하면 시스템 전체 코드 / 데이터 부분을 64K 바이트 이내에 넣을 필요는 없고,

다음 페이지에 표시된 __far 키워드를 지정하여 64K 바이트를 넘는 프로그램 만들기가 가능합니다.

 

 

정적 변수에 대한 near / far 형식 한정자 __near / __far 키워드는 const volatile 형식 변경자와 동일 취급입니다.

기본 변수이면 지정은 어렵지 않지만, 포인터 변수에 양자를 지정하는 경우 형식 한정자 설명 위치에 주의가 필요합니다.

 

함수에 대한 near / far 형식 한정자 함수에 대한 __near / __far 형식 한정자도 취급 변수와 동일합니다.

함수 자체에 대한 지정하면 어렵지 않지만 함수를 포인터 변수에 양자를 지정하는 경우 형식 한정자 설명 위치에 주의가 필요합니다.

 

 

 

 

'공부 > RL78' 카테고리의 다른 글

RL78 컴파일러 사용 6  (0) 2013.04.05
RL78 컴파일러 사용 5  (0) 2013.04.05
RL78 컴파일러 사용 3  (0) 2013.04.05
RL78 컴파일러 사용 2  (0) 2013.04.05
RL78 컴파일러 사용 1  (0) 2013.04.05

+ Recent posts