【データ型】
MPLAB C32が扱うデータはリトルエンディアンですので
メモリへの格納は下位バイトからアドレス順に上位へと格納されます。
たとえば0x12345678という値はメモリアドレス順に
0x78、0x56、0x34、0x12 と格納されます。
MPALB C32で扱えるデータ型は下記となります。
型 名 ビット幅 最小値 最大値 char
singned char8 -128 127 unsigned char 8 0 255 short
signed short16 -32768 32767 unsigned short 16 0 65535 int
signed int
long
signed long32 -231 231-1 unsigned int
unsigned long32 -231 232-1 long long
signed long long64 -263 263-1 unsigned long long 64 0 264-1 float 32 double 64 long double 64
【アトリビュート】
MPLAB C32には数多くのアトリビュートがあり、関数やデータの
特性の修飾をすることができます。代表的なアトリビュートには
下表のようなものがあります。
《関数のアトリビュート》
Attribute 修飾機能 far
longcall28ビットアドレスを使った直接CALL命令を使う near 絶対アドレスのCALLを呼び出されるようにする mips16 16ビット命令を使う nomips16 32ビット命令を使う interrupt
vector割り込み処理関数とする
指定ベクタにジャンプ命令を生成するsection ("name") nameのセクションに関数を配置する
《変数のアトリビュート》
Attribute 修飾機能 aligned (n) データを次のnバイトの境界から配置する packed 構造体を最小サイズの大きさで配置する section ("name") 変数をnameセクションに配置する
【Pragma】
MPLAB C32には拡張記述として下記3種のPragmaが用意されています。
@ #pragma interrupt
指定した関数を割り込みハンドラとして扱うよう指定する
A #pragma vector
指定したベクタに指定した関数へのジャンプ命令を生成する
B #pragma config
コンフィギュレーション指定
【マクロ】
よく使うアトリビュートに対しては下記のマクロが用意されています。
マクロ 機能 __section__(s) セクション名sをアトリビュートとすて適用する __ramfunc__ RAM上の関数として指定する __longramfunc__ longcallアトリビュートのRAM上の関数として指定する __longcall__ longcallアトリビュートを適用する __ISR(v, ipl) interruptアトリビュートを割り込みレベルiplとして適用する
vectorアトリビュートをベクタ番号vとして適用する