GithubHelp home page GithubHelp logo

kamiyaowl / rv32i-sim Goto Github PK

View Code? Open in Web Editor NEW
21.0 4.0 0.0 77 KB

RISC-V Software Simulation

License: MIT License

Makefile 0.70% Python 0.22% C++ 93.05% C 1.52% Assembly 3.09% Dockerfile 1.41%
risc-v rv32i

rv32i-sim's Introduction

rv32i-sim

ss

アーキテクチャ理解を深めるために、RISC-V 基本整数ISAであるrv32iとELFローダーをC++で実装しています。 gccでコンパイルした生成物を直接読み込んで実行することができます。

プレゼン資料

https://kamiyaowl.github.io/presentation/dist/lets-impl-rv32i.html#1

制約(+Known Issue)

  • ELFファイルの種類に動的リンクが含まれるものは使用できない

ElfLoaderはProgram Headerのp_typeがLOADのものだけをMemにロードします。

  • 使用できる命令セットはiのみ

マシンモードを実装していないため、例外であったり例えば_exit()ecallでもプロセッサは停止します。CSRも実装されていないので割り込みや例外の取得などは行うことはできません。

テスト方法

rv32i向けテストコードのビルド

ビルドツールを実行できるDockerfileを用意しています。

$ cd /rv32i-sample-src
$ docker-compose up

hello.cからhello.shello.oを生成し、objdumpした結果を表示します。

エミュレータ本体のビルド

必要なソースコードはすべて/srcに配置しています。bazelを使用していますが、vscode用のtaskを用意しているのでこちらでもビルド可能です。

また実行時に上書き可能ですが、バイナリの所在をハードコードしてしまっているので気になるようでしたら修正してください。 またデバッグ情報の表示レベルも変更可能です。

/src/main.cpp

$ make build

実行

先にバイナリのパスを変更していない場合、実行時の第1引数にhello.oの場所を指定して実行してください。

License

MIT License

rv32i-sim's People

Contributors

kamiyaowl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

rv32i-sim's Issues

jalrでhangup

jalrでありえないアドレスに飛んでいる。jalrかaddi, auipcに問題ありそう

Display settings: variable format=auto, show disassembly=auto, numeric pointer values=off, container summaries=on.
Launching /Users/user/Documents/rv32i-sim/build/main.out
Module loaded: /Users/user/Documents/rv32i-sim/build/main.out. Symbols loaded.
Module loaded: /usr/lib/dyld. Symbols loaded.
Module loaded: /usr/lib/dyld. Symbols loaded.
Module loaded: /Users/user/Documents/rv32i-sim/build/main.out. Symbols loaded.
Module loaded: /usr/lib/libc++.1.dylib. Symbols loaded.
Module loaded: /usr/lib/libSystem.B.dylib. Symbols loaded.
2 locations added to breakpoint 4
Module loaded: /usr/lib/libc++abi.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libcache.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libcommonCrypto.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libcompiler_rt.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libcopyfile.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libcorecrypto.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libdispatch.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libdyld.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libkeymgr.dylib. Symbols loaded.
Module loaded: /usr/lib/system/liblaunch.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libmacho.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libquarantine.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libremovefile.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_asl.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_blocks.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_c.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_configuration.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_coreservices.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_darwin.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_dnssd.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_info.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_m.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_malloc.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_networkextension.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_notify.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_sandbox.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_secinit.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_kernel.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_platform.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_pthread.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_symptoms.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_trace.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libunwind.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libxpc.dylib. Symbols loaded.
Module loaded: /usr/lib/libobjc.A.dylib. Symbols loaded.
Module loaded: /usr/lib/libc++.1.dylib. Symbols loaded.
Module loaded: /usr/lib/libSystem.B.dylib. Symbols loaded.
Module loaded: /usr/lib/libc++abi.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libcache.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libcommonCrypto.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libcompiler_rt.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libcopyfile.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libcorecrypto.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libdispatch.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libdyld.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libkeymgr.dylib. Symbols loaded.
Module loaded: /usr/lib/system/liblaunch.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libmacho.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libquarantine.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libremovefile.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_asl.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_blocks.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_c.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_configuration.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_coreservices.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_darwin.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_dnssd.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_info.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_m.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_malloc.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_networkextension.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_notify.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_sandbox.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_secinit.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_kernel.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_platform.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_pthread.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_symptoms.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libsystem_trace.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libunwind.dylib. Symbols loaded.
Module loaded: /usr/lib/system/libxpc.dylib. Symbols loaded.
Module loaded: /usr/lib/libobjc.A.dylib. Symbols loaded.
[ElfLoader][LOAD] off:00000000 vaddr:00010000 paddr:00010000
[ElfLoader][LOAD] off:00000680 vaddr:00011680 paddr:00011680
[CPU] entryAddr:00010074

[MEM] x[00]:00000000 x[01]:00000000 x[02]:00000000 x[03]:00000000 x[04]:00000000 x[05]:00000000 x[06]:00000000 x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00000000 x[11]:00000000 x[12]:00000000 x[13]:00000000 x[14]:00000000 x[15]:00000000
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:00010074

[CPU] pc:65652	inst:00002197
	[DEBUG] [auipc] rs1:00000000 rs2:00000000 rd:00000003 imm:00002000

[MEM] x[00]:00000000 x[01]:00000000 x[02]:00000000 x[03]:00012074 x[04]:00000000 x[05]:00000000 x[06]:00000000 x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00000000 x[11]:00000000 x[12]:00000000 x[13]:00000000 x[14]:00000000 x[15]:00000000
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:00010078

[CPU] pc:65656	inst:e1c18193
	[DEBUG] [addi] rs1:00000003 rs2:00000000 rd:00000003 imm:00000e1c

[MEM] x[00]:00000000 x[01]:00000000 x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00000000 x[06]:00000000 x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00000000 x[11]:00000000 x[12]:00000000 x[13]:00000000 x[14]:00000000 x[15]:00000000
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:0001007c

[CPU] pc:65660	inst:c3418513
	[DEBUG] [addi] rs1:00000003 rs2:00000000 rd:0000000a imm:00000c34

[MEM] x[00]:00000000 x[01]:00000000 x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00000000 x[06]:00000000 x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:00000000 x[13]:00000000 x[14]:00000000 x[15]:00000000
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:00010080

[CPU] pc:65664	inst:c5018613
	[DEBUG] [addi] rs1:00000003 rs2:00000000 rd:0000000c imm:00000c50

[MEM] x[00]:00000000 x[01]:00000000 x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00000000 x[06]:00000000 x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:00013ae0 x[13]:00000000 x[14]:00000000 x[15]:00000000
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:00010084

[CPU] pc:65668	inst:40a60633
	[DEBUG] [sub] rs1:0000000c rs2:0000000a rd:0000000c imm:00000000

[MEM] x[00]:00000000 x[01]:00000000 x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00000000 x[06]:00000000 x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00000000 x[14]:00000000 x[15]:00000000
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:00010088

[CPU] pc:65672	inst:00000593
	[DEBUG] [addi] rs1:00000000 rs2:00000000 rd:0000000b imm:00000000

[MEM] x[00]:00000000 x[01]:00000000 x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00000000 x[06]:00000000 x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00000000 x[14]:00000000 x[15]:00000000
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:0001008c

[CPU] pc:65676	inst:334000ef
	[DEBUG] [jal] rs1:00000000 rs2:00000000 rd:00000001 imm:00000334

[MEM] x[00]:00000000 x[01]:0001008d x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00000000 x[06]:00000000 x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00000000 x[14]:00000000 x[15]:00000000
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:000103c0

[CPU] pc:66496	inst:00f00313
	[DEBUG] [addi] rs1:00000000 rs2:00000000 rd:00000006 imm:0000000f

[MEM] x[00]:00000000 x[01]:0001008d x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00000000 x[06]:0000000f x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00000000 x[14]:00000000 x[15]:00000000
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:000103c4

[CPU] pc:66500	inst:00050713
	[DEBUG] [addi] rs1:0000000a rs2:00000000 rd:0000000e imm:00000000

[MEM] x[00]:00000000 x[01]:0001008d x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00000000 x[06]:0000000f x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00000000 x[14]:00013ac4 x[15]:00000000
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:000103c8

[CPU] pc:66504	inst:02c37e63
	[DEBUG] [bgeu] rs1:00000006 rs2:0000000c rd:00000000 imm:0000003c

[MEM] x[00]:00000000 x[01]:0001008d x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00000000 x[06]:0000000f x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00000000 x[14]:00013ac4 x[15]:00000000
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:000103cc

[CPU] pc:66508	inst:00f77793
	[DEBUG] [andi] rs1:0000000e rs2:00000000 rd:0000000f imm:0000000f

[MEM] x[00]:00000000 x[01]:0001008d x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00000000 x[06]:0000000f x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00000000 x[14]:00013ac4 x[15]:00000004
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:000103d0

[CPU] pc:66512	inst:0a079063
	[DEBUG] [bne] rs1:0000000f rs2:00000000 rd:00000000 imm:000000a0

[MEM] x[00]:00000000 x[01]:0001008d x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00000000 x[06]:0000000f x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00000000 x[14]:00013ac4 x[15]:00000004
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:00010470

[CPU] pc:66672	inst:00279693
	[DEBUG] [slli] rs1:0000000f rs2:00000000 rd:0000000d imm:00000002

[MEM] x[00]:00000000 x[01]:0001008d x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00000000 x[06]:0000000f x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00000010 x[14]:00013ac4 x[15]:00000004
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:00010474

[CPU] pc:66676	inst:00000297
	[DEBUG] [auipc] rs1:00000000 rs2:00000000 rd:00000005 imm:00000000

[MEM] x[00]:00000000 x[01]:0001008d x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00010474 x[06]:0000000f x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00000010 x[14]:00013ac4 x[15]:00000004
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:00010478

[CPU] pc:66680	inst:005686b3
	[DEBUG] [add] rs1:0000000d rs2:00000005 rd:0000000d imm:00000000

[MEM] x[00]:00000000 x[01]:0001008d x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:00010474 x[06]:0000000f x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00010484 x[14]:00013ac4 x[15]:00000004
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:0001047c

[CPU] pc:66684	inst:00008293
	[DEBUG] [addi] rs1:00000001 rs2:00000000 rd:00000005 imm:00000000

[MEM] x[00]:00000000 x[01]:0001008d x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:0001008d x[06]:0000000f x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00010484 x[14]:00013ac4 x[15]:00000004
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:00010480

[CPU] pc:66688	inst:fa0680e7
	[DEBUG] [jalr] rs1:0000000d rs2:00000000 rd:00000001 imm:00000fa0

[MEM] x[00]:00000000 x[01]:00010481 x[02]:00000000 x[03]:00012e90 x[04]:00000000 x[05]:0001008d x[06]:0000000f x[07]:00000000
[MEM] x[08]:00000000 x[09]:00000000 x[10]:00013ac4 x[11]:00000000 x[12]:0000001c x[13]:00010484 x[14]:00013ac4 x[15]:00000004
[MEM] x[16]:00000000 x[17]:00000000 x[18]:00000000 x[19]:00000000 x[20]:00000000 x[21]:00000000 x[22]:00000000 x[23]:00000000
[MEM] x[24]:00000000 x[25]:00000000 x[26]:00000000 x[27]:00000000 x[28]:00000000 x[29]:00000000 x[30]:00000000 x[31]:00000000
[MEM] pc:00011424

[CPU] pc:70692	inst:a5a5a5a5
Assertion failed: (filter_op.size() > 0), function run, file src/Alu.h, line 216.
Stop reason: signal SIGABRT

.comment sectionに乗算命令?

riscv-objdump_1   | Disassembly of section .comment:
riscv-objdump_1   | 00000000 <.comment> fmsub.d ft6,ft6,ft4,ft7,rmm
riscv-objdump_1   | 00000004 <.comment+0x4> fld fs0,80(s0)
riscv-objdump_1   | 00000006 <.comment+0x6> fmsub.s     ft8,fa0,fs5,ft5,rmm
riscv-objdump_1   | 0000000a <.comment+0xa> fld fs0,112(s0)
riscv-objdump_1   | 0000000c <.comment+0xc> fld ft6,232(sp)
riscv-objdump_1   | 0000000e <.comment+0xe> fld ft0,232(sp)
riscv-objdump_1   |     ...
riscv-objdump_1   | 
riscv-objdump_1   | Disassembly of section .riscv.attributes:
riscv-objdump_1   | 00000000 <.riscv.attributes> addi   s2,s2,-16
riscv-objdump_1   | 00000002 <.riscv.attributes+0x2> unimp
riscv-objdump_1   | 00000004 <.riscv.attributes+0x4> flw        fs0,32(a2)
riscv-objdump_1   | 00000006 <.riscv.attributes+0x6> lui        t1,0xffffa
riscv-objdump_1   | 00000008 <.riscv.attributes+0x8> bgeu       zero,a6,00000014 <_start-0x10060>
riscv-objdump_1   | 0000000c <.riscv.attributes+0xc> fence      unknown,unknown
riscv-objdump_1   | 00000010 <.riscv.attributes+0x10> lui       tp,0xfffe1
riscv-objdump_1   | 00000012 <.riscv.attributes+0x12> fld       ft6,376(sp)
riscv-objdump_1   | 00000014 <.riscv.attributes+0x14> flw       fs2,12(sp)
riscv-objdump_1   | 00000016 <.riscv.attributes+0x16> flw       ft0,44(sp)
riscv-objdump_1   | 00000018 <.riscv.attributes+0x18> addi      a2,sp,8

ecall hangup in _exit()

pc: 67132: 0x1063c
inst: 115: 0b1110011 // rv32i命令セットには含まれてない

Assert on...

        template<typename DATA, typename ADDR>
        class Alu {
            protected:
            public:
            void reset() {}
            void run(Reg<DATA>& reg, Mem<DATA, ADDR>& mem, DATA instruction) {
                uint64_t inst = static_cast<uint64_t>(instruction);
                // opで検索
                uint8_t opcode = (inst >> 0) & 0x7f;
                vector<Inst<DATA, ADDR>> filter_op;
                std::copy_if(instructions.begin(), instructions.end(), std::back_inserter(filter_op), [&opcode](const Inst<DATA, ADDR>& i) {
                    return opcode == i.opcode;
                });
                assert(filter_op.size() > 0); // ***** failure *****

assembly

riscv-objdump_1   | _exit():
riscv-objdump_1   | 00010624 <_exit> li a1,0
riscv-objdump_1   | 00010628 <_exit+0x4> li     a2,0
riscv-objdump_1   | 0001062c <_exit+0x8> li     a3,0
riscv-objdump_1   | 00010630 <_exit+0xc> li     a4,0
riscv-objdump_1   | 00010634 <_exit+0x10> li    a5,0
riscv-objdump_1   | 00010638 <_exit+0x14> li    a7,93
riscv-objdump_1   | 0001063c <_exit+0x18> ecall // ***** failure *****
riscv-objdump_1   | 00010640 <_exit+0x1c> bgez  a0,00010664 <_exit+0x40>
riscv-objdump_1   | 00010644 <_exit+0x20> addi  sp,sp,-16
riscv-objdump_1   | 00010648 <_exit+0x24> sw    s0,8(sp)
riscv-objdump_1   | 0001064c <_exit+0x28> mv    s0,a0
riscv-objdump_1   | 00010650 <_exit+0x2c> sw    ra,12(sp)
riscv-objdump_1   | 00010654 <_exit+0x30> neg   s0,s0
riscv-objdump_1   | 00010658 <_exit+0x34> jal   ra,00010668 <__errno>
riscv-objdump_1   | 0001065c <_exit+0x38> sw    s0,0(a0)
riscv-objdump_1   | 00010660 <_exit+0x3c> j     00010660 <_exit+0x3c>
riscv-objdump_1   | 00010664 <_exit+0x40> j     00010664 <_exit+0x40>
riscv-objdump_1   | __errno():

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.