かつてWestern Digitalが開発していて、今はChipsAllianceに管理が移っているWhisper(VeeR-ISS)がかなり使いやすくなっていたのでメモ。 使い勝手としてはSpikeに近くなって、Linuxユーザモード向けのプログラムとかもかなり動かしやすくなっている。
hello.cpp
#include <iostream> int main () { std::cout << "Hello World\n"; return 0; }
riscv64-unknown-linux-gnu-g++ hello.cpp -o hello -static
- Whisperでの実行:
$ ../whisper/build-Linux/whisper hello
Warning: Write mask of CSR VSTART changed to 0x7f to be compatible with VLEN=128 Hello World Target program exited with code 0 Retired 55382 instructions in 0.00s 15508821 inst/s
これくらいの簡単なプログラムであればサクッと実行してくれる。Linux Userモード向けのバイナリを作るときは-static
で全部入りのものを作っておくこと。
ファイルの扱いとかもちゃんと処理してくれる:
#include <iostream> #include <fstream> int main () { std::cout << "Hello World\n"; std::ofstream wr_fp; wr_fp.open("sample.txt", std::ios::out); std::string writing_text = "Hello World\n"; wr_fp << writing_text << std::endl; wr_fp.close(); return 0; }
$ ../whisper/build-Linux/whisper hello >& /dev/null $ cat sample.txt
Hello World
過去にWhisperをちょっと試した記事はこちら: