• वेब ब्राउज़र में चलने वाले emulator के जरिए RISC-V assembly को step-by-step सीखने के लिए बनाया गया एक इंटरैक्टिव ट्यूटोरियल, जो Nick Morgan के Easy 6502 से प्रेरित है
  • RV32I_Zicsr instruction set के 45 बुनियादी निर्देशों और privileged architecture की मुख्य अवधारणाओं को कवर करता है, और compiler target के रूप में पर्याप्त रूप से पूर्ण instruction set सिखाता है
  • arithmetic/logic operations, branch/jump, memory access, function calling convention, stack management जैसी assembly programming की बुनियाद को practical examples के साथ प्रस्तुत करता है
  • Machine mode और User mode के बीच privilege level transition, exception handling, और CSR(control and status register) manipulation को वास्तविक code के साथ समझाता है
  • ट्यूटोरियल का अंतिम लक्ष्य system call और exception handling को support करने वाला एक ultra-small operating system खुद लिखना है, जिससे RISC-V low-level development के पूरे flow का अनुभव किया जा सके

ट्यूटोरियल की संरचना और मुख्य सीखने की सामग्री

बुनियादी निर्देश और processor अवधारणाएँ

  • processor state: program counter(pc), 31 general-purpose registers(x1~x31), और special zero register(x0) को समझना
  • arithmetic instructions: add, addi, sub आदि के जरिए जोड़/घटाव और overflow behavior सीखना
  • bit operations: and, or, xor, sll, srl, sra जैसी bit-level logic operations और shift instructions का अभ्यास
  • comparison instructions: slt, sltu आदि का उपयोग कर signed/unsigned integer comparison और conditional logic लागू करना

control flow और memory

  • branch और jump: beq, bne, blt, jal, jalr का उपयोग कर conditional/unconditional branching और function call mechanism
  • memory access: lw, sw, lb, lh, sb, sh निर्देशों के जरिए word/halfword/byte इकाइयों में load/store कार्य
  • memory-mapped I/O: खास addresses पर read/write करके external devices से communication का तरीका समझना
  • position-independent code: auipc निर्देश और PC-relative addressing के जरिए relocatable code लिखने की तकनीक

functions और calling convention

  • register aliases: a0~a7(arguments), s0~s11(saved), t0~t6(temporary), ra(return address), sp(stack pointer) जैसी भूमिकाएँ
  • stack management: function entry पर registers सहेजना, stack space allocate/free करना, return address को preserve और restore करने के pattern
  • recursive functions: Fibonacci sequence implementation के जरिए recursive calls और stack frame management का अभ्यास

privileged architecture और operating system

  • privilege levels: Machine mode(level 3) और User mode(level 0) के अंतर और isolation mechanism
  • CSR instructions: csrrw, csrrs, csrrc आदि से control registers को read/write करना और bit fields manipulate करना
  • exception handling: mcause, mepc, mtval, mstatus CSR के जरिए exception जानकारी देखना और handler लिखना
  • mode switching: mret निर्देश से User mode में प्रवेश और वापसी, तथा mscratch का उपयोग कर context switching

अंतिम प्रोजेक्ट: ultra-small OS

  • system call implementation: ecall निर्देश से User mode से Machine mode में trap कर putchar/exit functionality देना
  • register save/restore: stack पर सभी general-purpose registers का backup और restore करने वाले trap handler की पूरी संरचना
  • exception handling logic: mcause से exception का कारण पहचानना, system call number(a7) के अनुसार dispatch करना, और error message output करना
  • executable code: वेब emulator में सीधे चल सकने वाला पूरा OS kernel entry/return code उपलब्ध

संदर्भ सामग्री और लाइसेंस

  • ट्यूटोरियल और code दोनों CC0 public domain या 0-clause BSD license के अंतर्गत हैं
  • मूल लेख और code repository: https://github.com/dramforever/easyriscv
  • RISC-V सीखने के लिए शिक्षा, शोध, और simulation environment बनाने के लिए उपयुक्त

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.