Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
riscv-isa-sim — Funktionaler RISC-V-ISA-Simulator, der mehrere Erweiterungen (RV32/64, V, Kryptografie) mit interaktivem Debug-Modus, GDB-Integration und instruktionsgenauer Modellierung für die Hardware-Software-Koentwicklung und Architekturforschung unterstützt. | Kitploit
Tools/GitHubGitHub/riscv-software-src/riscv-isa-sim
Embedded-System-SicherheitReverse EngineeringDebuggerHardware-SicherheitLernen & BildungFirmware-Analyse
GitHubriscv-software-src/riscv-isa-sim

riscv-isa-sim

Funktionaler RISC-V-ISA-Simulator, der mehrere Erweiterungen (RV32/64, V, Kryptografie) mit interaktivem Debug-Modus, GDB-Integration und instruktionsgenauer Modellierung für die Hardware-Software-Koentwicklung und Architekturforschung unterstützt.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigenWebseite
3.2k1.1k38vor 9h 27mVon Kitploit geprüft

Spike RISC-V ISA Simulator

Über

Spike, der RISC-V ISA Simulator, implementiert ein funktionales Modell eines oder mehrerer RISC-V Harts. Er ist nach dem goldenen Nagel benannt, der zur Feier der Fertigstellung der US-amerikanischen transkontinentalen Eisenbahn verwendet wurde.

Spike unterstützt die folgenden RISC-V ISA-Funktionen:

  • RV32I und RV64I Basis-ISAs, v2.1
  • RV32E und RV64E Basis-ISAs, v1.9
  • Zifencei-Erweiterung, v2.0
  • Zicsr-Erweiterung, v2.0
  • Zicntr-Erweiterung, v2.0
  • M-Erweiterung, v2.0
  • A-Erweiterung, v2.1
  • B-Erweiterung, v1.0
  • F-Erweiterung, v2.2
  • D-Erweiterung, v2.2
  • Q-Erweiterung, v2.2
  • C-Erweiterung, v2.0
  • Zbkb, Zbkc, Zbkx, Zknd, Zkne, Zknh, Zksed, Zksh skalare Kryptographie-Erweiterungen (Zk-, Zkn- und Zks-Gruppen), v1.0
  • Zkr virtuelle Entropiequellen-Emulation, v1.0
  • V-Erweiterung, v1.0 (erfordert einen 64-Bit-Host)
  • P-Erweiterung, v0.9.2
  • Zba-Erweiterung, v1.0
  • Zbb-Erweiterung, v1.0
  • Zbc-Erweiterung, v1.0
  • Zbs-Erweiterung, v1.0
  • Zfh und Zfhmin Halbpräzisions-Gleitkomma-Erweiterungen, v1.0
  • Zfa-Erweiterung, v1.0
  • Zfinx-Erweiterung, v1.0
  • Zmmul Ganzzahl-Multiplikations-Erweiterung, v1.0
  • Zicbom, Zicbop, Zicboz Cache-Block-Wartungs-Erweiterungen, v1.0
  • Konformität mit sowohl RVWMO als auch RVTSO (Spike ist sequenziell konsistent)
  • Machine-, Supervisor- und User-Modi, v1.11
  • Hypervisor-Erweiterung, v1.0
  • Svnapot-Erweiterung, v1.0
  • Svpbmt-Erweiterung, v1.0
  • Svinval-Erweiterung, v1.0
  • Svadu-Erweiterung, v1.0
  • Svade-Erweiterung, v1.0
  • Sdext-Erweiterung, v1.0-STABLE
  • Sdtrig-Erweiterung, v1.0-STABLE
  • Smepmp-Erweiterung v1.0
  • Smstateen-Erweiterung, v1.0
  • Smdbltrp-Erweiterung, v1.0
  • Sscofpmf v0.5.2
  • Ssdbltrp-Erweiterung, v1.0
  • Ssqosid-Erweiterung, v1.0
  • Zaamo-Erweiterung, v1.0
  • Zalrsc-Erweiterung, v1.0
  • Zabha-Erweiterung, v1.0
  • Zacas-Erweiterung, v1.0
  • Zawrs-Erweiterung, v1.0
  • Za64rs, Za128rs-Erweiterung, v1.0
  • Zicfiss-Erweiterung, v1.0
  • Zicfilp-Erweiterung, v1.0
  • Zca-Erweiterung, v1.0
  • Zcb-Erweiterung, v1.0
  • Zcf-Erweiterung, v1.0
  • Zcd-Erweiterung, v1.0
  • Zcmp-Erweiterung, v1.0
  • Zcmt-Erweiterung, v1.0
  • Zfbfmin-Erweiterung, v0.6
  • Zvfbfmin-Erweiterung, v0.6
  • Zvfbfwma-Erweiterung, v0.6
  • Zvabd-Erweiterung, v0.9
  • Zvbb-Erweiterung, v1.0
  • Zvbc-Erweiterung, v1.0
  • Zvkg-Erweiterung, v1.0
  • Zvkned-Erweiterung, v1.0
  • Zvknha, Zvknhb-Erweiterung, v1.0
  • Zvksed-Erweiterung, v1.0
  • Zvksh-Erweiterung, v1.0
  • Zvkt-Erweiterung, v1.0
  • Zvkn, Zvknc, Zvkng-Erweiterung, v1.0
  • Zvks, Zvksc, Zvksg-Erweiterung, v1.0
  • Zvzip-Erweiterung, v0.1
  • Zicond-Erweiterung, v1.0
  • Zilsd-Erweiterung, v1.0
  • Zclsd-Erweiterung, v1.0
  • Zilx-Erweiterung, v0.1
  • Zimop-Erweiterung, v1.0

Versionierung und APIs

Projekte werden in erster Linie versioniert, um anzuzeigen, wann die API erweitert oder inkompatibel gemacht wurde. In diesem Sinne strebt Spike an, dem SemVer Versionierungsschema zu folgen, bei dem Hauptversionsnummern erhöht werden, wenn rückwärtsinkompatible API-Änderungen vorgenommen werden; Nebenversionsnummern werden erhöht, wenn neue APIs hinzugefügt werden; und Patch-Versionsnummern werden erhöht, wenn Fehler auf rückwärtskompatible Weise behoben werden.

Spikes wichtigste öffentliche API ist die RISC-V ISA. Die C++-Schnittstelle zu Spikes Interna wird derzeit nicht als öffentliche API betrachtet, und rückwärtsinkompatible Änderungen an dieser Schnittstelle werden ohne Erhöhung der Hauptversionsnummer vorgenommen.

Build-Schritte

Wir gehen davon aus, dass die Umgebungsvariable RISCV auf den RISC-V-Tools- Installationspfad gesetzt ist.

$ apt-get install device-tree-compiler
$ apt-get install libboost-regex-dev libboost-system-dev
$ mkdir build
$ cd build
$ ../configure --prefix=$RISCV
$ make
$ [sudo] make install

Wenn Ihr System den yum-Paketmanager verwendet, können Sie yum install dtc für den ersten Schritt einsetzen.

Sie können den zweiten Schritt überspringen, wenn Sie die Befehls-I/O über Socket für den interaktiven Debug-Modus nicht benötigen.

Build-Schritte unter OpenBSD

Installieren Sie bash, gmake, dtc und verwenden Sie clang.

$ pkg_add bash gmake dtc
$ exec bash
$ export CC=cc; export CXX=c++
$ mkdir build
$ cd build
$ ../configure --prefix=$RISCV
$ gmake
$ [doas] make install

Kompilieren und Ausführen eines einfachen C-Programms

Installieren Sie spike (siehe Build-Schritte), riscv-gnu-toolchain und riscv-pk.

Schreiben Sie ein kurzes C-Programm und nennen Sie es hello.c. Kompilieren Sie es dann in eine RISC-V- ELF-Binärdatei namens hello:

$ riscv64-unknown-elf-gcc -o hello hello.c

Jetzt können Sie das Programm auf dem Proxy-Kernel simulieren:

$ spike pk hello

Simulieren einer neuen Instruktion

Das Hinzufügen einer Instruktion zum Simulator erfordert zwei Schritte:

  1. Beschreiben Sie das funktionale Verhalten der Instruktion in der Datei riscv/insns/<new_instruction_name>.h. Untersuchen Sie andere Instruktionen in diesem Verzeichnis als Ausgangspunkt.

  2. Fügen Sie den Opcode und die Opcode-Maske zu riscv/opcodes.h hinzu. Alternativ können Sie es zum riscv-opcodes-Paket hinzufügen, und es wird dies für Sie tun:

     $ cd ../riscv-opcodes
     $ vi opcodes       // add a line for the new instruction
     $ make install
    
  3. Fügen Sie die Instruktion zu riscv/riscv.mk.in hinzu. Andernfalls wird die Instruktion nicht in den Build aufgenommen und als illegale Instruktion behandelt.

  4. Erstellen Sie den Simulator neu.

Interaktiver Debug-Modus

Um den interaktiven Debug-Modus aufzurufen, starten Sie spike mit -d:

$ spike -d pk hello

Um den Inhalt eines Ganzzahlregisters zu sehen (0 steht für Core 0):

: reg 0 a0

Um den Inhalt eines Gleitkommaregisters zu sehen:

: fregs 0 ft0

oder:

: fregd 0 ft0

je nachdem, ob Sie das Register als einfach- oder doppeltpräzise ausgeben möchten.

Um den Inhalt einer Speicherstelle zu sehen (physische Adresse in Hex):

: mem 2020

Um den Inhalt des Speichers mit einer virtuellen Adresse zu sehen (0 für Core 0):

: mem 0 2020

Sie können um eine Instruktion vorrücken, indem Sie die Eingabetaste drücken. Sie können auch bis zum Erreichen einer gewünschten Gleichheit ausführen:

: until pc 0 2020                   (stop when pc=2020)
: until reg 0 mie a                 (stop when register mie=0xa)
: until mem 2020 50a9907311096993   (stop when mem[2020]=50a9907311096993)

Alternativ können Sie so lange ausführen, wie eine Gleichheit wahr ist:

: while mem 2020 50a9907311096993

Sie können die Ausführung unbegrenzt fortsetzen durch:

: r

Zu jedem Zeitpunkt während der Ausführung (auch ohne -d) können Sie den interaktiven Debug-Modus mit <control>-<c> aufrufen.

Um die Simulation von der Debug-Eingabeaufforderung aus zu beenden, drücken Sie <control>-<c> oder:

: q

Debuggen mit Gdb

Eine Alternative zum interaktiven Debug-Modus ist das Anhängen mit gdb. Da spike versucht, wie echte Hardware zu sein, benötigen Sie dafür auch OpenOCD. Wir verwenden das folgende Testprogramm:

$ cat rot13.c
#include <stdio.h>
char text[] = "Vafgehpgvba frgf jnag gb or serr!";

// Don't use the stack, because sp isn't set up.
volatile int wait = 1;
Tool herunterladen