Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
riscv-isa-sim — कार्यात्मक RISC-V ISA सिम्युलेटर जो एकाधिक एक्सटेंशन (RV32/64, V, cryptography) का समर्थन करता है, जिसमें इंटरैक्टिव डिबग मोड, GDB एकीकरण, और हार्डवेयर-सॉफ्टवेयर सह-विकास और आर्किटेक्चर अन्वेषण के लिए निर्देश-स्तरीय मॉडलिंग शामिल है। | Kitploit
उपकरण/GitHubGitHub/riscv-software-src/riscv-isa-sim
एम्बेडेड सिस्टम सुरक्षारिवर्स इंजीनियरिंगडीबगर्सहार्डवेयर सुरक्षालर्निंग और शिक्षाफर्मवेयर विश्लेषण
GitHubriscv-software-src/riscv-isa-sim

riscv-isa-sim

कार्यात्मक RISC-V ISA सिम्युलेटर जो एकाधिक एक्सटेंशन (RV32/64, V, cryptography) का समर्थन करता है, जिसमें इंटरैक्टिव डिबग मोड, GDB एकीकरण, और हार्डवेयर-सॉफ्टवेयर सह-विकास और आर्किटेक्चर अन्वेषण के लिए निर्देश-स्तरीय मॉडलिंग शामिल है।

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखेंवेबसाइट
3.2k1.1k1 दिन पहलेKitploit द्वारा समीक्षित

Spike RISC-V ISA सिम्युलेटर

============================

परिचय

Spike, RISC-V ISA सिम्युलेटर, एक या अधिक RISC-V हार्ट्स का एक कार्यात्मक मॉडल लागू करता है। इसका नाम गोल्डन स्पाइक के नाम पर रखा गया है जिसका उपयोग अमेरिकी ट्रांसकॉन्टिनेंटल रेलवे के पूरा होने का जश्न मनाने के लिए किया गया था।

Spike निम्नलिखित RISC-V ISA सुविधाओं का समर्थन करता है:

  • RV32I and RV64I base ISAs, v2.1
  • RV32E and RV64E base ISAs, v1.9
  • Zifencei extension, v2.0
  • Zicsr extension, v2.0
  • Zicntr extension, v2.0
  • M extension, v2.0
  • A extension, v2.1
  • B extension, v1.0
  • F extension, v2.2
  • D extension, v2.2
  • Q extension, v2.2
  • C extension, v2.0
  • Zbkb, Zbkc, Zbkx, Zknd, Zkne, Zknh, Zksed, Zksh scalar cryptography extensions (Zk, Zkn, and Zks groups), v1.0
  • Zkr virtual entropy source emulation, v1.0
  • V extension, v1.0 (requires a 64-bit host)
  • P extension, v0.9.2
  • Zba extension, v1.0
  • Zbb extension, v1.0
  • Zbc extension, v1.0
  • Zbs extension, v1.0
  • Zfh and Zfhmin half-precision floating-point extensions, v1.0
  • Zfa extension, v1.0
  • Zfinx extension, v1.0
  • Zmmul integer multiplication extension, v1.0
  • Zicbom, Zicbop, Zicboz cache-block maintenance extensions, v1.0
  • Conformance to both RVWMO and RVTSO (Spike is sequentially consistent)
  • Machine, Supervisor, and User modes, v1.11
  • Hypervisor extension, v1.0
  • Svnapot extension, v1.0
  • Svpbmt extension, v1.0
  • Svinval extension, v1.0
  • Svadu extension, v1.0
  • Svade extension, v1.0
  • Sdext extension, v1.0-STABLE
  • Sdtrig extension, v1.0-STABLE
  • Smepmp extension v1.0
  • Smstateen extension, v1.0
  • Smdbltrp extension, v1.0
  • Sscofpmf v0.5.2
  • Ssdbltrp extension, v1.0
  • Ssqosid extension, v1.0
  • Zaamo extension, v1.0
  • Zalrsc extension, v1.0
  • Zabha extension, v1.0
  • Zacas extension, v1.0
  • Zawrs extension, v1.0
  • Za64rs, Za128rs extension, v1.0
  • Zicfiss extension, v1.0
  • Zicfilp extension, v1.0
  • Zca extension, v1.0
  • Zcb extension, v1.0
  • Zcf extension, v1.0
  • Zcd extension, v1.0
  • Zcmp extension, v1.0
  • Zcmt extension, v1.0
  • Zfbfmin extension, v0.6
  • Zvfbfmin extension, v0.6
  • Zvfbfwma extension, v0.6
  • Zvabd extension, v0.7
  • Zvbb extension, v1.0
  • Zvbc extension, v1.0
  • Zvkg extension, v1.0
  • Zvkned extension, v1.0
  • Zvknha, Zvknhb extension, v1.0
  • Zvksed extension, v1.0
  • Zvksh extension, v1.0
  • Zvkt extension, v1.0
  • Zvkn, Zvknc, Zvkng extension, v1.0
  • Zvks, Zvksc, Zvksg extension, v1.0
  • Zvzip extension, v0.1
  • Zicond extension, v1.0
  • Zilsd extension, v1.0
  • Zclsd extension, v1.0
  • Zimop extension, v1.0

संस्करण और APIs

प्रोजेक्ट्स को मुख्य रूप से यह इंगित करने के लिए संस्करणित किया जाता है कि API कब बढ़ाया गया है या असंगत बना दिया गया है। इस भावना में, Spike का उद्देश्य SemVer संस्करण योजना का पालन करना है, जिसमें बड़े संस्करण संख्याओं को तब बढ़ाया जाता है जब पश्च-असंगत API परिवर्तन किए जाते हैं; छोटे संस्करण संख्याओं को तब बढ़ाया जाता है जब नए APIs जोड़े जाते हैं; और पैच संस्करण संख्याओं को तब बढ़ाया जाता है जब पश्च-संगत तरीके से बग्स ठीक किए जाते हैं।

Spike का प्रमुख सार्वजनिक API RISC-V ISA है। Spike के आंतरिक भागों के लिए C++ इंटरफ़ेस को इस समय सार्वजनिक API नहीं माना जाता है, और इस इंटरफ़ेस में पश्च-असंगत परिवर्तन बड़े संस्करण संख्या को बढ़ाए बिना किए जाएंगे।

निर्माण चरण

हम मानते हैं कि RISCV पर्यावरण चर RISC-V टूल्स इंस्टॉल पथ पर सेट है।

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

यदि आपका सिस्टम yum पैकेज मैनेजर का उपयोग करता है, तो आप पहले चरण के लिए yum install dtc का विकल्प चुन सकते हैं।

OpenBSD पर निर्माण चरण

bash, gmake, dtc स्थापित करें और clang का उपयोग करें।

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

एक सरल C प्रोग्राम संकलित करना और चलाना

spike (निर्माण चरण देखें), riscv-gnu-toolchain, और riscv-pk स्थापित करें।

एक छोटा C प्रोग्राम लिखें और इसे hello.c नाम दें। फिर, इसे hello नामक RISC-V ELF बाइनरी में संकलित करें:

root@kitploit:~
$ riscv64-unknown-elf-gcc -o hello hello.c

अब आप प्रॉक्सी कर्नेल के ऊपर प्रोग्राम का अनुकरण कर सकते हैं:

root@kitploit:~
$ spike pk hello

एक नए निर्देश का अनुकरण

सिम्युलेटर में एक निर्देश जोड़ने के लिए दो चरणों की आवश्यकता होती है:

  1. फ़ाइल riscv/insns/<new_instruction_name>.h में निर्देश के कार्यात्मक व्यवहार का वर्णन करें। एक शुरुआती बिंदु के रूप में उस निर्देशिका में अन्य निर्देशों की जाँच करें।

  2. riscv/opcodes.h में ओपकोड और ओपकोड मास्क जोड़ें। वैकल्पिक रूप से, इसे riscv-opcodes पैकेज में जोड़ें, और यह आपके लिए ऐसा करेगा:

    root@kitploit:~
     $ cd ../riscv-opcodes
     $ vi opcodes       // add a line for the new instruction
     $ make install
    
  3. निर्देश को riscv/riscv.mk.in में जोड़ें। अन्यथा, निर्देश निर्माण में शामिल नहीं किया जाएगा और इसे अवैध निर्देश माना जाएगा।

  4. सिम्युलेटर को पुनर्निर्माण करें।

इंटरैक्टिव डीबग मोड

इंटरैक्टिव डीबग मोड को लागू करने के लिए, spike को -d के साथ लॉन्च करें:

root@kitploit:~
$ spike -d pk hello

पूर्णांक रजिस्टर की सामग्री देखने के लिए (0 कोर 0 के लिए है):

root@kitploit:~
: reg 0 a0

फ्लोटिंग पॉइंट रजिस्टर की सामग्री देखने के लिए:

root@kitploit:~
: fregs 0 ft0

या:

root@kitploit:~
: fregd 0 ft0

यह इस पर निर्भर करता है कि आप रजिस्टर को सिंगल या डबल-प्रिसिजन के रूप में प्रिंट करना चाहते हैं।

मेमोरी स्थान की सामग्री देखने के लिए (भौतिक पता हेक्स में):

root@kitploit:~
: mem 2020

वर्चुअल पते के साथ मेमोरी की सामग्री देखने के लिए (0 कोर 0 के लिए):

root@kitploit:~
: mem 0 2020

आप एंटर कुंजी दबाकर एक निर्देश आगे बढ़ सकते हैं। आप वांछित समानता तक पहुंचने तक निष्पादित भी कर सकते हैं:

root@kitploit:~
: 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)

वैकल्पिक रूप से, आप तब तक निष्पादित कर सकते हैं जब तक कोई समानता सत्य है:

root@kitploit:~
: while mem 2020 50a9907311096993

आप निम्न द्वारा अनिश्चित काल तक निष्पादन जारी रख सकते हैं:

root@kitploit:~
: r

निष्पादन के दौरान किसी भी बिंदु पर (-d के बिना भी), आप <control>-<c> के साथ इंटरैक्टिव डीबग मोड में प्रवेश कर सकते हैं।

डीबग प्रॉम्प्ट से सिमुलेशन समाप्त करने के लिए, <control>-<c> दबाएं या:

root@kitploit:~
: q

Gdb के साथ डीबगिंग

इंटरैक्टिव डीबग मोड का एक विकल्प gdb का उपयोग करके अटैच करना है। क्योंकि spike वास्तविक हार्डवेयर की तरह बनने की कोशिश करता है, आपको ऐसा करने के लिए OpenOCD की भी आवश्यकता है।

हम निम्नलिखित परीक्षण प्रोग्राम का उपयोग करेंगे:

root@kitploit:~
$ 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;

int main()
{
    int i = 0;
    while (text[i]) {
        char lower = text[i] | 32;
        if (lower >= 'a' && lower <= 'm')
            text[i] += 13;
        else if (lower > 'm' && lower <= 'z')
            text[i] -= 13;
        i++;
    }
done:
    printf("decoded text: %s\n", text);
}
$ riscv64-unknown-elf-gcc -g -Og --specs=semihost.specs -o rot13 rot13.c

इस प्रोग्राम को डीबग करने के लिए, पहले spike चलाएं और इसे OpenOCD के लिए सुनने के लिए कहें:

root@kitploit:~
$ spike --rbb-port=9824 -m0x10000:0x20000 rot13
Listening for remote bitbang connection on port 9824.
...

एक अलग शेल में उपयुक्त कॉन्फ़िगरेशन फ़ाइल के साथ OpenOCD चलाएं:

root@kitploit:~
$ cat spike.cfg 
adapter driver remote_bitbang
remote_bitbang host localhost
remote_bitbang port 9824

set _CHIPNAME riscv
jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0xdeadbeef

set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME riscv -chain-position $_TARGETNAME

gdb report_data_abort enable

init
arm semihosting enable
halt
$ openocd -f spike.cfg
Open On-Chip Debugger 0.12.0
...
Info : starting gdb server for riscv.cpu on 3333
Info : Listening on port 3333 for gdb connections
riscv.cpu halted due to debug-request. Semihosting is active.
...
riscv.cpu: target state: halted

एक और शेल में, अपना gdb डीबग सत्र शुरू करें:

root@kitploit:~
$ riscv64-unknown-elf-gdb rot13
...
Reading symbols from rot13...
(gdb) target extended-remote localhost:3333
...
(gdb) load
...
(gdb) set $sp=0x2fff0
(gdb) b main
Breakpoint 1 at 0x10202: file rot13.c, line 5.
(gdb) c
Continuing.
Disabling abstract command writes to CSRs.

Breakpoint 1, main () at rot13.c:5
5       {
(gdb) print text
$1 = "Vafgehpgvba frgf jnag gb or serr!"
(gdb) until done
[riscv.cpu] Found 4 triggers
main () at rot13.c:16
16          printf("decoded text: %s\n", text);
(gdb) c
Continuing.

Program received signal SIGTRAP, Trace/breakpoint trap.
0x00019ff8 in _exit ()
(gdb) 
...

OpenOCD टर्मिनल पर आपके पास होगा:

root@kitploit:~
...
decoded text: Instruction sets want to be free!
semihosting: *** application exited with 0 ***
riscv.cpu halted due to breakpoint. Semihosting is active.
टूल डाउनलोड करें