aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.gitignore5
-rw-r--r--README.adoc248
-rw-r--r--README.md87
-rw-r--r--docs/images/add.svg1
-rw-r--r--docs/images/addi.svg1
-rw-r--r--docs/images/and.svg1
-rw-r--r--docs/images/andi.svg1
-rw-r--r--docs/images/auipc.svg1
-rw-r--r--docs/images/b-immediate.svg1
-rw-r--r--docs/images/beq.svg1
-rw-r--r--docs/images/bge.svg1
-rw-r--r--docs/images/bgeu.svg1
-rw-r--r--docs/images/blt.svg1
-rw-r--r--docs/images/bltu.svg1
-rw-r--r--docs/images/bne.svg1
-rw-r--r--docs/images/czero.eqz.svg1
-rw-r--r--docs/images/czero.nez.svg1
-rw-r--r--docs/images/ebreak.svg1
-rw-r--r--docs/images/ecall.svg1
-rw-r--r--docs/images/fence.svg1
-rw-r--r--docs/images/i-immediate.svg1
-rw-r--r--docs/images/j-immediate.svg1
-rw-r--r--docs/images/jal.svg1
-rw-r--r--docs/images/jalr.svg1
-rw-r--r--docs/images/lb.svg1
-rw-r--r--docs/images/lbu.svg1
-rw-r--r--docs/images/lh.svg1
-rw-r--r--docs/images/lhu.svg1
-rw-r--r--docs/images/lui.svg1
-rw-r--r--docs/images/lw.svg1
-rw-r--r--docs/images/or.svg1
-rw-r--r--docs/images/ori.svg1
-rw-r--r--docs/images/s-immediate.svg1
-rw-r--r--docs/images/sb.svg1
-rw-r--r--docs/images/sh.svg1
-rw-r--r--docs/images/sll.svg1
-rw-r--r--docs/images/slli.svg1
-rw-r--r--docs/images/slt.svg1
-rw-r--r--docs/images/slti.svg1
-rw-r--r--docs/images/sltiu.svg1
-rw-r--r--docs/images/sltu.svg1
-rw-r--r--docs/images/sra.svg1
-rw-r--r--docs/images/srai.svg1
-rw-r--r--docs/images/srl.svg1
-rw-r--r--docs/images/srli.svg1
-rw-r--r--docs/images/sub.svg1
-rw-r--r--docs/images/sw.svg1
-rw-r--r--docs/images/u-immediate.svg1
-rw-r--r--docs/images/xor.svg1
-rw-r--r--docs/images/xori.svg1
-rw-r--r--rtl/simple_alu.sv58
-rw-r--r--verif/formal/simple_alu/README.md23
-rw-r--r--verif/formal/simple_alu/simple_alu.sby22
-rw-r--r--verif/formal/simple_alu/simple_alu_bind.sv15
-rw-r--r--verif/formal/simple_alu/simple_alu_fv.sv50
-rw-r--r--verif/formal/simple_alu/simple_alu_top_fv.sv37
-rw-r--r--verif/uvm/env.sv0
57 files changed, 505 insertions, 87 deletions
diff --git a/.gitignore b/.gitignore
index 59a8a35..ad3001c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,8 @@
*.swo
.vscode
.claude/
+
+# SymbiYosys output
+verif/formal/simple_alu/simple_alu/
+verif/formal/simple_alu/simple_alu_bmc/
+verif/formal/simple_alu/simple_alu_cover/
diff --git a/README.adoc b/README.adoc
new file mode 100644
index 0000000..694dcad
--- /dev/null
+++ b/README.adoc
@@ -0,0 +1,248 @@
+Montreal
+========
+:revnumber: 0.1.0-draft
+
+A RISC-V RV32E processor designed for TinyTapeout.
+
+RV32E
+-----
+
+https://docs.riscv.org/reference/isa/unpriv/unpriv-index.html[ISA Reference]
+
+Reduces number of integer registers to 16 general-purpose registers
+(x0-x15). Upper 16 registers consume around one quarter of the total
+area of the core excluding memories, thus their removal saves around 25%
+core area with a corresponding core power reduction.
+
+Each register is 32 bits wide.
+
+[cols="1,2,4", options="header"]
+|===
+
+| Register
+| Description
+| Purpose
+
+| x0
+| dedicated zero
+| Source operand for value 0.
+
+| x1
+| return address
+| Written by JAL/JALR. Holds address to be returned to once a function returns.
+Must be saved to stack before calling another function.
+
+| x2
+| stack pointer
+| Always points to top of the stack in RAM. Decremented to allocate space,
+incremented to free it. CALLEE must restore it BEFORE returning.
+
+| x3
+| global pointer
+|
+
+| x4
+| thread pointer
+|
+
+| x5
+| alternate link reg
+| Second link register for nested JAL sequences. Caller must save
+if needed across a call.
+
+| x6
+| general scratch reg
+|
+
+| x7
+| general scratch reg
+|
+
+| x8
+| frame pointer
+|
+
+| x9
+| saved register
+|
+
+| x10
+| first function argument
+| Also used to return integer results from function.
+
+| x11
+| second function argument
+|
+
+| x12
+| third function argument
+|
+
+| x13
+| fourth function argument
+|
+
+| x14
+| fifth function argument
+|
+
+| x15
+| sixth function argument
+|
+
+| pc
+| program counter
+| Address of current instruction
+
+|===
+
+Instruction Set
+---------------
+
+.Relevant opcodes for the IP. `inst[1:0] = 11`.
+[cols="2*^1m,8*^2m", hrows=2]
+|===
+
+|
+|
+8+^| inst[4:2]
+
+|
+|
+| 000
+| 001
+| 010
+| 011
+| 100
+| 101
+| 110
+| 111
+
+1.4+.^| inst[6:5]
+| 00
+| LOAD
+|
+|
+| MISC-MEM
+| OP-IMM
+| AUIPC
+|
+|
+
+| 01
+| STORE
+|
+|
+|
+| OP
+| LUI
+|
+|
+
+| 10
+|
+|
+|
+|
+|
+|
+|
+|
+
+| 11
+| BRANCH
+| JALR
+|
+| JAL
+| SYSTEM
+|
+|
+|
+|===
+
+=== Immediate Types
+
+The labels `[7]`, `[20]`, and `[31]` represent the bits `inst[7]`, `inst[20]`, and `inst[31]`, respectively.
+
+image::docs/images/i-immediate.svg[width=100%]
+image::docs/images/s-immediate.svg[width=100%]
+image::docs/images/b-immediate.svg[width=100%]
+image::docs/images/u-immediate.svg[width=100%]
+image::docs/images/j-immediate.svg[width=100%]
+
+=== LUI
+
+image::docs/images/lui.svg[width=100%]
+
+=== AUIPC
+
+image::docs/images/auipc.svg[width=100%]
+
+=== OP-IMM
+
+image::docs/images/addi.svg[width=100%]
+image::docs/images/slti.svg[width=100%]
+image::docs/images/sltiu.svg[width=100%]
+image::docs/images/xori.svg[width=100%]
+image::docs/images/ori.svg[width=100%]
+image::docs/images/andi.svg[width=100%]
+image::docs/images/slli.svg[width=100%]
+image::docs/images/srli.svg[width=100%]
+image::docs/images/srai.svg[width=100%]
+
+=== OP
+
+image::docs/images/add.svg[width=100%]
+image::docs/images/sub.svg[width=100%]
+image::docs/images/slt.svg[width=100%]
+image::docs/images/sltu.svg[width=100%]
+image::docs/images/xor.svg[width=100%]
+image::docs/images/or.svg[width=100%]
+image::docs/images/and.svg[width=100%]
+image::docs/images/sll.svg[width=100%]
+image::docs/images/srl.svg[width=100%]
+image::docs/images/sra.svg[width=100%]
+image::docs/images/czero.eqz.svg[width=100%]
+image::docs/images/czero.nez.svg[width=100%]
+
+=== JAL
+
+image::docs/images/jal.svg[width=100%]
+
+=== JALR
+
+image::docs/images/jalr.svg[width=100%]
+
+=== BRANCH
+
+The labels `[11]` and `[12]` represent the bits `imm[11]` and `imm[12]` respectively.
+
+image::docs/images/beq.svg[width=100%]
+image::docs/images/bne.svg[width=100%]
+image::docs/images/blt.svg[width=100%]
+image::docs/images/bge.svg[width=100%]
+image::docs/images/bltu.svg[width=100%]
+image::docs/images/bgeu.svg[width=100%]
+
+=== LOAD
+
+image::docs/images/lb.svg[width=100%]
+image::docs/images/lh.svg[width=100%]
+image::docs/images/lw.svg[width=100%]
+image::docs/images/lbu.svg[width=100%]
+image::docs/images/lhu.svg[width=100%]
+
+=== STORE
+
+image::docs/images/sb.svg[width=100%]
+image::docs/images/sh.svg[width=100%]
+image::docs/images/sw.svg[width=100%]
+
+=== MISC-MEM
+
+image::docs/images/fence.svg[width=100%]
+
+=== SYSTEM
+
+image::docs/images/ecall.svg[width=100%]
+image::docs/images/ebreak.svg[width=100%]
diff --git a/README.md b/README.md
deleted file mode 100644
index e8807da..0000000
--- a/README.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# Montreal
-
-A RISC-V RV32E processor designed for TinyTapeout.
-
-## [RV32E](https://docs.riscv.org/reference/isa/unpriv/unpriv-index.html)
-
-Reduces number of integer registers to 16 general-purpose registers (x0-x15). Upper 16 registers consume around one quarter of the total area of the core excluding memories, thus their removal saves around 25% core area with a corresponding core power reduction.
-
-Each register is 32 bits wide.
-
-| Register | Description | Purpose |
-| -------- | ----------- | ------- |
-| x0 | dedicated zero | Source operand for value 0. |
-| x1 | return address | Written by JAL/JALR. Holds address to be returned to once a function returns. Must be saved to stack before calling another function. |
-| x2 | stack pointer | Always points to top of the stack in RAM. Decremented to allocate space, incremented to free it. CALLEE must restore it BEFORE returning. |
-| x3 | global pointer | |
-| x4 | thread pointer | |
-| x5 | alternate link reg | Second link register for nested JAL sequences. Caller must save if needed across a call. |
-| x6 | general scratch reg | |
-| x7 | general scratch reg | |
-| x8 | frame pointer | |
-| x9 | saved register | |
-| x10 | first function argument | Also used to return integer results from function. |
-| x11 | second function argument | |
-| x12 | third function argument | |
-| x13 | fourth function argument | |
-| x14 | fifth function argument | |
-| x15 | sixth function argument | |
-| pc | program counter | Address of current instruction |
-
-## INSTRUCTION SET
-### Formats
-
-```
- 31 25 24 20 19 15 14 12 11 7 6 0
- +----------+--------+--------+-------+--------+----------+
-R | funct7 | rs2 | rs1 | funct3| rd | opcode |
- +----------+--------+--------+-------+--------+----------+
- (src2) (src1) (dest)
- +-------------------+--------+-------+--------+----------+
-I | imm[11:0] | rs1 | funct3| rd | opcode |
- +-------------------+--------+-------+--------+----------+
- (src) (dest)
- +----------+--------+--------+-------+--------+----------+
-I-sh | imm[11:5]|imm[4:0]| rs1 | funct3| rd | opcode |
- +----------+--------+--------+-------+--------+----------+
- (src) (dest)
-```
-
-I-sh is the shift variant of I-type: `imm[11:5]` acts as a discriminator (like `funct7`), and `imm[4:0]` is the shift amount (shamt).
-
-### R-Type (Register-to-register)
-
-| Instruction | Description | Encoding (`funct7` \| `funct3` \| `opcode`) |
-| ----------- | ----------- | ------------------------------------------ |
-| ADD | Add two registers and store the result in rd. | `0000000` \| `000` \| `0110011` |
-| SUB | Subtract rs2 from rs1 and store the result in rd. | `0100000` \| `000` \| `0110011` |
-| SLL | Shift rs1 left by the amount in rs2 (logical), store result in rd. | `0000000` \| `001` \| `0110011` |
-| SLT | Set rd to 1 if rs1 < rs2 (signed), otherwise 0. | `0000000` \| `010` \| `0110011` |
-| SLTU | Set rd to 1 if rs1 < rs2 (unsigned), otherwise 0. | `0000000` \| `011` \| `0110011` |
-| XOR | Bitwise XOR of rs1 and rs2, result in rd. | `0000000` \| `100` \| `0110011` |
-| SRL | Shift rs1 right by the amount in rs2 (logical), store result in rd. | `0000000` \| `101` \| `0110011` |
-| SRA | Shift rs1 right by the amount in rs2 (arithmetic), sign-extend result into rd. | `0100000` \| `101` \| `0110011` |
-| OR | Bitwise OR of rs1 and rs2, result in rd. | `0000000` \| `110` \| `0110011` |
-| AND | Bitwise AND of rs1 and rs2, result in rd. | `0000000` \| `111` \| `0110011` |
-
-### I-Type (Immediate)
-
-#### OP-IMM — Integer immediate ops (opcode `0010011`)
-
-| Instruction | Description | Encoding (`imm[11:0]` \| `funct3` \| `opcode`) |
-| ----------- | ----------- | ----------------------------------------------- |
-| ADDI | Add sign-extended 12-bit immediate to rs1, store in rd. | imm \| `000` \| `0010011` |
-| SLTI | Set rd to 1 if rs1 < sign-extended imm (signed), else 0. | imm \| `010` \| `0010011` |
-| SLTIU | Set rd to 1 if rs1 < sign-extended imm (unsigned), else 0. | imm \| `011` \| `0010011` |
-| XORI | Bitwise XOR of rs1 and sign-extended imm, result in rd. | imm \| `100` \| `0010011` |
-| ORI | Bitwise OR of rs1 and sign-extended imm, result in rd. | imm \| `110` \| `0010011` |
-| ANDI | Bitwise AND of rs1 and sign-extended imm, result in rd. | imm \| `111` \| `0010011` |
-
-##### Shifting Instructions that carry an encoding disciminator in `imm[11:5]`
-| Instruction | Description | Encoding (`imm[11:5]`\| `funct3` \| `opcode`) |
-| ----------- | ----------- | ----------------------------------------------- |
-| SLLI | Shift rs1 left by shamt (`imm[4:0]`), logical, store in rd. | `0000000` \| `001` \| `0010011` |
-| SRLI | Shift rs1 right by shamt (`imm[4:0]`), logical, store in rd. | `0000000` \| `101` \| `0010011` |
-| SRAI | Shift rs1 right by shamt (`imm[4:0]`), arithmetic, store in rd. | `0100000` \| `101` \| `0010011` |
-
-
diff --git a/docs/images/add.svg b/docs/images/add.svg
new file mode 100644
index 0000000..7c97e86
--- /dev/null
+++ b/docs/images/add.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>funct7</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>ADD</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/addi.svg b/docs/images/addi.svg
new file mode 100644
index 0000000..8986fe4
--- /dev/null
+++ b/docs/images/addi.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='imm[11:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='268'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP-IMM</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>ADDI</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/and.svg b/docs/images/and.svg
new file mode 100644
index 0000000..688d473
--- /dev/null
+++ b/docs/images/and.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>funct7</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>AND</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/andi.svg b/docs/images/andi.svg
new file mode 100644
index 0000000..1ecfef3
--- /dev/null
+++ b/docs/images/andi.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='imm[11:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='268'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP-IMM</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>ANDI</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/auipc.svg b/docs/images/auipc.svg
new file mode 100644
index 0000000..7c76a7c
--- /dev/null
+++ b/docs/images/auipc.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='3'/><line x1='380' x2='380' y1='26' y2='23'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='3'/><line x1='268' x2='268' y1='26' y2='23'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='imm[31:12]' height='26' style='fill-opacity:0.1;fill:#006aff' width='447'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>1</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g transform='translate(212)'><text y='6'><tspan>imm[31:12]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>AUIPC</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>AUIPC</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/b-immediate.svg b/docs/images/b-immediate.svg
new file mode 100644
index 0000000..b7e2231
--- /dev/null
+++ b/docs/images/b-immediate.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='26'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='26'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='3'/><line x1='559' x2='559' y1='26' y2='23'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='26'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='3'/><line x1='380' x2='380' y1='26' y2='23'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='3'/><line x1='268' x2='268' y1='26' y2='23'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g/><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(603)'><text y='6'>4</text></g><g transform='translate(581)'><text y='6'>5</text></g><g transform='translate(469)'><text y='6'>10</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g transform='translate(693)'><text y='6'><tspan>0</tspan></text></g><g transform='translate(637)'><text y='6'><tspan>inst[11:8]</tspan></text></g><g transform='translate(525)'><text y='6'><tspan>inst[30:25]</tspan></text></g><g transform='translate(447)'><text y='6'><tspan>[7]</tspan></text></g><g transform='translate(212)'><text y='6'><tspan>inst[31]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(693)'><text y='6'><tspan>1</tspan></text></g><g transform='translate(637)'><text y='6'><tspan>4</tspan></text></g><g transform='translate(525)'><text y='6'><tspan>6</tspan></text></g><g transform='translate(447)'><text y='6'><tspan>1</tspan></text></g><g transform='translate(212)'><text y='6'><tspan>20</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>B-immediate</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/beq.svg b/docs/images/beq.svg
new file mode 100644
index 0000000..9b3e3f6
--- /dev/null
+++ b/docs/images/beq.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='26'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='26'/></g><g><g><rect field='[11]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22' x='536'/><rect field='imm[4:1]' height='26' style='fill-opacity:0.1;fill:#006aff' width='89' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/><rect field='imm[10:5]' height='26' style='fill-opacity:0.1;fill:#006aff' width='134' x='22'/><rect field='[12]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(514)'><text y='6'>8</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(22)'><text y='6'>30</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>1</text></g></g><g transform='translate(536)'><text y='6'><tspan>[11]</tspan></text></g><g transform='translate(480)'><text y='6'><tspan>imm[4:1]</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g transform='translate(78)'><text y='6'><tspan>imm[10:5]</tspan></text></g><g transform='translate(0)'><text y='6'><tspan>[12]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>BRANCH</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>BEQ</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/bge.svg b/docs/images/bge.svg
new file mode 100644
index 0000000..3348022
--- /dev/null
+++ b/docs/images/bge.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='26'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='26'/></g><g><g><rect field='[11]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22' x='536'/><rect field='imm[4:1]' height='26' style='fill-opacity:0.1;fill:#006aff' width='89' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/><rect field='imm[10:5]' height='26' style='fill-opacity:0.1;fill:#006aff' width='134' x='22'/><rect field='[12]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(514)'><text y='6'>8</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(22)'><text y='6'>30</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>1</text></g></g><g transform='translate(536)'><text y='6'><tspan>[11]</tspan></text></g><g transform='translate(480)'><text y='6'><tspan>imm[4:1]</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g transform='translate(78)'><text y='6'><tspan>imm[10:5]</tspan></text></g><g transform='translate(0)'><text y='6'><tspan>[12]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>BRANCH</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>BGE</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/bgeu.svg b/docs/images/bgeu.svg
new file mode 100644
index 0000000..b00bd8c
--- /dev/null
+++ b/docs/images/bgeu.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='26'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='26'/></g><g><g><rect field='[11]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22' x='536'/><rect field='imm[4:1]' height='26' style='fill-opacity:0.1;fill:#006aff' width='89' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/><rect field='imm[10:5]' height='26' style='fill-opacity:0.1;fill:#006aff' width='134' x='22'/><rect field='[12]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(514)'><text y='6'>8</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(22)'><text y='6'>30</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>1</text></g></g><g transform='translate(536)'><text y='6'><tspan>[11]</tspan></text></g><g transform='translate(480)'><text y='6'><tspan>imm[4:1]</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g transform='translate(78)'><text y='6'><tspan>imm[10:5]</tspan></text></g><g transform='translate(0)'><text y='6'><tspan>[12]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>BRANCH</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>BGEU</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/blt.svg b/docs/images/blt.svg
new file mode 100644
index 0000000..41a281f
--- /dev/null
+++ b/docs/images/blt.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='26'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='26'/></g><g><g><rect field='[11]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22' x='536'/><rect field='imm[4:1]' height='26' style='fill-opacity:0.1;fill:#006aff' width='89' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/><rect field='imm[10:5]' height='26' style='fill-opacity:0.1;fill:#006aff' width='134' x='22'/><rect field='[12]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(514)'><text y='6'>8</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(22)'><text y='6'>30</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>1</text></g></g><g transform='translate(536)'><text y='6'><tspan>[11]</tspan></text></g><g transform='translate(480)'><text y='6'><tspan>imm[4:1]</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g transform='translate(78)'><text y='6'><tspan>imm[10:5]</tspan></text></g><g transform='translate(0)'><text y='6'><tspan>[12]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>BRANCH</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>BLT</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/bltu.svg b/docs/images/bltu.svg
new file mode 100644
index 0000000..4aecba1
--- /dev/null
+++ b/docs/images/bltu.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='26'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='26'/></g><g><g><rect field='[11]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22' x='536'/><rect field='imm[4:1]' height='26' style='fill-opacity:0.1;fill:#006aff' width='89' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/><rect field='imm[10:5]' height='26' style='fill-opacity:0.1;fill:#006aff' width='134' x='22'/><rect field='[12]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(514)'><text y='6'>8</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(22)'><text y='6'>30</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>1</text></g></g><g transform='translate(536)'><text y='6'><tspan>[11]</tspan></text></g><g transform='translate(480)'><text y='6'><tspan>imm[4:1]</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g transform='translate(78)'><text y='6'><tspan>imm[10:5]</tspan></text></g><g transform='translate(0)'><text y='6'><tspan>[12]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>BRANCH</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>BLTU</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/bne.svg b/docs/images/bne.svg
new file mode 100644
index 0000000..1015d71
--- /dev/null
+++ b/docs/images/bne.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='26'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='26'/></g><g><g><rect field='[11]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22' x='536'/><rect field='imm[4:1]' height='26' style='fill-opacity:0.1;fill:#006aff' width='89' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/><rect field='imm[10:5]' height='26' style='fill-opacity:0.1;fill:#006aff' width='134' x='22'/><rect field='[12]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(514)'><text y='6'>8</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(22)'><text y='6'>30</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>1</text></g></g><g transform='translate(536)'><text y='6'><tspan>[11]</tspan></text></g><g transform='translate(480)'><text y='6'><tspan>imm[4:1]</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g transform='translate(78)'><text y='6'><tspan>imm[10:5]</tspan></text></g><g transform='translate(0)'><text y='6'><tspan>[12]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>BRANCH</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>BNE</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/czero.eqz.svg b/docs/images/czero.eqz.svg
new file mode 100644
index 0000000..134737f
--- /dev/null
+++ b/docs/images/czero.eqz.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g><g transform='translate(134)'><text y='6'>1</text></g><g transform='translate(112)'><text y='6'>1</text></g><g transform='translate(89)'><text y='6'>1</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>funct7</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>CZERO.EQZ</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/czero.nez.svg b/docs/images/czero.nez.svg
new file mode 100644
index 0000000..34b36e6
--- /dev/null
+++ b/docs/images/czero.nez.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g><g transform='translate(134)'><text y='6'>1</text></g><g transform='translate(112)'><text y='6'>1</text></g><g transform='translate(89)'><text y='6'>1</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>funct7</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>CZERO.NEZ</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/ebreak.svg b/docs/images/ebreak.svg
new file mode 100644
index 0000000..56ba357
--- /dev/null
+++ b/docs/images/ebreak.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g/><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>1</text></g></g><g><g transform='translate(536)'><text y='6'>0</text></g><g transform='translate(514)'><text y='6'>0</text></g><g transform='translate(492)'><text y='6'>0</text></g><g transform='translate(469)'><text y='6'>0</text></g><g transform='translate(447)'><text y='6'>0</text></g></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g><g transform='translate(358)'><text y='6'>0</text></g><g transform='translate(335)'><text y='6'>0</text></g><g transform='translate(313)'><text y='6'>0</text></g><g transform='translate(290)'><text y='6'>0</text></g><g transform='translate(268)'><text y='6'>0</text></g></g><g><g transform='translate(246)'><text y='6'>1</text></g><g transform='translate(223)'><text y='6'>0</text></g><g transform='translate(201)'><text y='6'>0</text></g><g transform='translate(179)'><text y='6'>0</text></g><g transform='translate(156)'><text y='6'>0</text></g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>SYSTEM</tspan></text></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>EBREAK</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/ecall.svg b/docs/images/ecall.svg
new file mode 100644
index 0000000..2de24d6
--- /dev/null
+++ b/docs/images/ecall.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g/><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>1</text></g></g><g><g transform='translate(536)'><text y='6'>0</text></g><g transform='translate(514)'><text y='6'>0</text></g><g transform='translate(492)'><text y='6'>0</text></g><g transform='translate(469)'><text y='6'>0</text></g><g transform='translate(447)'><text y='6'>0</text></g></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g><g transform='translate(358)'><text y='6'>0</text></g><g transform='translate(335)'><text y='6'>0</text></g><g transform='translate(313)'><text y='6'>0</text></g><g transform='translate(290)'><text y='6'>0</text></g><g transform='translate(268)'><text y='6'>0</text></g></g><g><g transform='translate(246)'><text y='6'>0</text></g><g transform='translate(223)'><text y='6'>0</text></g><g transform='translate(201)'><text y='6'>0</text></g><g transform='translate(179)'><text y='6'>0</text></g><g transform='translate(156)'><text y='6'>0</text></g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>SYSTEM</tspan></text></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>ECALL</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/fence.svg b/docs/images/fence.svg
new file mode 100644
index 0000000..1bd099b
--- /dev/null
+++ b/docs/images/fence.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='26'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='26'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='pred' height='26' style='fill-opacity:0.1;fill:#006aff' width='89' x='179'/><rect field='succ' height='26' style='fill-opacity:0.1;fill:#006aff' width='89' x='89'/><rect field='fm' height='26' style='fill-opacity:0.1;fill:#006aff' width='89'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(179)'><text y='6'>23</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(89)'><text y='6'>27</text></g><g transform='translate(67)'><text y='6'>28</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>1</text></g><g transform='translate(626)'><text y='6'>1</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(212)'><text y='6'><tspan>pred</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>succ</tspan></text></g><g transform='translate(34)'><text y='6'><tspan>fm</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>MISC-MEM</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>FENCE</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/i-immediate.svg b/docs/images/i-immediate.svg
new file mode 100644
index 0000000..c0911d6
--- /dev/null
+++ b/docs/images/i-immediate.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='3'/><line x1='559' x2='559' y1='26' y2='23'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='26'/><line x1='447' x2='447' y2='3'/><line x1='447' x2='447' y1='26' y2='23'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='3'/><line x1='380' x2='380' y1='26' y2='23'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='3'/><line x1='268' x2='268' y1='26' y2='23'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g/><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(469)'><text y='6'>10</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g transform='translate(581)'><text y='6'><tspan>inst[30:20]</tspan></text></g><g transform='translate(223)'><text y='6'><tspan>inst[31]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(581)'><text y='6'><tspan>11</tspan></text></g><g transform='translate(223)'><text y='6'><tspan>21</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>I-immediate</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/j-immediate.svg b/docs/images/j-immediate.svg
new file mode 100644
index 0000000..7383ace
--- /dev/null
+++ b/docs/images/j-immediate.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='26'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='3'/><line x1='559' x2='559' y1='26' y2='23'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='26'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='3'/><line x1='380' x2='380' y1='26' y2='23'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g/><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(469)'><text y='6'>10</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g transform='translate(693)'><text y='6'><tspan>0</tspan></text></g><g transform='translate(570)'><text y='6'><tspan>inst[30:21]</tspan></text></g><g transform='translate(447)'><text y='6'><tspan>[20]</tspan></text></g><g transform='translate(346)'><text y='6'><tspan>inst[19:12]</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>inst[31]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(693)'><text y='6'><tspan>1</tspan></text></g><g transform='translate(570)'><text y='6'><tspan>10</tspan></text></g><g transform='translate(447)'><text y='6'><tspan>1</tspan></text></g><g transform='translate(346)'><text y='6'><tspan>8</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>12</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>J-immediate</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/jal.svg b/docs/images/jal.svg
new file mode 100644
index 0000000..0d7b058
--- /dev/null
+++ b/docs/images/jal.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='3'/><line x1='380' x2='380' y1='26' y2='23'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='26'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='26'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='imm[19:12]' height='26' style='fill-opacity:0.1;fill:#006aff' width='179' x='268'/><rect field='[11]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22' x='246'/><rect field='imm[10:1]' height='26' style='fill-opacity:0.1;fill:#006aff' width='223' x='22'/><rect field='[20]' height='26' style='fill-opacity:0.1;fill:#006aff' width='22'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(223)'><text y='6'>21</text></g><g transform='translate(22)'><text y='6'>30</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>1</text></g><g transform='translate(626)'><text y='6'>1</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>1</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g transform='translate(346)'><text y='6'><tspan>imm[19:12]</tspan></text></g><g transform='translate(246)'><text y='6'><tspan>[11]</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[10:1]</tspan></text></g><g transform='translate(0)'><text y='6'><tspan>[20]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>JAL</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>JAL</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/jalr.svg b/docs/images/jalr.svg
new file mode 100644
index 0000000..ac7cc92
--- /dev/null
+++ b/docs/images/jalr.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='imm[11:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='268'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>1</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>1</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>JALR</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>JALR</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/lb.svg b/docs/images/lb.svg
new file mode 100644
index 0000000..24471b2
--- /dev/null
+++ b/docs/images/lb.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='imm[11:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='268'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>LOAD</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>LB</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/lbu.svg b/docs/images/lbu.svg
new file mode 100644
index 0000000..ab45a88
--- /dev/null
+++ b/docs/images/lbu.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='imm[11:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='268'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>LOAD</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>LBU</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/lh.svg b/docs/images/lh.svg
new file mode 100644
index 0000000..ed52c97
--- /dev/null
+++ b/docs/images/lh.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='imm[11:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='268'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>LOAD</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>LH</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/lhu.svg b/docs/images/lhu.svg
new file mode 100644
index 0000000..fb8f19b
--- /dev/null
+++ b/docs/images/lhu.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='imm[11:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='268'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>LOAD</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>LHU</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/lui.svg b/docs/images/lui.svg
new file mode 100644
index 0000000..8f65be1
--- /dev/null
+++ b/docs/images/lui.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='3'/><line x1='380' x2='380' y1='26' y2='23'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='3'/><line x1='268' x2='268' y1='26' y2='23'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='imm[31:12]' height='26' style='fill-opacity:0.1;fill:#006aff' width='447'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>1</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g transform='translate(212)'><text y='6'><tspan>imm[31:12]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>LUI</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>LUI</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/lw.svg b/docs/images/lw.svg
new file mode 100644
index 0000000..44aa174
--- /dev/null
+++ b/docs/images/lw.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='imm[11:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='268'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>LOAD</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>LW</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/or.svg b/docs/images/or.svg
new file mode 100644
index 0000000..13a3b2d
--- /dev/null
+++ b/docs/images/or.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>funct7</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>OR</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/ori.svg b/docs/images/ori.svg
new file mode 100644
index 0000000..7ec0ce6
--- /dev/null
+++ b/docs/images/ori.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='imm[11:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='268'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP-IMM</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>ORI</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/s-immediate.svg b/docs/images/s-immediate.svg
new file mode 100644
index 0000000..5026c2b
--- /dev/null
+++ b/docs/images/s-immediate.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='26'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='26'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='3'/><line x1='559' x2='559' y1='26' y2='23'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='26'/><line x1='447' x2='447' y2='3'/><line x1='447' x2='447' y1='26' y2='23'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='3'/><line x1='380' x2='380' y1='26' y2='23'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='3'/><line x1='268' x2='268' y1='26' y2='23'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g/><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(603)'><text y='6'>4</text></g><g transform='translate(581)'><text y='6'>5</text></g><g transform='translate(469)'><text y='6'>10</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g transform='translate(693)'><text y='6'><tspan>[7]</tspan></text></g><g transform='translate(637)'><text y='6'><tspan>inst[11:8]</tspan></text></g><g transform='translate(525)'><text y='6'><tspan>inst[30:25]</tspan></text></g><g transform='translate(223)'><text y='6'><tspan>inst[31]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(693)'><text y='6'><tspan>1</tspan></text></g><g transform='translate(637)'><text y='6'><tspan>4</tspan></text></g><g transform='translate(525)'><text y='6'><tspan>6</tspan></text></g><g transform='translate(223)'><text y='6'><tspan>21</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>S-immediate</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/sb.svg b/docs/images/sb.svg
new file mode 100644
index 0000000..84bea85
--- /dev/null
+++ b/docs/images/sb.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='imm[4:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/><rect field='imm[11:5]' height='26' style='fill-opacity:0.1;fill:#006aff' width='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>imm[4:0]</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>imm[11:5]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>STORE</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SB</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/sh.svg b/docs/images/sh.svg
new file mode 100644
index 0000000..7c74e5a
--- /dev/null
+++ b/docs/images/sh.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='imm[4:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/><rect field='imm[11:5]' height='26' style='fill-opacity:0.1;fill:#006aff' width='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>imm[4:0]</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>imm[11:5]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>STORE</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SH</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/sll.svg b/docs/images/sll.svg
new file mode 100644
index 0000000..f9309f1
--- /dev/null
+++ b/docs/images/sll.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>funct7</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SLL</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/slli.svg b/docs/images/slli.svg
new file mode 100644
index 0000000..b27cbf5
--- /dev/null
+++ b/docs/images/slli.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='shamt' height='26' style='fill-opacity:0.1;fill:#006aff' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>shamt</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP-IMM</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>imm[11:5]</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SLLI</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/slt.svg b/docs/images/slt.svg
new file mode 100644
index 0000000..377cdff
--- /dev/null
+++ b/docs/images/slt.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>funct7</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SLT</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/slti.svg b/docs/images/slti.svg
new file mode 100644
index 0000000..38c463a
--- /dev/null
+++ b/docs/images/slti.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='imm[11:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='268'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP-IMM</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SLTI</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/sltiu.svg b/docs/images/sltiu.svg
new file mode 100644
index 0000000..901a0a1
--- /dev/null
+++ b/docs/images/sltiu.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='imm[11:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='268'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP-IMM</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SLTIU</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/sltu.svg b/docs/images/sltu.svg
new file mode 100644
index 0000000..1d89ab3
--- /dev/null
+++ b/docs/images/sltu.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>funct7</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SLTU</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/sra.svg b/docs/images/sra.svg
new file mode 100644
index 0000000..b75b5e8
--- /dev/null
+++ b/docs/images/sra.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>1</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>funct7</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SRA</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/srai.svg b/docs/images/srai.svg
new file mode 100644
index 0000000..5d636e1
--- /dev/null
+++ b/docs/images/srai.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='shamt' height='26' style='fill-opacity:0.1;fill:#006aff' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>shamt</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>1</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP-IMM</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>imm[11:5]</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SRAI</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/srl.svg b/docs/images/srl.svg
new file mode 100644
index 0000000..ae348c5
--- /dev/null
+++ b/docs/images/srl.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>funct7</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SRL</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/srli.svg b/docs/images/srli.svg
new file mode 100644
index 0000000..1028426
--- /dev/null
+++ b/docs/images/srli.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='shamt' height='26' style='fill-opacity:0.1;fill:#006aff' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>1</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>shamt</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP-IMM</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>imm[11:5]</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SRLI</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/sub.svg b/docs/images/sub.svg
new file mode 100644
index 0000000..56fe6ca
--- /dev/null
+++ b/docs/images/sub.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>1</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>funct7</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SUB</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/sw.svg b/docs/images/sw.svg
new file mode 100644
index 0000000..8d84a28
--- /dev/null
+++ b/docs/images/sw.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='imm[4:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/><rect field='imm[11:5]' height='26' style='fill-opacity:0.1;fill:#006aff' width='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>0</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>imm[4:0]</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>1</text></g><g transform='translate(380)'><text y='6'>0</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>imm[11:5]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>STORE</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>SW</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/u-immediate.svg b/docs/images/u-immediate.svg
new file mode 100644
index 0000000..608746b
--- /dev/null
+++ b/docs/images/u-immediate.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='3'/><line x1='559' x2='559' y1='26' y2='23'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='3'/><line x1='380' x2='380' y1='26' y2='23'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='3'/><line x1='268' x2='268' y1='26' y2='23'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g/><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g transform='translate(570)'><text y='6'><tspan>0</tspan></text></g><g transform='translate(212)'><text y='6'><tspan>inst[31:12]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(570)'><text y='6'><tspan>12</tspan></text></g><g transform='translate(212)'><text y='6'><tspan>20</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>U-immediate</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/xor.svg b/docs/images/xor.svg
new file mode 100644
index 0000000..69a26ba
--- /dev/null
+++ b/docs/images/xor.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='26'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='rs2' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='156'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(156)'><text y='6'>24</text></g><g transform='translate(134)'><text y='6'>25</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>1</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(201)'><text y='6'><tspan>rs2</tspan></text></g><g><g transform='translate(134)'><text y='6'>0</text></g><g transform='translate(112)'><text y='6'>0</text></g><g transform='translate(89)'><text y='6'>0</text></g><g transform='translate(67)'><text y='6'>0</text></g><g transform='translate(45)'><text y='6'>0</text></g><g transform='translate(22)'><text y='6'>0</text></g><g transform='translate(0)'><text y='6'>0</text></g></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g><g transform='translate(67)'><text y='6'><tspan>funct7</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>XOR</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/docs/images/xori.svg b/docs/images/xori.svg
new file mode 100644
index 0000000..334e6c7
--- /dev/null
+++ b/docs/images/xori.svg
@@ -0,0 +1 @@
+<svg class='WaveDrom' height='60' preserveAspectRatio='xMidYMid meet' viewBox='0 0 800 60' width='800' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns='http://www.w3.org/2000/svg'><g font-family='sans-serif' font-size='12' font-weight='normal' text-anchor='middle' transform='translate(0.5,0.5)'><g transform='translate(4,18)'><g stroke='black' stroke-linecap='round' stroke-width='1'><line x2='715'/><line y2='26'/><line x2='715' y1='26' y2='26'/><line x1='715' x2='715' y2='26'/><line x1='693' x2='693' y2='3'/><line x1='693' x2='693' y1='26' y2='23'/><line x1='670' x2='670' y2='3'/><line x1='670' x2='670' y1='26' y2='23'/><line x1='648' x2='648' y2='3'/><line x1='648' x2='648' y1='26' y2='23'/><line x1='626' x2='626' y2='3'/><line x1='626' x2='626' y1='26' y2='23'/><line x1='603' x2='603' y2='3'/><line x1='603' x2='603' y1='26' y2='23'/><line x1='581' x2='581' y2='3'/><line x1='581' x2='581' y1='26' y2='23'/><line x1='559' x2='559' y2='26'/><line x1='536' x2='536' y2='3'/><line x1='536' x2='536' y1='26' y2='23'/><line x1='514' x2='514' y2='3'/><line x1='514' x2='514' y1='26' y2='23'/><line x1='492' x2='492' y2='3'/><line x1='492' x2='492' y1='26' y2='23'/><line x1='469' x2='469' y2='3'/><line x1='469' x2='469' y1='26' y2='23'/><line x1='447' x2='447' y2='26'/><line x1='425' x2='425' y2='3'/><line x1='425' x2='425' y1='26' y2='23'/><line x1='402' x2='402' y2='3'/><line x1='402' x2='402' y1='26' y2='23'/><line x1='380' x2='380' y2='26'/><line x1='358' x2='358' y2='3'/><line x1='358' x2='358' y1='26' y2='23'/><line x1='335' x2='335' y2='3'/><line x1='335' x2='335' y1='26' y2='23'/><line x1='313' x2='313' y2='3'/><line x1='313' x2='313' y1='26' y2='23'/><line x1='290' x2='290' y2='3'/><line x1='290' x2='290' y1='26' y2='23'/><line x1='268' x2='268' y2='26'/><line x1='246' x2='246' y2='3'/><line x1='246' x2='246' y1='26' y2='23'/><line x1='223' x2='223' y2='3'/><line x1='223' x2='223' y1='26' y2='23'/><line x1='201' x2='201' y2='3'/><line x1='201' x2='201' y1='26' y2='23'/><line x1='179' x2='179' y2='3'/><line x1='179' x2='179' y1='26' y2='23'/><line x1='156' x2='156' y2='3'/><line x1='156' x2='156' y1='26' y2='23'/><line x1='134' x2='134' y2='3'/><line x1='134' x2='134' y1='26' y2='23'/><line x1='112' x2='112' y2='3'/><line x1='112' x2='112' y1='26' y2='23'/><line x1='89' x2='89' y2='3'/><line x1='89' x2='89' y1='26' y2='23'/><line x1='67' x2='67' y2='3'/><line x1='67' x2='67' y1='26' y2='23'/><line x1='45' x2='45' y2='3'/><line x1='45' x2='45' y1='26' y2='23'/><line x1='22' x2='22' y2='3'/><line x1='22' x2='22' y1='26' y2='23'/></g><g><g><rect field='rd' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='447'/><rect field='rs1' height='26' style='fill-opacity:0.1;fill:#ff0000' width='112' x='268'/><rect field='imm[11:0]' height='26' style='fill-opacity:0.1;fill:#006aff' width='268'/></g><g transform='translate(11,-10)'><g transform='translate(693)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>6</text></g><g transform='translate(536)'><text y='6'>7</text></g><g transform='translate(447)'><text y='6'>11</text></g><g transform='translate(425)'><text y='6'>12</text></g><g transform='translate(380)'><text y='6'>14</text></g><g transform='translate(358)'><text y='6'>15</text></g><g transform='translate(268)'><text y='6'>19</text></g><g transform='translate(246)'><text y='6'>20</text></g><g transform='translate(0)'><text y='6'>31</text></g></g><g transform='translate(11,12)'><g><g transform='translate(693)'><text y='6'>1</text></g><g transform='translate(670)'><text y='6'>1</text></g><g transform='translate(648)'><text y='6'>0</text></g><g transform='translate(626)'><text y='6'>0</text></g><g transform='translate(603)'><text y='6'>1</text></g><g transform='translate(581)'><text y='6'>0</text></g><g transform='translate(559)'><text y='6'>0</text></g></g><g transform='translate(492)'><text y='6'><tspan>rd</tspan></text></g><g><g transform='translate(425)'><text y='6'>0</text></g><g transform='translate(402)'><text y='6'>0</text></g><g transform='translate(380)'><text y='6'>1</text></g></g><g transform='translate(313)'><text y='6'><tspan>rs1</tspan></text></g><g transform='translate(123)'><text y='6'><tspan>imm[11:0]</tspan></text></g></g><g transform='translate(11,32)'><g transform='translate(626)'><text y='6'><tspan>OP-IMM</tspan></text></g><g transform='translate(402)'><text y='6'><tspan>funct3</tspan></text></g></g></g><g text-anchor='start'><g transform='translate(719,13)'><text y='6'><tspan>XORI</tspan></text></g></g></g></g></svg> \ No newline at end of file
diff --git a/rtl/simple_alu.sv b/rtl/simple_alu.sv
new file mode 100644
index 0000000..a5ae9e7
--- /dev/null
+++ b/rtl/simple_alu.sv
@@ -0,0 +1,58 @@
+// Simple 32-bit ALU supporting addition and subtraction (sel=0/1).
+// Outputs are registered. Overflow/underflow detected via 33-bit extended arithmetic.
+// Active-low synchronous reset. Used as a sandbox for formal verification.
+module simple_alu (
+
+ //inputs
+ input logic clk_i,
+ input logic [31:0] a_i,
+ input logic [31:0] b_i,
+ input logic sel_i, //sel = 0 -> ADD, sel = 1 -> SUB
+ input logic rst_ni, //active LOW sync reset
+
+ //outputs
+ output logic [31:0] y_o,
+ output logic overflow_o
+);
+
+ logic [32:0] sum;
+ logic [32:0] diff;
+ logic [31:0] y_r;
+ logic overflow_r;
+ logic [31:0] y_next;
+ logic overflow_next;
+
+ always_comb begin
+ sum = {1'b0, a_i} + {1'b0, b_i};
+ diff = {1'b0, a_i} - {1'b0, b_i};
+
+ y_next = '0;
+ overflow_next = '0;
+
+ if (rst_ni) begin
+ case (sel_i)
+ 0: begin
+ y_next = sum[31:0];
+ overflow_next = sum[32];
+ end
+ 1: begin
+ y_next = diff[31:0];
+ overflow_next = diff[32];
+ end
+ default: begin
+ y_next = '0;
+ overflow_next = '0;
+ end
+ endcase
+ end
+ end
+
+ always_ff @(posedge clk_i) begin
+ y_r <= y_next;
+ overflow_r <= overflow_next;
+ end
+
+ assign y_o = y_r;
+ assign overflow_o = overflow_r;
+
+endmodule
diff --git a/verif/formal/simple_alu/README.md b/verif/formal/simple_alu/README.md
new file mode 100644
index 0000000..3355ced
--- /dev/null
+++ b/verif/formal/simple_alu/README.md
@@ -0,0 +1,23 @@
+# simple_alu Formal Verification
+
+Run with: `sby -f simple_alu.sby` from this directory.
+
+Reference: https://yosyshq.readthedocs.io/projects/sby/en/latest/reference.html
+
+## Mode
+
+Bounded Model Check (BMC, depth=100): proves assertions hold for the first 100 clock cycles.
+A counterexample waveform is generated on failure.
+
+Prove mode (k-induction): proves assertions hold for infinite time. Much stronger guarantee but harder to converge. Change `mode bmc` to `mode prove` in the `.sby` to use it.
+
+## Properties
+
+| Name | Status | Description |
+|-------------------|-------------|------------------------------------------|
+| `a_rst_check` | implemented | y == 0 one cycle after reset asserts |
+| `a_rst_overflow` | planned | overflow == 0 one cycle after reset |
+| `a_add` | planned | y == a+b one cycle after sel=0 |
+| `a_sub` | planned | y == a-b one cycle after sel=1 |
+| `a_overflow_add` | planned | overflow correct for addition |
+| `a_overflow_sub` | planned | overflow correct for subtraction | \ No newline at end of file
diff --git a/verif/formal/simple_alu/simple_alu.sby b/verif/formal/simple_alu/simple_alu.sby
new file mode 100644
index 0000000..cd028d9
--- /dev/null
+++ b/verif/formal/simple_alu/simple_alu.sby
@@ -0,0 +1,22 @@
+[tasks]
+bmc
+cover
+
+[options]
+bmc: mode bmc
+cover: mode cover
+depth 100
+
+[engines]
+smtbmc
+
+[script]
+read -formal -sv simple_alu.sv
+read -formal -sv simple_alu_fv.sv
+read -formal -sv simple_alu_top_fv.sv
+prep -top simple_alu_top_fv
+
+[files]
+../../../rtl/simple_alu.sv
+simple_alu_fv.sv
+simple_alu_top_fv.sv
diff --git a/verif/formal/simple_alu/simple_alu_bind.sv b/verif/formal/simple_alu/simple_alu_bind.sv
new file mode 100644
index 0000000..8ed7057
--- /dev/null
+++ b/verif/formal/simple_alu/simple_alu_bind.sv
@@ -0,0 +1,15 @@
+// Bind file for simple_alu formal verification.
+// Attaches simple_alu_fv to every instance of simple_alu in the design.
+// RTL is completely unaware of this file.
+//
+// bind <dut_module> <fv_module> <instance_name> (<port_connections>);
+
+bind simple_alu simple_alu_fv u_simple_alu_fv (
+ .clk (clk),
+ .rst (rst),
+ .a (a),
+ .b (b),
+ .sel (sel),
+ .y (y),
+ .overflow (overflow)
+);
diff --git a/verif/formal/simple_alu/simple_alu_fv.sv b/verif/formal/simple_alu/simple_alu_fv.sv
new file mode 100644
index 0000000..98c05a7
--- /dev/null
+++ b/verif/formal/simple_alu/simple_alu_fv.sv
@@ -0,0 +1,50 @@
+// Formal verification module for simple_alu.
+// All ports are inputs - this module only observes DUT signals, never drives them.
+// Instantiated via simple_alu_top_fv.sv wrapper (bind unsupported in open-source Yosys).
+module simple_alu_fv (
+ input logic clk_i,
+ input logic [31:0] a_i,
+ input logic [31:0] b_i,
+ input logic sel_i,
+ input logic rst_ni,
+
+ input logic [31:0] y_i,
+ input logic overflow_i
+ );
+
+ // -------------------------------------------------------------------------
+ // Initial assumptions - constrain starting state so solver doesn't
+ // explore garbage initial register values
+ // -------------------------------------------------------------------------
+ initial assume (~rst_ni);
+ initial assume (y_i == '0);
+ initial assume (overflow_i == 1'b0);
+
+ //assertion check: if rst deasserted, y tied to 0
+ //assertions are what we want to prove, formal verification is the engine that proves it
+ // property p_rst_y;
+ // @(posedge clk_i)
+ // ~rst_ni |=> (y_i=='0);
+ // endproperty
+ // a_rst_y: assert property (p_rst_y)
+ // else $error("RESET CHECK FAILED: rst_ni=%0b y_i=%0h, expected y=0", rst_ni, y_i);
+
+ // Reset check - y must be 0 one cycle after reset asserts (active low)
+ always @(posedge clk_i) begin
+ if ($past(~rst_ni)) begin
+ assert (y_i == '0);
+ assert (overflow_i == 0);
+ end
+ end
+
+ // -------------------------------------------------------------------------
+ // Cover statements - solver finds shortest path to reach each state
+ // These generate VCD traces you can inspect in GTKWave
+ // -------------------------------------------------------------------------
+
+ always @(posedge clk_i) begin
+ cover ($past(sel_i == 0) && overflow_i == 1'b1); // addition overflow
+ cover ($past(sel_i == 1) && overflow_i == 1'b1); // subtraction underflow
+ end
+
+endmodule
diff --git a/verif/formal/simple_alu/simple_alu_top_fv.sv b/verif/formal/simple_alu/simple_alu_top_fv.sv
new file mode 100644
index 0000000..8f1241c
--- /dev/null
+++ b/verif/formal/simple_alu/simple_alu_top_fv.sv
@@ -0,0 +1,37 @@
+// Wrapper top module for formal verification of simple_alu.
+// Instantiates the DUT and the checker side-by-side so the formal tool
+// sees both. Used because open-source Yosys does not support bind.
+// Note: only DUT ports are accessible here - internal signals (sum, diff)
+// cannot be tapped without bind or Verific.
+module simple_alu_top_fv (
+ input logic clk_i,
+ input logic [31:0] a_i,
+ input logic [31:0] b_i,
+ input logic sel_i,
+ input logic rst_ni
+);
+ logic [31:0] y;
+ logic overflow;
+
+ // DUT instance
+ simple_alu dut (
+ .clk_i (clk_i),
+ .a_i (a_i),
+ .b_i (b_i),
+ .sel_i (sel_i),
+ .rst_ni (rst_ni),
+ .y_o (y),
+ .overflow_o (overflow)
+ );
+
+ // Checker instance - observes DUT outputs
+ simple_alu_fv u_checker (
+ .clk_i (clk_i),
+ .a_i (a_i),
+ .b_i (b_i),
+ .sel_i (sel_i),
+ .rst_ni (rst_ni),
+ .y_i (y),
+ .overflow_i (overflow)
+ );
+endmodule
diff --git a/verif/uvm/env.sv b/verif/uvm/env.sv
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/verif/uvm/env.sv