rex-arch 0.1.17 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b808357e7933db7201a54c9b1149fbb317939bd2e51dd8f390690a3f758303b5
4
- data.tar.gz: 9f10b05760a511720cf5d437405e816f984442ba3fc55cb9f452f76fa6213f66
3
+ metadata.gz: 201b0697dc0505159d684431af62c3596829f8fb5210df2abdee9c3da7ee26f9
4
+ data.tar.gz: 43fa120c8cd3a2b3b5068c413d96100ae843eee75195e97f35bd8591246f1c51
5
5
  SHA512:
6
- metadata.gz: 35a156269f9eec82e3ee0618538432eb6bd259628ab7c18c470a9d803e40b580f173ba3da8531526e072778df59cf09cbc6a82a24e51d350b19feacd4c8dcd3a
7
- data.tar.gz: 539b900f82efcb47ba944e8b7357cb293b5cf1b799cb7780913874369670dcbbd075a5e264dc1cae15c3d787b60f7617b7763878924ed51faadfd79c9a3435fc
6
+ metadata.gz: 8f5767e6b29b85abc0455cf6d2d094093a30d8fd511fcf9a41a8376db3501b2b3ffc14e6674974a1872d893832fb48db82a51785ef0b336b27a21b96e9c84b98
7
+ data.tar.gz: 1fd5a7067140dcc6b9316ca1ca322d496581601ba30b4635ec60acbd8cbdec4fc0611b6eb4d7ecb18d35b6556770e340dbc6216b08cf61b7010676bf0fe31fb9
@@ -0,0 +1,60 @@
1
+ # -*- coding: binary -*-
2
+
3
+ module Rex
4
+ module Arch
5
+ #
6
+ # AArch64 64-bit
7
+ #
8
+ module AArch64
9
+ # Register number constants
10
+ X0 = W0 = 0 # function arg / return value
11
+ X1 = W1 = 1 # function arg / return value
12
+ X2 = W2 = 2 # function arg
13
+ X3 = W3 = 3 # function arg
14
+ X4 = W4 = 4 # function arg
15
+ X5 = W5 = 5 # function arg
16
+ X6 = W6 = 6 # function arg
17
+ X7 = W7 = 7 # function arg
18
+ X8 = W8 = 8 # indirect result location (a.k.a. "indirect result" / sometimes "XR")
19
+ X9 = W9 = 9 # temporary
20
+ X10 = W10 = 10 # temporary
21
+ X11 = W11 = 11 # temporary
22
+ X12 = W12 = 12 # temporary
23
+ X13 = W13 = 13 # temporary
24
+ X14 = W14 = 14 # temporary
25
+ X15 = W15 = 15 # temporary
26
+ X16 = W16 = 16 # intra-procedure call scratch (IP0)
27
+ X17 = W17 = 17 # intra-procedure call scratch (IP1)
28
+ X18 = W18 = 18 # platform register (reserved by OS)
29
+ X19 = W19 = 19 # callee-saved
30
+ X20 = W20 = 20 # callee-saved
31
+ X21 = W21 = 21 # callee-saved
32
+ X22 = W22 = 22 # callee-saved
33
+ X23 = W23 = 23 # callee-saved
34
+ X24 = W24 = 24 # callee-saved
35
+ X25 = W25 = 25 # callee-saved
36
+ X26 = W26 = 26 # callee-saved
37
+ X27 = W27 = 27 # callee-saved
38
+ X28 = W28 = 28 # callee-saved
39
+ X29 = W29 = FP = 29 # frame pointer
40
+ X30 = W30 = LR = 30 # link register (return address)
41
+ SP = 31 # stack pointer (shares encoding with XZR/WZR)
42
+ XZR = WZR = 31 # zero register (reads as 0, writes ignored)
43
+
44
+ # @return the number associated with a named register
45
+ def self.reg_number(str)
46
+ const_get(str.upcase)
47
+ end
48
+
49
+ # Check if a provided number represents a valid register
50
+ # @return [Boolean]
51
+ def self._check_reg(*regs)
52
+ regs.each do |reg|
53
+ raise ArgumentError, "Invalid register #{reg}", caller if reg > 31 || reg < 0
54
+ end
55
+
56
+ nil
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,43 @@
1
+ # -*- coding: binary -*-
2
+
3
+ module Rex
4
+ module Arch
5
+ #
6
+ # AMD64 (x86_64) 64-bit
7
+ #
8
+ module AMD64
9
+ # Register number constants
10
+ RAX = EAX = AX = AH = AL = 0 # accumulator
11
+ RBX = EBX = BX = BH = BL = 1 # base
12
+ RCX = ECX = CX = CH = CL = 2 # counter
13
+ RDX = EDX = DX = DH = DL = 3 # data
14
+ RSI = ESI = SI = 4 # source index
15
+ RDI = EDI = DI = 5 # destination index
16
+ RBP = EBP = BP = 6 # base pointer
17
+ RSP = ESP = SP = 7 # stack pointer
18
+ R8 = R8D = R8W = R8B = 8 # extended register
19
+ R9 = R9D = R9W = R9B = 9
20
+ R10 = R10D = R10W = R10B = 10
21
+ R11 = R11D = R11W = R11B = 11
22
+ R12 = R12D = R12W = R12B = 12
23
+ R13 = R13D = R13W = R13B = 13
24
+ R14 = R14D = R14W = R14B = 14
25
+ R15 = R15D = R15W = R15B = 15
26
+
27
+ # @return the number associated with a named register
28
+ def self.reg_number(str)
29
+ const_get(str.upcase)
30
+ end
31
+
32
+ # Check if a provided number represents a valid register
33
+ # @return [Boolean]
34
+ def self._check_reg(*regs)
35
+ regs.each do |reg|
36
+ raise ArgumentError, "Invalid register #{reg}", caller if reg > 15 || reg < 0
37
+ end
38
+
39
+ nil
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,43 @@
1
+ # -*- coding: binary -*-
2
+
3
+ module Rex
4
+ module Arch
5
+ #
6
+ # ARM 32-bit
7
+ #
8
+ module ARM
9
+ # Register number constants
10
+ R0 = A1 = 0 # function argument / return value
11
+ R1 = A2 = 1 # function argument
12
+ R2 = A3 = 2 # function argument
13
+ R3 = A4 = 3 # function argument
14
+ R4 = V1 = 4 # variable / callee-saved
15
+ R5 = V2 = 5 # variable / callee-saved
16
+ R6 = V3 = 6 # variable / callee-saved
17
+ R7 = V4 = 7 # variable / callee-saved
18
+ R8 = V5 = 8 # variable / callee-saved
19
+ R9 = V6 = SB = 9 # static base / callee-saved
20
+ R10 = V7 = SL = 10 # stack limit / callee-saved
21
+ R11 = V8 = FP = 11 # frame pointer
22
+ R12 = IP = 12 # intra-procedure scratch
23
+ R13 = SP = 13 # stack pointer
24
+ R14 = LR = 14 # link register (return address)
25
+ R15 = PC = 15 # program counter
26
+
27
+ # @return the number associated with a named register
28
+ def self.reg_number(str)
29
+ const_get(str.upcase)
30
+ end
31
+
32
+ # Check if a provided number represents a valid register
33
+ # @return [Boolean]
34
+ def self._check_reg(*regs)
35
+ regs.each do |reg|
36
+ raise ArgumentError, "Invalid register #{reg}", caller if reg > 15 || reg < 0
37
+ end
38
+
39
+ nil
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,59 @@
1
+ # -*- coding: binary -*-
2
+
3
+ module Rex
4
+ module Arch
5
+ #
6
+ # LoongArch64 64-bit
7
+ #
8
+ module LoongArch64
9
+ # Register number constants
10
+ R0 = ZERO = 0 # constant 0 (hardwired zero)
11
+ R1 = RA = 1 # return address
12
+ R2 = SP = 2 # stack pointer
13
+ R3 = GP = 3 # global pointer
14
+ R4 = TP = 4 # thread pointer
15
+ R5 = T0 = 5 # temporary
16
+ R6 = T1 = 6 # temporary
17
+ R7 = T2 = 7 # temporary
18
+ R8 = T3 = 8 # temporary
19
+ R9 = T4 = 9 # temporary
20
+ R10 = T5 = 10 # temporary
21
+ R11 = T6 = 11 # temporary
22
+ R12 = T7 = 12 # temporary
23
+ R13 = T8 = 13 # temporary
24
+ R14 = T9 = 14 # temporary
25
+ R15 = T10 = 15 # temporary
26
+ R16 = T11 = 16 # temporary
27
+ R17 = T12 = 17 # temporary
28
+ R18 = T13 = 18 # temporary
29
+ R19 = T14 = 19 # temporary
30
+ R20 = T15 = 20 # temporary
31
+ R21 = T16 = 21 # temporary
32
+ R22 = T17 = 22 # temporary
33
+ R23 = T18 = 23 # temporary
34
+ R24 = T19 = 24 # temporary
35
+ R25 = T20 = 25 # temporary
36
+ R26 = T21 = 26 # temporary
37
+ R27 = T22 = 27 # temporary
38
+ R28 = T23 = 28 # temporary
39
+ R29 = FP = 29 # frame pointer
40
+ R30 = S0 = 30 # saved register
41
+ R31 = S1 = 31 # saved register
42
+
43
+ # @return the number associated with a named register.
44
+ def self.reg_number(str)
45
+ const_get(str.upcase)
46
+ end
47
+
48
+ # Check if a provided number represents a valid register
49
+ # @return [Boolean]
50
+ def self._check_reg(*regs)
51
+ regs.each do |reg|
52
+ raise ArgumentError, "Invalid register #{reg}", caller if reg > 31 || reg < 0
53
+ end
54
+
55
+ nil
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,59 @@
1
+ # -*- coding: binary -*-
2
+
3
+ module Rex
4
+ module Arch
5
+ #
6
+ # MIPS 32-bit
7
+ #
8
+ module MIPS32
9
+ # Register number constants
10
+ R0 = ZERO = 0 # constant 0
11
+ R1 = AT = 1 # assembler temporary
12
+ R2 = V0 = 2 # function return value
13
+ R3 = V1 = 3 # function return value
14
+ R4 = A0 = 4 # argument
15
+ R5 = A1 = 5 # argument
16
+ R6 = A2 = 6 # argument
17
+ R7 = A3 = 7 # argument
18
+ R8 = T0 = 8 # temporary
19
+ R9 = T1 = 9 # temporary
20
+ R10 = T2 = 10 # temporary
21
+ R11 = T3 = 11 # temporary
22
+ R12 = T4 = 12 # temporary
23
+ R13 = T5 = 13 # temporary
24
+ R14 = T6 = 14 # temporary
25
+ R15 = T7 = 15 # temporary
26
+ R16 = S0 = 16 # saved register
27
+ R17 = S1 = 17 # saved register
28
+ R18 = S2 = 18 # saved register
29
+ R19 = S3 = 19 # saved register
30
+ R20 = S4 = 20 # saved register
31
+ R21 = S5 = 21 # saved register
32
+ R22 = S6 = 22 # saved register
33
+ R23 = S7 = 23 # saved register
34
+ R24 = T8 = 24 # temporary
35
+ R25 = T9 = 25 # temporary
36
+ R26 = K0 = 26 # reserved for OS
37
+ R27 = K1 = 27 # reserved for OS
38
+ R28 = GP = 28 # global pointer
39
+ R29 = SP = 29 # stack pointer
40
+ R30 = FP = S8 = 30 # frame pointer / saved
41
+ R31 = RA = 31 # return address
42
+
43
+ # @return the number associated with a named register
44
+ def self.reg_number(str)
45
+ const_get(str.upcase)
46
+ end
47
+
48
+ # Check if a provided number represents a valid register
49
+ # @return [Boolean]
50
+ def self._check_reg(*regs)
51
+ regs.each do |reg|
52
+ raise ArgumentError, "Invalid register #{reg}", caller if reg > 31 || reg < 0
53
+ end
54
+
55
+ nil
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,59 @@
1
+ # -*- coding: binary -*-
2
+
3
+ module Rex
4
+ module Arch
5
+ #
6
+ # MIPS 64-bit
7
+ #
8
+ module MIPS64
9
+ # Register number constants
10
+ R0 = ZERO = 0 # constant 0
11
+ R1 = AT = 1 # assembler temporary
12
+ R2 = V0 = 2 # function return value
13
+ R3 = V1 = 3 # function return value
14
+ R4 = A0 = 4 # argument
15
+ R5 = A1 = 5 # argument
16
+ R6 = A2 = 6 # argument
17
+ R7 = A3 = 7 # argument
18
+ R8 = T0 = 8 # temporary
19
+ R9 = T1 = 9 # temporary
20
+ R10 = T2 = 10 # temporary
21
+ R11 = T3 = 11 # temporary
22
+ R12 = T4 = 12 # temporary
23
+ R13 = T5 = 13 # temporary
24
+ R14 = T6 = 14 # temporary
25
+ R15 = T7 = 15 # temporary
26
+ R16 = S0 = 16 # saved register
27
+ R17 = S1 = 17 # saved register
28
+ R18 = S2 = 18 # saved register
29
+ R19 = S3 = 19 # saved register
30
+ R20 = S4 = 20 # saved register
31
+ R21 = S5 = 21 # saved register
32
+ R22 = S6 = 22 # saved register
33
+ R23 = S7 = 23 # saved register
34
+ R24 = T8 = 24 # temporary
35
+ R25 = T9 = 25 # temporary
36
+ R26 = K0 = 26 # reserved for OS
37
+ R27 = K1 = 27 # reserved for OS
38
+ R28 = GP = 28 # global pointer
39
+ R29 = SP = 29 # stack pointer
40
+ R30 = FP = S8 = 30 # frame pointer / saved
41
+ R31 = RA = 31 # return address
42
+
43
+ # @return the number associated with a named register
44
+ def self.reg_number(str)
45
+ const_get(str.upcase)
46
+ end
47
+
48
+ # Check if a provided number represents a valid register
49
+ # @return [Boolean]
50
+ def self._check_reg(*regs)
51
+ regs.each do |reg|
52
+ raise ArgumentError, "Invalid register #{reg}", caller if reg > 31 || reg < 0
53
+ end
54
+
55
+ nil
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,59 @@
1
+ # -*- coding: binary -*-
2
+
3
+ module Rex
4
+ module Arch
5
+ #
6
+ # PPC 32-bit
7
+ #
8
+ module PPC32
9
+ # Register number constants
10
+ R0 = 0 # scratch / special
11
+ R1 = SP = 1 # stack pointer
12
+ R2 = TOC = 2 # table of contents / global pointer
13
+ R3 = 3 # function argument / return value
14
+ R4 = 4 # function argument
15
+ R5 = 5 # function argument
16
+ R6 = 6 # function argument
17
+ R7 = 7 # function argument
18
+ R8 = 8 # function argument
19
+ R9 = 9 # function argument
20
+ R10 = 10 # function argument
21
+ R11 = 11 # temporary
22
+ R12 = 12 # temporary
23
+ R13 = 13 # small data area pointer
24
+ R14 = 14 # callee-saved
25
+ R15 = 15 # callee-saved
26
+ R16 = 16 # callee-saved
27
+ R17 = 17 # callee-saved
28
+ R18 = 18 # callee-saved
29
+ R19 = 19 # callee-saved
30
+ R20 = 20 # callee-saved
31
+ R21 = 21 # callee-saved
32
+ R22 = 22 # callee-saved
33
+ R23 = 23 # callee-saved
34
+ R24 = 24 # callee-saved
35
+ R25 = 25 # callee-saved
36
+ R26 = 26 # callee-saved
37
+ R27 = 27 # callee-saved
38
+ R28 = 28 # callee-saved
39
+ R29 = 29 # callee-saved
40
+ R30 = 30 # callee-saved
41
+ R31 = 31 # callee-saved
42
+
43
+ # @return the number associated with a named register
44
+ def self.reg_number(str)
45
+ const_get(str.upcase)
46
+ end
47
+
48
+ # Check if a provided number represents a valid register
49
+ # @return [Boolean]
50
+ def self._check_reg(*regs)
51
+ regs.each do |reg|
52
+ raise ArgumentError, "Invalid register #{reg}", caller if reg > 31 || reg < 0
53
+ end
54
+
55
+ nil
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,59 @@
1
+ # -*- coding: binary -*-
2
+
3
+ module Rex
4
+ module Arch
5
+ #
6
+ # PPC 64-bit
7
+ #
8
+ module PPC64
9
+ # Register number constants
10
+ R0 = 0 # scratch / special
11
+ R1 = SP = 1 # stack pointer
12
+ R2 = TOC = 2 # table of contents / global pointer
13
+ R3 = 3 # function argument / return value
14
+ R4 = 4 # function argument
15
+ R5 = 5 # function argument
16
+ R6 = 6 # function argument
17
+ R7 = 7 # function argument
18
+ R8 = 8 # function argument
19
+ R9 = 9 # function argument
20
+ R10 = 10 # function argument
21
+ R11 = 11 # temporary
22
+ R12 = 12 # temporary
23
+ R13 = 13 # small data area pointer
24
+ R14 = 14 # callee-saved
25
+ R15 = 15 # callee-saved
26
+ R16 = 16 # callee-saved
27
+ R17 = 17 # callee-saved
28
+ R18 = 18 # callee-saved
29
+ R19 = 19 # callee-saved
30
+ R20 = 20 # callee-saved
31
+ R21 = 21 # callee-saved
32
+ R22 = 22 # callee-saved
33
+ R23 = 23 # callee-saved
34
+ R24 = 24 # callee-saved
35
+ R25 = 25 # callee-saved
36
+ R26 = 26 # callee-saved
37
+ R27 = 27 # callee-saved
38
+ R28 = 28 # callee-saved
39
+ R29 = 29 # callee-saved
40
+ R30 = 30 # callee-saved
41
+ R31 = 31 # callee-saved
42
+
43
+ # @return the number associated with a named register
44
+ def self.reg_number(str)
45
+ const_get(str.upcase)
46
+ end
47
+
48
+ # Check if a provided number represents a valid register
49
+ # @return [Boolean]
50
+ def self._check_reg(*regs)
51
+ regs.each do |reg|
52
+ raise ArgumentError, "Invalid register #{reg}", caller if reg > 31 || reg < 0
53
+ end
54
+
55
+ nil
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,59 @@
1
+ # -*- coding: binary -*-
2
+
3
+ module Rex
4
+ module Arch
5
+ #
6
+ # RISC-V 32-bit
7
+ #
8
+ module RISCV32
9
+ # Register number constants
10
+ ZERO = X0 = 0 # constant 0
11
+ RA = X1 = 1 # return address
12
+ SP = X2 = 2 # stack pointer
13
+ GP = X3 = 3 # global pointer
14
+ TP = X4 = 4 # thread pointer
15
+ T0 = X5 = 5 # temporary register 0
16
+ T1 = X6 = 6 # temporary register 1
17
+ T2 = X7 = 7 # temporary register 2
18
+ S0 = FP = X8 = 8 # saved register / frame pointer
19
+ S1 = X9 = 9 # saved register
20
+ A0 = X10 = 10 # arg / return value
21
+ A1 = X11 = 11 # arg / return value
22
+ A2 = X12 = 12 # arg
23
+ A3 = X13 = 13 # arg
24
+ A4 = X14 = 14 # arg
25
+ A5 = X15 = 15 # arg
26
+ A6 = X16 = 16 # arg
27
+ A7 = X17 = 17 # arg
28
+ S2 = X18 = 18 # saved register
29
+ S3 = X19 = 19 # saved register
30
+ S4 = X20 = 20 # saved register
31
+ S5 = X21 = 21 # saved register
32
+ S6 = X22 = 22 # saved register
33
+ S7 = X23 = 23 # saved register
34
+ S8 = X24 = 24 # saved register
35
+ S9 = X25 = 25 # saved register
36
+ S10 = X26 = 26 # saved register
37
+ S11 = X27 = 27 # saved register
38
+ T3 = X28 = 28 # temporary register
39
+ T4 = X29 = 29 # temporary register
40
+ T5 = X30 = 30 # temporary register
41
+ T6 = X31 = 31 # temporary register
42
+
43
+ # @return the number associated with a named register.
44
+ def self.reg_number(str)
45
+ const_get(str.upcase)
46
+ end
47
+
48
+ # Check if a provided number represents a valid register
49
+ # @return [Boolean]
50
+ def self._check_reg(*regs)
51
+ regs.each do |reg|
52
+ raise ArgumentError, "Invalid register #{reg}", caller if reg > 31 || reg < 0
53
+ end
54
+
55
+ nil
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,59 @@
1
+ # -*- coding: binary -*-
2
+
3
+ module Rex
4
+ module Arch
5
+ #
6
+ # RISC-V 64-bit
7
+ #
8
+ module RISCV64
9
+ # Register number constants
10
+ ZERO = X0 = 0 # constant 0
11
+ RA = X1 = 1 # return address
12
+ SP = X2 = 2 # stack pointer
13
+ GP = X3 = 3 # global pointer
14
+ TP = X4 = 4 # thread pointer
15
+ T0 = X5 = 5 # temporary register 0
16
+ T1 = X6 = 6 # temporary register 1
17
+ T2 = X7 = 7 # temporary register 2
18
+ S0 = FP = X8 = 8 # saved register / frame pointer
19
+ S1 = X9 = 9 # saved register
20
+ A0 = X10 = 10 # arg / return value
21
+ A1 = X11 = 11 # arg / return value
22
+ A2 = X12 = 12 # arg
23
+ A3 = X13 = 13 # arg
24
+ A4 = X14 = 14 # arg
25
+ A5 = X15 = 15 # arg
26
+ A6 = X16 = 16 # arg
27
+ A7 = X17 = 17 # arg
28
+ S2 = X18 = 18 # saved register
29
+ S3 = X19 = 19 # saved register
30
+ S4 = X20 = 20 # saved register
31
+ S5 = X21 = 21 # saved register
32
+ S6 = X22 = 22 # saved register
33
+ S7 = X23 = 23 # saved register
34
+ S8 = X24 = 24 # saved register
35
+ S9 = X25 = 25 # saved register
36
+ S10 = X26 = 26 # saved register
37
+ S11 = X27 = 27 # saved register
38
+ T3 = X28 = 28 # temporary register
39
+ T4 = X29 = 29 # temporary register
40
+ T5 = X30 = 30 # temporary register
41
+ T6 = X31 = 31 # temporary register
42
+
43
+ # @return the number associated with a named register.
44
+ def self.reg_number(str)
45
+ const_get(str.upcase)
46
+ end
47
+
48
+ # Check if a provided number represents a valid register
49
+ # @return [Boolean]
50
+ def self._check_reg(*regs)
51
+ regs.each do |reg|
52
+ raise ArgumentError, "Invalid register #{reg}", caller if reg > 31 || reg < 0
53
+ end
54
+
55
+ nil
56
+ end
57
+ end
58
+ end
59
+ end
@@ -1,5 +1,5 @@
1
1
  module Rex
2
2
  module Arch
3
- VERSION = "0.1.17"
3
+ VERSION = "0.1.19"
4
4
  end
5
5
  end
@@ -1,17 +1,43 @@
1
1
  # -*- coding: binary -*-
2
2
 
3
3
  module Rex
4
- module Arch
4
+ module Arch
5
+ #
6
+ # z/Arch 64-bit
7
+ #
8
+ module ZArch
9
+ # Register number constants
10
+ R0 = 0 # general purpose, often scratch
11
+ R1 = 1 # general purpose, sometimes function arg
12
+ R2 = 2 # function argument / return value
13
+ R3 = 3 # function argument
14
+ R4 = 4 # function argument
15
+ R5 = 5 # function argument
16
+ R6 = 6 # function argument
17
+ R7 = 7 # function argument
18
+ R8 = 8 # callee-saved / local variable
19
+ R9 = 9 # callee-saved / local variable
20
+ R10 = 10 # callee-saved / local variable
21
+ R11 = 11 # callee-saved / local variable
22
+ R12 = 12 # callee-saved / local variable
23
+ R13 = 13 # callee-saved / local variable
24
+ R14 = LR = 14 # link register (return address)
25
+ R15 = SP = 15 # stack pointer / base register
5
26
 
6
- #
7
- # base module for ZARCH creation 8/13/15
8
- # Author: BeS Bigendian Smalls
9
- #
10
-
11
- module ZARCH
27
+ # @return the number associated with a named register
28
+ def self.reg_number(str)
29
+ const_get(str.upcase)
30
+ end
12
31
 
32
+ # Check if a provided number represents a valid register
33
+ # @return [Boolean]
34
+ def self._check_reg(*regs)
35
+ regs.each do |reg|
36
+ raise ArgumentError, "Invalid register #{reg}", caller if reg > 15 || reg < 0
37
+ end
13
38
 
39
+ nil
40
+ end
41
+ end
42
+ end
14
43
  end
15
-
16
- end end
17
-
data/lib/rex/arch.rb CHANGED
@@ -16,10 +16,21 @@ module Arch
16
16
  #
17
17
  # Architecture classes
18
18
  #
19
- require 'rex/arch/x86'
19
+ require 'rex/arch/aarch64'
20
+ require 'rex/arch/amd64'
21
+ require 'rex/arch/arm'
22
+ require 'rex/arch/loongarch64'
23
+ require 'rex/arch/mips32'
24
+ require 'rex/arch/mips64'
25
+ require 'rex/arch/ppc32'
26
+ require 'rex/arch/ppc64'
27
+ require 'rex/arch/riscv32'
28
+ require 'rex/arch/riscv64'
20
29
  require 'rex/arch/sparc'
30
+ require 'rex/arch/x86'
21
31
  require 'rex/arch/zarch'
22
32
 
33
+
23
34
  #
24
35
  # Architecture constants
25
36
  #
metadata CHANGED
@@ -1,40 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rex-arch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Metasploit Hackers
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
- cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIERDCCAqygAwIBAgIBATANBgkqhkiG9w0BAQsFADAmMSQwIgYDVQQDDBttc2Zk
14
- ZXYvREM9bWV0YXNwbG9pdC9EQz1jb20wHhcNMjMxMDMwMTYwNDI1WhcNMjUxMDI5
15
- MTYwNDI1WjAmMSQwIgYDVQQDDBttc2ZkZXYvREM9bWV0YXNwbG9pdC9EQz1jb20w
16
- ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDZN/EKv+yVjwiKWvjAVhjF
17
- aWNYI0E9bJ5d1qKd29omRYX9a+OOKBCu5+394fyF5RjwU4mYGr2iopX9ixRJrWXH
18
- ojs70tEvV1CmvP9rhz7JKzQQoJOkinrz4d+StIylxVxVdgm7DeiB3ruTwvl7qKUv
19
- piWzhrBFiVU6XIEAwq6wNEmnv2D+Omyf4h0Tf99hc6G0QmBnU3XydqvnZ+AzUbBV
20
- 24RH3+NQoigLbvK4M5aOeYhk19di58hznebOw6twHzNczshrBeMFQp985ScNgsvF
21
- rL+7HNNwpcpngERwZfzDNn7iYN5X3cyvTcykShtsuPMa5zXsYo42LZrsTF87DW38
22
- D8sxL6Dgdqu25Mltdw9m+iD4rHSfb1KJYEoNO+WwBJLO2Y4d6G1CR66tVeWsZspb
23
- zneOVC+sDuil7hOm+6a7Y2yrrRyT6IfL/07DywjPAIRUp5+Jn8ZrkWRNo2AOwWBG
24
- k5gz7SfJPHuyVnPlxoMA0MTFCUnnnbyHu882TGoJGgMCAwEAAaN9MHswCQYDVR0T
25
- BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFIQfNa4E889ZE334cwU7eNu2hScH
26
- MCAGA1UdEQQZMBeBFW1zZmRldkBtZXRhc3Bsb2l0LmNvbTAgBgNVHRIEGTAXgRVt
27
- c2ZkZXZAbWV0YXNwbG9pdC5jb20wDQYJKoZIhvcNAQELBQADggGBAMfzvKcV27p7
28
- pctmpW2JmIXLMrjNLyGJAxELH/t9pJueXdga7uj2fJkYQDbwGw5x4MGyFqhqJLH4
29
- l/qsUF3PyAXDTSWLVaqXQVWO+IIHxecG0XjPXTNudzMU0hzqbqiBKvsW7/a3V5BP
30
- SWlFzrFkoXWlPouFpoakyYMJjpW4SGdPzRv7pM4OhXtkXpHiRvx5985FrHgHlI89
31
- NSIuIUbp8zqk4hP1i9MV0Lc/vTf2gOmo+RHnjqG1NiYfMCYyY/Mcd4W36kGOl468
32
- I8VDTwgCufkAzFu7BJ5yCOueqtDcuq+d3YhAyU7NI4+Ja8EwazOnB+07sWhKpg7z
33
- yuQ1mWYPmZfVQpoSVv1CvXsoqJYXVPBBLOacKKSj8ArVG6pPn9Bej7IOQdblaFjl
34
- DgscAao7wB3xW2BWEp1KnaDWkf1x9ttgoBEYyuYwU7uatB67kBQG1PKvLt79wHvz
35
- Dxs+KOjGbBRfMnPgVGYkORKVrZIwlaboHbDKxcVW5xv+oZc7KYXWGg==
36
- -----END CERTIFICATE-----
37
- date: 2025-02-13 00:00:00.000000000 Z
10
+ cert_chain: []
11
+ date: 2026-01-15 00:00:00.000000000 Z
38
12
  dependencies:
39
13
  - !ruby/object:Gem::Dependency
40
14
  name: rake
@@ -96,6 +70,16 @@ files:
96
70
  - Rakefile
97
71
  - cortex.yaml
98
72
  - lib/rex/arch.rb
73
+ - lib/rex/arch/aarch64.rb
74
+ - lib/rex/arch/amd64.rb
75
+ - lib/rex/arch/arm.rb
76
+ - lib/rex/arch/loongarch64.rb
77
+ - lib/rex/arch/mips32.rb
78
+ - lib/rex/arch/mips64.rb
79
+ - lib/rex/arch/ppc32.rb
80
+ - lib/rex/arch/ppc64.rb
81
+ - lib/rex/arch/riscv32.rb
82
+ - lib/rex/arch/riscv64.rb
99
83
  - lib/rex/arch/sparc.rb
100
84
  - lib/rex/arch/version.rb
101
85
  - lib/rex/arch/x86.rb
@@ -105,7 +89,7 @@ homepage: https://github.com/rapid7/rex-arch
105
89
  licenses:
106
90
  - BSD-3-Clause
107
91
  metadata: {}
108
- post_install_message:
92
+ post_install_message:
109
93
  rdoc_options: []
110
94
  require_paths:
111
95
  - lib
@@ -120,8 +104,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
104
  - !ruby/object:Gem::Version
121
105
  version: '0'
122
106
  requirements: []
123
- rubygems_version: 3.5.23
124
- signing_key:
107
+ rubygems_version: 3.4.19
108
+ signing_key:
125
109
  specification_version: 4
126
110
  summary: Ruby Exploitation Library - rex-arch
127
111
  test_files: []
checksums.yaml.gz.sig DELETED
Binary file
data.tar.gz.sig DELETED
Binary file
metadata.gz.sig DELETED
@@ -1,3 +0,0 @@
1
- }!n�oA����܉״C��zf ��Ev�޾�w-'�r��%�$~�`o�ՠX�� K��7Eڭ��y)��<��k��gG.JB�?e�{G8���K�����M�V��(��w � ��3l\F0_P��,� <҃
2
- �$M������/f�;f�
3
- �ޒ!�ON�9�+87�u(�2DF��0p�U1��4l����L�� [���o���?���O�k�Q������O�&�P��x��̺Zv��IyG*�0dVN���f� �q����Qį�OQn~����AQ?����J}��߱6�eS��gl����#gd���ċ��U!�����Q|�T5�j��Q���J[�'��~ʓVay��0Z�����.�7�;7��