FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Rust

RustでRISC-V命令セットシミュレータを作ろう (17. マクロの導入)

Rustで作る自作命令セットシミュレータの続き。アトミック命令をすべて実装したのはいいが、同じような記述を大量に並べてしまっておりどうも気持ちが悪い。 AMOADD.Wの実装 fn execute_amoadd_w (&mut self, inst: InstT) { let rs1 = Self::get_rs1_addr(i…

RustでRISC-V命令セットシミュレータを作ろう (16. アトミック命令の実装)

Rustで作る自作命令セットシミュレータの続き。残りの命令を実装していく。次はアトミック命令の実装だ。これもC++で実装したことがあるのでRustに移植するだけである。 Rustでの実装で気をつけなければならないのは型の変換を明示的に行わなければならない…

RustでRISC-V命令セットシミュレータを作ろう (15. flamegraphによる性能解析)

Rustで作る自作命令セットシミュレータの続き。テストパタンによってはシミュレーションにかなり時間がかかっているような気がするので、どこに負荷がかかっているのかを解析したい。 色々調べていると、Rustで書いたプログラムの性能解析としてFlamegraphと…

RustでRISC-V命令セットシミュレータを作ろう (14. リグレッションテストの全確認)

Rustで作る自作命令セットシミュレータの続き。RV32とRV64でテストはある程度動くようになっているので、ここらでリグレッションテストを通して細かいところを修正していこうと思う。 Rust実装の修正 RV32とRV64で微妙に動作が異なる部分 例えばシフト命令の…

RustでRISC-V命令セットシミュレータを作ろう (13. RV32仮想アドレスモードの実装)

Rustで作る自作命令セットシミュレータの続き。RV32のテストは動くようになってきたので、次はRV32の仮想アドレスモードの対応について考える。 これも昔作ったC++のRISC-Vシミュレータですでに対応しているので簡単なのだが、いくつかRV32とRV64で切り替え…

RustでRISC-V命令セットシミュレータを作ろう (12. RV32機能の実装)

Rustで自作命令セットシミュレータを作っているが、RV64のテストパタンはある程度Passできるようになっている。 RV32についてだが、これまではRV32とRV64を別のクラスとして実装していた。しかしどうもこれでは冗長なコードがあってたまらないので、統一して…

RustでRISC-V命令セットシミュレータを作ろう (11. 命令デコーダの実装)

Rust製自作命令セットシミュレータ、命令デコーダの実装を少しずつ改造している。 与えられた機械語から、命令をデコードして意味を解析する。 RISC-Vの機械語は非常に単純なので、命令デコーダの設計は簡単だ。 単純にcase文を並べていくだけで完成する。こ…

RustでRISC-V命令セットシミュレータを作ろう (10. Rustでテストケースを作成する)

Cargoのテスト環境を使ってリグレッションテストを作る Rustで作った命令セットシミュレータについて、テストの方法を考え直した。 現在はMakefileで管理をしているが、Cargoの機能を使ってテスト環境を構築した方が良さそうだ。 そこでRustのmain()を直接呼…

RustでRISC-V命令セットシミュレータを作ろう (9. 命令のディスアセンブル機能を実装する)

Rustを使ったRISC-Vシミュレータの調整を行っている。デバッグ・トレース機能の調整を行った。 もうひとつの機能は、命令の機械語からニーモニックを出力する機能だ。 実はこの機能は必須の機能ではない。 spike-dasmというriscv-toolsを使えば、逆アセンブ…

RustでRISC-V命令セットシミュレータを作ろう (8. デバッグ・トレース機能の整理)

Rustを使ったRISC-Vシミュレータの調整を行っている。デバッグ・トレース機能の調整を行った。 ISSを使ってテストプログラムをデバッグする場合、いくつかの情報を出力してプログラムの動作を監視する必要がある。例えば、ISSからは以下の情報が出てくると役…

「実践Rust入門」に入門している (2. 電卓作成まで終了)

少し前から、「実践Rust入門」を読み始めている。Rustを使って四則演算の電卓を作るところまで行った。 実践Rust入門[言語仕様から開発手法まで]作者: κeen,河野達也,小松礼人出版社/メーカー: 技術評論社発売日: 2019/05/08メディア: 単行本(ソフトカバー…

「実践Rust入門」に入門している

少し前から、「実践Rust入門」を読み始めている。Rust自体は前に触ったことがあるのだが、ジェネリクスとかトレイトとか、基本的な知識が不足しているので、評判が良さそうな本を購入して読み進めていくことにした。 実践Rust入門[言語仕様から開発手法まで]…

Rustのサンプルプログラムをたくさん写経する

Rustにとても興味がある。 いつもソフトウェア環境はC++を使って構築しているので、Rustに移行すると何か良いことがあるのか? という訳で今年の目標はRustを覚えることに決めた。 Rustの言語使用自体は分かるような気がするのだが、それで現実的なアプリケ…

プログラミング言語Rustに入門中 (goblinを使ってelfファイルを解析する2.)

RustのライブラリであるGoblinを使って、バイナリファイルを解析のプログラムを作成している。Rustの構造はなかなか慣れないので、進めるのが大変だ。 Goblinを使った場合、Sectionを一つずつ解析して、バイナリの入っている部分を取り出していく必要がある…

プログラミング言語Rustに入門中(1. Rustのイントロダクション)

突然新しいプログラミング言語に入門したくなることもある。自分としてはスクリプト言語はRubyをメインに使っているのだけれども(最近Rubyistとしては隠れすぎていてRubyを使っておらず、シェルスクリプトで何とかしようとする傾向があるが)、最近徐々に知名…