メーリングリストに回ってきた仕様で、なんか変わった仕様があるなと思ったのでメモ。
64ビットのメモリアクセスの命令は、RV32だと当然存在していないのだが、それを無理やり定義する拡張がある。 Zilsd & Zclsdという仕様らしい。
- Load/Store pair instructions (Zilsd)
- Compressed Load/Store pair instructions (Zclsd)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/m/msyksphinz/20241116/20241116014045.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/m/msyksphinz/20241116/20241116014101.png)
例えば、ld
命令は、書き込み先は x[dest]
と x[dest+1]
(destは偶数レジスタ番号でなければならない) に対してロードした値を書き込む。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/m/msyksphinz/20241116/20241116014253.png)
ちなみに、浮動小数点命令の場合は、RV32であってもD拡張を挿入することができるので、このような拡張は必要ない。