... | ... | @@ -168,6 +168,8 @@ MIPSはビッグエンディアンなので、これとは異なった挙動を |
|
|
|
|
|
命令語中で即値が書かれている場所が二か所に分離していますが、合わせて一つの即値を定義しています。これはソースレジスタ番号の指定を命令語中の同一箇所で行うことでプロセッサを高速化することが目的です。プロセッサの構成を考えてみると、レジスタの番号は即値よりも早く必要になります。そのため、即値のビット列の並び替えには時間的余裕があり、少し複雑化してもよいだろうという発想になっています。
|
|
|
|
|
|
`SB`, `SH`命令についてはメモリの4の倍数以外の番地に対して行われることもあるので注意しましょう。
|
|
|
|
|
|
### LB, LBU, LH, LHU, LW
|
|
|
|
|
|
それぞれ、Load Byte、Load Byte Unsigned、Load Half word、Load Half word Unsigned、Load Wordの略です。
|
... | ... | @@ -184,6 +186,7 @@ rs1番のレジスタの値を読み込み、メモリアドレス`rs1+imm`か |
|
|
* `LHU`命令を実行するとrd番のレジスタに0x0000abcdが書き込まれます。
|
|
|
* `LW`命令を実行するとrd番のレジスタに0x1234abcdが書き込まれます。
|
|
|
|
|
|
`LB`, `LBU`, `LH`, `LHU`命令についてはメモリの4の倍数以外の番地に対して行われることもあるので注意しましょう。
|
|
|
|
|
|
|
|
|
## おまけ (RV32M)
|
... | ... | |