1. 확장 언어 사양
  2. 키워드

     

    키워드 목록

     

    【주】 * ANSI-C 언어 사양 허용-za 옵션 지정시에는 무효가 됩니다

     

    키워드 목록 RL78 패밀리 컴파일러는 위에 설명 키워드를 지원하고 있습니다.

    또한 자세한 내용은 2 이상 차례로 소개합니다.

    그러나이 텍스트는

    • ASM

    절대 번지 배치 지정은 소개하지 않습니다.

    이러한 키워드에 대해서는 설명서를 참조하십시오.

    다음 페이지에 2 상수를 설명하는 키워드의사용을 보여줍니다.

     

     

     

     

     

     

    소스 프로그램 컴파일 결과

     

     

    정수가 기술 가능한 위치에 2 상수를 작성할 있습니다. ·

    이진 상수는 접두사 0b 또는 0B 작성하고 0 또는 1 숫자로 표시합니다

     

    이진 상수 RL78 패밀리 컴파일러는 소스 프로그램 중에 2 진수 상수가 설명 가능합니다.

    이진 상수는 접두사 "0b"또는 "0B" 작성하고 다음 0 또는 1 열에서 숫자를 표현합니다.

     

     

     

     

     

     

     

    ANSI 규정 외의 기능을 무효로하고, ANSI 규정의 일부 기능을 사용합니다.

    구체적으로는 다음 작업을 수행합니다.

     

     

    다음은 예약어는 없습니다. callt / sreg / bit / boolean/ # asm / # endasm

    트라이 ​​그래프 시퀀스 (3 문자 표기) 적용됩니다.

    컴파일러 정의 매크로 __STDC__ 1이됩니다.

    □ far 포인터의 관계 연산을 3 바이트로 실시하는 것으로, 데이터를 64K 바이트의昀後 1 바이트에 배치 가능합니다.  

    int 이외의 비트 필드에 다음 경고를 출력합니다.(CC78K0R warning W0787 : Bit field type is not int)

    □ -qc-zp-zc 옵션에 대해-w2 지정시 다음 경고를 출력합니다.

    (CC78K0R warning W0029 : '-qc'option is not portable)

    (CC78K0R warning W0031 : '-zp'option is not portable)

    (CC78K0R warning W0032 : '-zc'option is not portable)

     □ 각종 # pragma 문에,-w2 지정시 다음 경고를 출력합니다.

    (CC78K0R warning W0849 : # pragma statement is not portable)

     □ __asm ​​문장에 대해,-w2 지정시 다음 경고를 출력하고 어셈블 출력됩니다.

    (CC78K0R warning W0850 : Asm statement is not portable)

    □ # asm ~ # endasm 블록에-w2 지정시 다음의 오류 등을 출력합니다.

    (CC78K0R error E0801 : Undefined control )

     

     

    ANSI-C 언어 사양 허용 옵션

    "ANSI 표준을 준수하는"옵션 (-za) '' 설정 경우, 위의 항목이 변경됩니다. 안에 1-26 페이지에서 소개 키워드의 일부가 무효화와 비트 필드의 형태 지정자로서, int 이외의 것을 사용하면 경고가 출력되는 것이 중요합니다.

    또한, 위의 슬라이드에있는 옵션의 내용은 다음과 같습니다. •-qc : "char 형을 unsigned char 간주"옵션 (3-8 참조)  •-zp : "C + + 형식의 주석 허용"옵션 (컴파일 옵션 확장 카테고리) •-zc : "댓글 중첩 허용"옵션 (컴파일 옵션 확장 카테고리) •-w2 : " 경고 수준 "옵션에 대한 자세한 출력 (컴파일 옵션 메시지 범주)

     

    1.5.2 섹션 구성 near 공간 배치의 C 프로그램이 사용하는 메모리 영역

    배치되는

    섹션 이름

    세그먼트 유형

    재배치 특성

    배치

    1

    함수

    @ @ CODE

    CSEG

    BASE

    000CEh ~ 0FFFFh

    2

    라이브러리 함수

    @ @ LCODE

    CSEG

    BASE

    000CEh ~ 0FFFFh

    3

    값을 변경하지 정적 변수

    @ @ CNST

    CSEG

    MIRRORP

    미러 영역에 미러되는 ROM

    4

    초기 값이없는 정적 변수

    @ @ DATA

    DSEG

    BASEP

    saddr 영역을 제외한 내장 RAM

    5

    초기 값의 정적 변수

    @ @ INIT

    DSEG

    BASEP

    saddr 영역을 제외한 내장 RAM

    6

    초기 값의 정적 변수의 초기

    @ @ R_INIT

    CSEG

    UNIT64KP

    64K 경계를が않는 ROM

     

     

    far 영역 배치 C 프로그램이 사용하는 메모리 영역

    배치되는

    섹션 이름

    세그먼트 유형

    재배치 특성

    배치

    1

    함수

    @ @ CODEL

    CSEG

    -

    2

    라이브러리

    함수

    @ @ LCODEL

    CSEG

    -

    3

    값을

    변경하지 정적 변수

    @ @ CNSTL

    CSEG

    PAGE64KP

    64K 경계를が않는 ROM

    4

    초기 값이없는 정적 변수

    @ @ DATAL

    DSEG

    UNIT64KP

    64K 경계를が않는 RAM

    5

    초기 값의 정적 변수

    @ @ INITL

    DSEG

    UNIT64KP

    64K 경계를が않는 RAM

    6

    초기 값있는 정적 변수의 초기

    @ @ RLINIT

    CSEG

    UNIT64KP

    64K 경계를が않는 ROM

     

     

    saddr 공간 배치의 C 프로그램이 사용하는 메모리 영역

    배치되는

    섹션 이름

    세그먼트 유형

    재배치 특성

    배치

    1

    초기 값없이 sreg 변수

    @ @ DATS

    DSEG

    SADDRP

    saddr 영역

    2

    초기 값이 sreg 변수

    @ @ INIS

    DSEG

    SADDRP

    saddr 영역

    3

    초기 값이 sreg 변수의 초기

    @ @ R_INIS

    CSEG

    UNIT64KP

    64K 경계를が않는 ROM

    4

    bit 변수

    @ @ BITS

    BSEG

    -

    saddr 영역

     

     

    다른 C 프로그램이 사용하는 메모리 영역

    배치되는

    섹션 이름

    세그먼트 유형

    재배치 특성

    배치

    1

    callt 함수 테이블

    @ @ CALT

    CSEG

    CALLT0

    callt 테이블 영역

    2

    인터럽트 함수 c allt 함수

    @ @ BASE

    CSEG

    BASE

    000CEh ~ 0FFFFh

    3

    벡터 테이블

    @ @ VECTnn

    CSEG

    AT 00mmH

    고정 영역

     

     

    섹션 구성 RL78 패밀리 컴파일러가 사용하는 섹션 구성 (기본) 목록을 보여줍니다. 링크의 링크 지시어는 섹션 단위로 번지 지정을 실시하기 때문에, C 언어 소스 프로그램과 섹션의 관계는 이해해야합니다.

     

     

    소스 프로그램 컴파일 결과

     

     

    함수 섹션 이름

    near 공간 배치의 함수는 섹션 이름 "@ @ CODE" 할당합니다. 섹션 "@ @ CODE"세그먼트 유형은 "CSEG"재배치 속성은 "BASE"입니다. far 공간 배치의 함수는 섹션 이름 "@ @ CODEL" 할당합니다. 섹션 "@ @ CODEL"세그먼트 유형은 "CSEG"입니다.

     

    라이브러리 함수 섹션 이름

    near 공간 배치의 라이브러리 함수는 섹션 이름 "@ @ LCODE" 할당합니다. far 공간 배치의 라이브러리 함수는 섹션 이름 "@ @ LCODEL" 할당합니다.

     

    * : 정렬 조건을 조정하기 위해 사용하지 않는 영역

     

     

    값을 변경하지 정적 변수 섹션 이름

    near 영역 배치의 값을 변경하지 정적 변수는 섹션 이름 "@ @ CNST" 할당합니다. 섹션 "@ @ CNST"세그먼트 유형은 "CSEG"재배치 속성은 "MIRRORP"입니다. far 공간 배치의 값을 변경하지 정적 변수는 섹션 이름 "@ @ CNSTL" 할당합니다. 섹션 "@ @ CNSTL"세그먼트 유형은 "CSEG"재배치 속성은 "PAGE64KP"입니다.

     

    초기 값없이 정적 변수 섹션 이름

    near 공간 배치의 초기 값없이 정적 변수는 섹션 이름 "@ @ DATA" 할당합니다. 섹션 "@ @ DATA"세그먼트 유형은 "DSEG"재배치 속성은 "BASEP"입니다. far 공간 배치의 초기 값없이 정적 변수는 섹션 이름 "@ @ DATAL" 할당합니다. 섹션 "@ @ DATAL"세그먼트 유형은 "DSEG"재배치 속성은 "UNIT64KP"입니다.

     

     

     

     

     

     

     

     

    소스 프로그램 컴파일 결과

     

    * : 정렬 조건을 조정하기 위해 사용하지 않는 영역

     

    초기 값이 정적 변수 섹션 이름

    near 영역 배치 값을 초기 값이 정적 변수는 섹션 이름 "@ @ INIT" 할당합니다. 섹션 "@ @ INIT"세그먼트 유형은 "DSEG"재배치 속성은 "BASEP"입니다. far 공간 배치의 초기 값이 정적 변수는 섹션 이름 "@ @ INITL" 할당합니다. 섹션 "@ @ INITL"세그먼트 유형은 "DSEG"재배치 속성은 "UNIT64KP"입니다.

    초기 값이 정적 변수의 초기 값의 섹션 이름

    near 공간 배치의 초기 값이 정적 변수의 초기 값은 섹션 이름 "@ @ R_INIT" 할당합니다. 섹션 "@ @ R_INIT"세그먼트 유형은 "CSEG"재배치 속성은 "UNIT64KP"입니다. far 공간 배치의 초기 값이 정적 변수의 초기 값은 섹션 이름 "@ @ RLINIT" 할당합니다. 섹션 "@ @ RLINIT"세그먼트 유형은 "CSEG"재배치 속성은 "UNIT64KP"입니다.

     

     

     

     

     

    소스 프로그램 컴파일 결과

    ·  sreg / __sreg 선언 정적 변수는 saddr 영역에 자주 나타납니다.

    ·  saddr 영역에 대한 명령은 일반적으로 메모리에 대한 명령보다 짧은 코드 효율이 향상됩니다.

    ·  saddr 영역 FFE20H ~ FFEB3H (148 바이트) 배치 가능합니다.

     

     

    sreg / __sreg 선언

    sreg 선언 또는 __sreg 선언 외부 변수 함수에 static 변수 (이하 sreg 변수라고 부른다) saddr 영역에 할당합니다. saddr 영역에 대한 명령은 일반적으로 메모리에 대한 명령보다 짧은 코드 효율성을 향상시킬 있습니다.

    또한 saddr 영역 FFE20H ~ FFEB3H까지 148 바이트입니다. 이러한 영역을 초과하는 경우 컴파일 오류가 발생합니다.

    【작성 방법】 sreg 형명 변수 이름 / sreg static 형명 변수 이름 __sreg 형명 변수 이름 / __ sreg static 형명 변수 이름 extern sreg 형명 변수 이름 / extern __ sreg 형명 변수

     

     

    【제한 사항】

    • const , 또는 함수에 sreg / __sreg 지정한 경우 경고 메시지를 출력하고 sreg 선언을 무시합니다. • "ANSI-C 언어 사양 허용"옵션 (-za) 지정시는 __sreg에만 유효합니다.  • 2 바이트 크기의 변수의 경우 1로드 모듈 74 개까지 사용할 있습니다. 그러나 bit, boolean

    변수를 사용하는 경우 사용할 수있는 개수는 줄어 듭니다.

     

     

     

     

     

     

     

     

     

     

     

    소스 프로그램 컴파일 결과

     

    * :정렬 조건을 조정하기 위해 사용하지 않는 영역

     

     

    초기 값없이 sreg 변수 섹션 이름

    초기 값없이 sreg 변수는 섹션 이름 "@ @ DATS" 할당합니다. 섹션 "@ @ DATS"세그먼트 유형은 "DSEG"재배치 속성은 "SADDRP"입니다.

     

    초기 값이 sreg 변수 섹션 이름

    초기 값이 sreg 변수는 섹션 이름 "@ @ INIS" 할당합니다. 섹션 "@ @ INIS"세그먼트 유형은 "DSEG"재배치 속성은 "SADDRP"입니다.

     

    초기 값이 sreg 변수의 초기 값의 섹션 이름

    초기 값이 sreg 변수의 초기 값은 섹션 이름 "@ @ R_INIS" 할당합니다. 섹션 "@ @ R_INIS"세그먼트 유형은 "CSEG"재배치 속성은 "UNIT64KP"입니다.


    saddr 영역의 자동 할당 옵션 전항에서 소개 sreg 변수는 함수 static 변수이면 "static 변수를 saddr 영역에 할당"옵션 (-rs) 외부 변수 함수 외부 static 변수 경우 "외부 변수 saddr 영역에 할당 "옵션 (-rd) 의해 자동으로 saddr 영역에 할당 있습니다.

     

    소스 프로그램 컴파일 결과

     

    ·  bit / boolean 변수는 1 비트의 데이터로 간주, saddr 영역에 배치됩니다.

    ·  bit / boolean 변수는 초기 값없이 외부 변수처럼 취급합니다.

    · 비트 변수에 컴파일러는 비트 조작 명령을 출력합니다. · 정수 sreg 변수 (배열 요소, 구조체 제외) 자동으로 bit 변수로 사용할 있습니다.

     

     

    bit 변수 (bit), boolean 변수 (boolean / __boolean)

    bit / boolean / __boolean 변수는 1 비트의 데이터 (이하, bit 변수라고 부른다) 다루어 saddr 영역에 배치됩니다. 이러한 bit 변수는 초기 값없이 외부 변수처럼 취급 원하는 bit 변수에 컴파일러는 비트 조작 명령을 출력합니다. 또한 페이지까지 소개 sreg 변수 (배열의 요소 구조는 제외) 자동으로 bit 변수로 사용할 있습니다.

     

    【작성 방법】

    bit 변수 이름 / boolean 변수 이름 / __ boolean 변수 이름 extern bit 변수 이름 / extern boolean 변수 이름 / extern __ boolean 변수 이름 변수 이름. n (n 0 ~ 31, n 값은 형태에 따라 달라집니다)

     

    【제한 사항】

    배열 요소, 구조체 / 공용체의 멤버 함수의 인수, 자동 변수의 형식으로 사용할 없습니다.  

    초기 값이하고 선언 없습니다. 또한 주소 참조, sizeof 연산을 수행 없습니다.

    • "ANSI-C 언어 사양 허용"옵션 (-za) 지정시는 __boolean에만 유효합니다.  

    • bit 변수 1로드 모듈 昀大1184 개까지 사용할 있습니다. 그러나 sreg 변수를 사용했을 경우와 "saddr 공간 할당"옵션 (-rs-rd) 지정하면 사용 가능한 개수가 줄어 듭니다.

     

    bit 변수 섹션 이름 bit 변수는 섹션 이름 "@ @ BITS" 할당합니다. 섹션 "@ @ BITS"세그먼트 유형은 "BSEG"입니다.

     

    # pragma section 컴파일러 출력 섹션 이름 변경 섹션 이름 [AT 시작 주소]

    컴파일러 출력 섹션 이름 변경 시작 주소를 지정합니다.

    시작 주소를 생략하면 기본 배치됩니다.

    컴파일러 출력 섹션 이름과 기본 배치는 1.5.2 항을 참조하십시오.

    시작 주소는 생략하고 링크 지정할 있습니다.

     

    1 # pragma section @ @ CODE? CODE / / @ @ CODE 섹션을? CODE 변경

    __near void sub​​(void){}

     

    2 # pragma section @ @ DATA? DATA AT 0xFED00 / / @ @ DATA 섹션 ? DATA 변경

    __near int na; // 0xFED00 번지에 위치

    # pragma section @ @ DATA @ @ DATA/ / 이후는 기본 설정으로 복원

    __near int nb; // @ @ DATA 섹션에 배치

     

     

    3 # pragma section @ @ INIT ABC / / @ @ INIT 섹션을 ABC 변경

    __near int nc = 1;/ / 그러나 @ @ R_INIT 그대로

    # pragma section @ @ INIT XYZ/ / @ @ INIT 섹션을 XYZ 변경

    # pragma section @ @ R_INIT VW/ / @ @ R_INIT 섹션도 VW 변경

    __near int nd = 2;

     

     

    # pragma section으로 섹션 이름 변경

    컴파일러가 기본적으로 사용하는 섹션 이름은 # pragmasection 따라 변경 가능합니다.

    단순히 "변경하려는 컴파일러 출력 섹션 이름" "수정 부분 이름" 지정합니다.

    또한, 시작 주소 지정은 선택적이며 생략했을 때는 2 장의 링크 지시어 결정합니다. 다음 # pragma section 사용할 때의주의 사항을 언급한다.

     

    • # pragma 지시자는 C 언어 소스 위에합니다.  

    그러나 다음은 # pragma 지령 전에 설명 있습니다.

    - 댓글 - 전처리 지침 변수의 정의 / 참조 함수의 정의 / 참조를 생성하지 않습니다  

    • # pragma 지시문이 작성된 이후에 데이터를 작성하는 경우, 데이터를 변경 섹션에 배치합니다.  

    다시 변경 지령도 가능하며, 변경 지령 이후에 데이터를 작성하는 경우, 데이터를 다시 변경 섹션에 배치합니다.

     • 이전에 정의 데이터를 변경 다시 정의하면 다시 변경된 섹션에 배치합니다.

     • # pragma 이후 설명하는 키워드 컴파일러 출력 섹션 이름은 반드시 대문자로하십시오.

     • section, AT 대문자 소문자도 대소 문자 혼합으로 작성할 있습니다.  

    변경 섹션 이름의 형식은 어셈블러의 사양을 준수합니다 (세그먼트 이름은 8 자까지 가능).  

    시작 주소는 C 언어의 16 진수 어셈블러의 16 진수에만 적용 있습니다.  

     

    () 시작 샘플 프로그램과의 관계 초기 값의 정적 변수 섹션 이름을 변경하기 때문에 있으면

    변수 / 기본값 함께 섹션 이름을 변경하는 것을 권장합니다. 이유는 2 장의 샘플에서는 초기 값을 복사와 대상 섹션 이름을 1 1 결정되기 때문입니다.

     

     

     

    # pragma section 예제

     

    __near 공간 배치의 함수 섹션 이름

    # pragmasection __near 공간 배치의 함수 섹션 이름을 변경 것입니다. 컴파일 결과의 번째 행이 나타내는대로, sub 함수는 섹션 이름 "? CODE" 할당됩니다.

     

    __near 공간 배치의 초기 값이없는 변수 섹션 이름

    4 번째 줄의 # pragmasection __near 공간 배치의 초기 값이없는 변수 섹션 이름을 변경 묘비 주소 지정도 것입니다. 컴파일 결과 4 번째 줄에서 있듯이 변수 na 시작 주소 "0FED00h"섹션 이름 "? DATA" 할당됩니다.

    그러나 6 번째 줄의 # pragma section으로 __near 공간 배치의 초기 값이없는 변수는 기본 섹션에 다시 있기 때문에 변수 nb 기본 할당됩니다.

     

    __near 공간 배치의 초기 값이있는 변수 섹션 이름

    초기 값의 정적 변수는 섹션에 할당됩니다. 9 번째 줄의 # pragma section __near 공간 배치의 변수 섹션 이름을 변경 것입니다. 따라서 컴파일 결과 10 번째 줄에서 있듯이 변수 nc 할당 섹션 이름은 "ABC" 변경이됩니다 , 초기 값을 할당 섹션 이름은 컴파일 결과 13 행에서 있듯이, 기본값 "@ @ R_INIT"입니다.

    한편, 11 번째 줄에서 12 번째 줄의 # pragmasection에서 변수 할당 섹션 이름과 함께 초기 섹션 이름도 수정하고 있습니다. 따라서 컴파일 결과 16 번째 줄과 19 번째 줄에서 있듯이 변수 섹션 이름은 "XYZ"초기 섹션 이름은 "VW"입니다.

     

    1.5.3 매크로 이름

    매크로 이름 목록

    매크로 이름

    정의

    __LINE__

    시점에서 소스 번호 (10 진수)

    __ FILE__

    지정된 소스 파일의 이름 (문자열 상수)

    __ DATE__

    소스 파일의 번역 날짜 ( "M mm dd yyyy "형식을 가진 문자열 상수 여기서 이름은 ANSI 규격에서 규정 a sctime 함수로 생성되는 (영문자 3 줄로昀初 1 문자 대문자) 동일 . dd昀初문자 값이 10보다 작은 경우 공백합니다)

    __ TIME__

    소스 파일의 번역 시간 (as ctime 함수로 생성되는 시간과 같은 "hh : mm : ss" 형식을 가지는 문자 상수)

    __ STDC__

    10 진수 정수 1 (ANSI 정확한 처리를 지정할 정의)*

    __ K0R__

    10 진수 정수 1

    __ K0R_SMALL__

    10 진수 정수 1 (소형 모델 지정시)

    __ K0R_MEDIUM__

    10 진수 정수 1 (미디엄 모델 지정시)

    __ K0R_LARGE__

    10 진수 정수 1 (대형 모델 지정시)

    __ CHAR_UNSIGNED__

    10 진수 정수 1 (-qu 옵션을 지정한 경우 정의)

    __ RL78__

    10 진수 정수 1 (RL78 패밀리 장치 유형 지정시)

    __ RL78_1__

    10 진수 정수 1 (곱셈과 나눗셈 적화확장 명령어 탑재의 RL78 패밀리 장치 유형 지정시)

    __ RL78_2__

    10 진수 정수 1 (곱셈과 나눗셈 일본 재래의 주산 확장 명령 탑재의 R L78 제품군의 디바이스 유형 지정시)

    __ CA78K0R__

    10 진수 정수 1

    CPU 매크로

    타겟 CP U 나타내는 매크로 에서 10 진수 정수 1 장치 파일의 "품종 지정 이름"으로 표시되는 문자열의 앞에 "__" 끝에 "_" 붙인 것이 정의됩니다 (영문자는 대문자로하십시오)

    【주】 * ANSI-C 언어 사양 허용-za 옵션 지정시에 정의합니다

    매크로 이름 목록 RL78 패밀리 컴파일러는 ANSI 규격에 규정되어있는 매크로 이름 이외에 옵션 지정에 따라 매크로 이름이 ​​정의됩니다. 프로그램 속에서 옵션 설정을 판단 사용합니다.

     

     

     

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

RL78 컴파일러 사용 7  (0) 2013.04.05
RL78 컴파일러 사용 6  (0) 2013.04.05
RL78 컴파일러 사용 4  (0) 2013.04.05
RL78 컴파일러 사용 3  (0) 2013.04.05
RL78 컴파일러 사용 2  (0) 2013.04.05

+ Recent posts