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