• 検索結果がありません。

SH-2A、SH2A-FPU

6. 各命令の説明

6.1 新規命令の概要

SH-2A/SH2A-FPU

では、SH2Eの

CPU

命令(最上位

4

ビットが

0000~1110

の命令コード)と

SH4

FPU

命令(最上位

4

ビットが

1111

の命令コード)に割り当てた命令コード以外の空いている箇所 に新規命令を追加しています。ただし、SH4の

FPU

命令である、(a) XDm/XDnを指定する

FMOV

命 令と(b)FRCHG命令と(c) FIPR、FTRV命令については、サポートしていません。

本章では、その新規命令の各々について、詳しく説明します。

0000···

SH-2A

1110···

1111···

CPU๮઎

㧔SH2E㧗ᣂⷙ๮઎㧕

FPU๮઎

㧔abcએᄖߩSH4㧕

新規命令は下記(1)~(14)です。(1)~(3)は、32ビット固定長命令、(4)~(14)は、16ビット固定長命 令です。

(1)

イミディエイト転送命令

MOVI20, MOVI20S

命令コード内の

20

ビットイミディエイトデータをレジスタに転送する命令です。本命令との組み 合わせで、

28

ビットアドレスを容易に生成できるため、最大

256M

バイトまでオンチップメモリのア ドレスを指定することが可能となります。

(2)

構造体アクセス用命令

MOV.B/W/L Rm,@(disp12, Rn), MOV.B/W/L @(disp12, Rm), Rn MOVU.B/W @(disp12, Rm), Rn

FMOV.S FRm, @(disp12, Rn), FMOV.S @(disp12, Rm), FRn FMOV.D DRm, @(disp12, Rn), FMOV.D @(disp12, Rm), DRn

命令コードの中に配置した

12

ビットのディスプレースメントを指定してメモリを参照する命令で す。また、ゼロ拡張の実行を自動的に行う、符号なしロード命令

MOVU

を追加しています。

(3)

ビット操作命令(メモリ対象)

BAND.B #imm3, @(disp12, Rn), BOR.B #imm3, @(disp12,Rn) BCLR.B #imm3, @(disp12, Rn), BSET.B #imm3, @(disp12, Rn) BST.B #imm3, @(disp12, Rn), BLD.B #imm3, @(disp12, Rn) BXOR.B #imm3, @(disp12, Rn)

BANDNOT.B #imm3, @(disp12, Rn), BORNOT.B #imm3, @(disp12,Rn) BLDNOT.B #imm3, @(disp12, Rn)

BAND.B

命令と

BOR.B

命令と

BXOR.B

命令は、メモリ中の1ビットと

T

ビットとの論理演算を行

6.

各命令の説明

Rev.4.00 2011.02.22 6-2 R01US0031JJ0400

SH-2A、SH2A-FPU

い、その結果を

T

ビットに格納する命令です。BCLR.B命令と

BSET.B

命令は、メモリ中の

1

ビット を操作する命令です。BST.B命令と

BLD.B

命令は、メモリ中の

1

ビットと

T

ビット間の転送を実行 する命令です。

また、BANDNOT.B命令と

BORNOT.B

命令は、メモリ中の

1

ビットを反転した値と

T

ビットとの 論理演算を行い、その結果を

T

ビットに格納する命令です。

BLDNOT.B

命令は、メモリ中の

1

ビットを反転し

T

ビットに格納する命令です。

指定されたビット以外は影響を受けません。

(4)

ビット操作命令(汎用レジスタ対象)

BCLR #imm3, Rn, BSET #imm3, Rn BST #imm3, Rn , BLD #imm3, Rn

BCLR

命令とBSET命令は、汎用レジスタ

Rn

のLSB側

8

ビット中の1ビットを操作する命令です。

BST

命令と

BLD

命令は、汎用レジスタ

Rn

LSB

8

ビット中の1ビットと

T

ビット間の転送を実 行する命令です。指定されたビット以外は影響を受けません。

(5)

乗算結果

Rn

格納命令

MULR

32

ビット×32ビットの乗算を行い、乗算結果の下位

32

ビットを汎用レジスタ

Rn

に格納する命令 です。

(6)

一括除算命令

DIVS, DIVU

32

ビット÷32ビットの除算を一括で行う命令です。

DIVU

命令は無符号のデータを除算する命令、

DIVS

命令は符号付きのデータを除算する命令です。

(7)

飽和値比較命令

CLIPS, CLIPU

飽和値との比較を行い、汎用レジスタ

Rn

が飽和上限値を上回るときは飽和上限値を、飽和下限値 を下回るときは飽和下限値を、汎用レジスタ

Rn

に格納します。なお、バイト、ワードの飽和値のみ をサポートしています。

(8)

バレルシフト命令

SHAD, SHLD

任意のビットをシフトする命令です。算術シフトと論理シフトの

2

種類の命令を用意しています。

(9)

複数レジスタ退避・復帰命令

MOVML, MOVMU

複数の連続したレジスタをメモリへ退避する、あるいはメモリから復帰する命令です。汎用レジ スタ

Rn

を指定し、指定した

Rn

より上位もしくは下位の連続した汎用レジスタの退避や復帰をする ことが可能となります。

(10) T

ビット反転転送命令

MOVRT, NOTT

T

ビットを反転して汎用レジスタ

Rn

あるいは

T

ビットに転送する命令です。

(11)

レジスタバンク関連命令

RESBANK, STBANK, LDBANK

割り込み処理の高速化のために搭載した、レジスタバンクに関する命令です。

6.

各命令の説明

Rev.4.00 2011.02.22 6-3 R01US0031JJ0400 SH-2A、SH2A-FPU

(12)

逆スタック転送命令

MOV.B/W/L

スタックの伸長する方向が逆である転送命令です。

(13)

遅延スロットなし無条件分岐命令

JSR/N, RTS/N

不要な

NOP

命令の削減によりコードサイズを削減するため、遅延スロットを持たない命令を提供 しています。

(14)

キャッシュ関連命令

PREF

SH3-DSP

のキャッシュ関連命令を提供しています。

6.

各命令の説明

Rev.4.00 2011.02.22 6-4 R01US0031JJ0400

SH-2A、SH2A-FPU

関連したドキュメント