4.2.5 キーワードの使用方法

この項では、下記のキーワードの使用方法について説明します。

-

指定サイズのアクセス記述

(1)

指定サイズのアクセス記述

__evenaccess <型指定子> <変数名>
<型指定子> __evenaccess <変数名>

 

宣言または定義したサイズで変数をアクセスします。

変数の型のサイズでアクセスすることを保証します。

保証対象サイズは、4バイト以下の整数スカラ型(signed char, unsigned char, signed short, unsigned short, signed int, unsigned int, signed long, unsigned long)です。

 

Cソース

#pragma address A=0xff0178
unsigned long __evenaccess A;
void test(void)
{
    A &= ~0x20;
}

 

出力コード(__evenaccess 非指定時)

_test:
 MOV.L #16712056,R1
 BCLR #5,[R1]         ; 1バイトメモリアクセス
 RTS

 

出力コード(__evenaccess 指定時)

_test:
 MOV.L #16712056,R1
 MOV.L [R1],R5         ; 4バイトメモリアクセス
 BCLR  #5,R5
 MOV.L R5,[ R1]         ; 4バイトメモリアクセス
 RTS

 

構造体や共用体単位でアクセスする場合は、__evenaccessの指定は無効です。

構造体または共用体に指定した場合、全てのメンバに__evenaccessを指定したのと同じ効果になります。その場合、4バイト以下の整数スカラ型メンバのアクセスサイズは保証しますが、構造体または共用体単位でのアクセスサイズは保証しません。