Module: Rex::Arch::RISCV32

Defined in:
lib/rex/arch/riscv32.rb

Overview

RISC-V 32-bit

Constant Summary collapse

ZERO =

Register number constants

X0 = 0
RA =

constant 0

X1 = 1
SP =

return address

X2 = 2
GP =

stack pointer

X3 = 3
TP =

global pointer

X4 = 4
T0 =

thread pointer

X5 = 5
T1 =

temporary register 0

X6 = 6
T2 =

temporary register 1

X7 = 7
S0 =

temporary register 2

FP = X8 = 8
S1 =

saved register / frame pointer

X9 = 9
A0 =

saved register

X10 = 10
A1 =

arg / return value

X11 = 11
A2 =

arg / return value

X12 = 12
A3 =

arg

X13 = 13
A4 =

arg

X14 = 14
A5 =

arg

X15 = 15
A6 =

arg

X16 = 16
A7 =

arg

X17 = 17
S2 =

arg

X18 = 18
S3 =

saved register

X19 = 19
S4 =

saved register

X20 = 20
S5 =

saved register

X21 = 21
S6 =

saved register

X22 = 22
S7 =

saved register

X23 = 23
S8 =

saved register

X24 = 24
S9 =

saved register

X25 = 25
S10 =

saved register

X26 = 26
S11 =

saved register

X27 = 27
T3 =

saved register

X28 = 28
T4 =

temporary register

X29 = 29
T5 =

temporary register

X30 = 30
T6 =

temporary register

X31 = 31

Class Method Summary collapse

Class Method Details

._check_reg(*regs) ⇒ Boolean

Check if a provided number represents a valid register

Returns:

  • (Boolean)


50
51
52
53
54
55
56
# File 'lib/rex/arch/riscv32.rb', line 50

def self._check_reg(*regs)
  regs.each do |reg|
    raise ArgumentError, "Invalid register #{reg}", caller if reg > 31 || reg < 0
  end

  nil
end

.reg_number(str) ⇒ Object

Returns the number associated with a named register.

Returns:

  • the number associated with a named register.



44
45
46
# File 'lib/rex/arch/riscv32.rb', line 44

def self.reg_number(str)
  const_get(str.upcase)
end