A.3.2 C言語でCPU命令を使用する

制御レジスタへアクセスする場合やC言語で表現できない特殊命令に関しては、組込み関数を提供しています。

-

最大値、最小値

-

データ内バイト入れ替え

-

データ交換

-

積和演算

-

回転

-

特殊命令(BRK, WAIT, INT, NOP)

-

BRK、WAITなどのRXファミリ用特殊命令

-

制御レジスタ設定、参照

表 A.2

組込み関数の一覧

機能

仕様

signed long max(signed long data1, signed long data2)

最大値の選択

signed long min(signed long data1, signed long data2)

最小値の選択

unsigned long revl(unsigned long data)

ロングワードデータをバイトリバース

unsigned long revw(unsigned long data)

ロングワードデータをワード毎にバイトリバース

void xchg(signed long *data1, signed long *data2)

データ交換

long long rmpab(long long init, unsigned long count, signed

char *addr1, signed char *addr2)

積和演算(バイト)

long long rmpaw(long long init, unsigned long count, short

*addr1, short *addr2)

積和演算(ワード)

long long rmpal(long long init, unsigned long count, long

*addr1, long *addr2)

積和演算(ロングワード)

unsigned long rolc(unsigned long data)

キャリーを含めて1ビット左回転

unsigned long rorc(unsigned long data)

キャリーを含めて1ビット右回転

unsigned long rotl(unsigned long data, unsigned long num)

左回転

unsigned long rotr (unsigned long data, unsigned long num)

右回転

void brk(void)

BRK命令例外

void int_exception(signed long num)

INT命令例外

void wait(void)

プログラム実行停止

void nop(void)

NOP命令に展開

void set_ipl(signed long level)

割り込み優先レベルの設定

unsigned char get_ipl(void)

割り込み優先レベルの参照

void set_psw(unsigned long data)

PSWの設定

unsigned long get_psw(void)

PSWの参照

void set_fpsw(unsigned long data)

FPSWの設定

unsigned long get_fpsw(void)

FPSWの参照

void set_usp(void *data)

USPの設定

void *get_usp(void)

USPの参照

void set_isp(void *data)

ISPの設定

void *get_isp(void)

ISPの参照

void set_intb(void *data)

INTBの設定

void *get_intb(void)

INTBの参照

void set_bpsw(unsigned long data)

BPSWの設定

unsigned long get_bpsw(void)

BPSWの参照

void set_bpc(void *data)

BPCの設定

void *get_bpc(void)

BPCの参照

void set_fintv(void *data)

FINTVの設定

void *get_fintv(void)

FINTVの参照

signed long long emul(signed long, signed long)

有効桁64bitの符号付き乗算

unsigned long long emulu(unsigned long, unsigned long)

有効桁64bitの符号なし乗算