- | デバイスのaddi,mulhi命令は次の形式です。 |
- | immに次のものを指定した場合,アセンブラでは,命令展開が行われ,複数個の機械語命令が生成されます。 |
(a) | -32768~+32767の範囲を越える絶対値式 |
reg2がr0の場合(addiでのみ指定できます。mulhiではエラーになります。)
|
|
addi imm, reg1, r0
|
movhi HIGHW(imm), r0, r1
add reg1, r1
|
reg1=reg2の場合
|
|
addi imm, reg1, reg2
|
movhi HIGHW(imm), r0, r1
add r1, reg2
|
上記以外の場合
|
|
addi imm, reg1, reg2
|
movhi HIGHW(imm), r0, reg2
add reg1, reg2
|
reg2がr0の場合(addiでのみ指定できます。mulhiではエラーになります。)
|
|
addi imm, reg1, r0
|
mov imm, r1
add reg1, r1
|
reg1=reg2の場合
|
|
addi imm, reg1, reg2
|
mov imm, r1
add r1, reg2
|
上記以外の場合
|
|
addi imm, reg1, reg2
|
mov imm, reg2
add reg1, reg2
|
(b) | #label,またはlabelを持つ相対値式,およびsdata/sbss属性セクションに定義を持たないラベルの$labelを持つ相対値式 |
reg2がr0の場合(addiでのみ指定できます。mulhiではエラーになります。)
|
|
addi #label, reg1, r0
|
mov #label, r1
add reg1, r1
|
addi label, reg1, r0
|
mov label, r1
add reg1, r1
|
addi $label, reg1, r0
|
mov $label, r1
add reg1, r1
|
reg1=reg2の場合
|
|
addi #label, reg1, reg2
|
mov #label, r1
add r1, reg2
|
addi label, reg1, reg2
|
mov label, r1
add r1, reg2
|
addi $label, reg1, reg2
|
mov $label, r1
add r1, reg2
|
上記以外の場合
|
|
addi #label, reg1, reg2
|
mov #label, reg2
add reg1, reg2
|
addi label, reg1, reg2
|
mov label, reg2
add reg1, reg2
|
addi $label, reg1, reg2
|
mov $label, reg2
add reg1, reg2
|