Skip to content

Commit fb5d325

Browse files
committed
[Core] Unify register name retrieval methods
- Introduce `IRegisterNameAccessor` for platform-agnostic register name access. - Rename `GetRegString` to `GetRegisterName` for consistency. - Ensure all methods for retrieving register names are consistent across the codebase. 🎉
1 parent c1855c2 commit fb5d325

34 files changed

+101
-70
lines changed

src/Core/B2R2.Core.fsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<Compile Include="RegType.fs" />
2020
<Compile Include="WordSize.fs" />
2121
<Compile Include="RegisterID.fs" />
22+
<Compile Include="IRegisterNameAccessor.fs" />
2223
<Compile Include="Endian.fs" />
2324
<Compile Include="OS.fs" />
2425
<Compile Include="Architecture.fs" />

src/Core/IRegisterNameAccessor.fs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
(*
2+
B2R2 - the Next-Generation Reversing Platform
3+
4+
Copyright (c) SoftSec Lab. @ KAIST, since 2016
5+
6+
Permission is hereby granted, free of charge, to any person obtaining a copy
7+
of this software and associated documentation files (the "Software"), to deal
8+
in the Software without restriction, including without limitation the rights
9+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
copies of the Software, and to permit persons to whom the Software is
11+
furnished to do so, subject to the following conditions:
12+
13+
The above copyright notice and this permission notice shall be included in all
14+
copies or substantial portions of the Software.
15+
16+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
SOFTWARE.
23+
*)
24+
25+
namespace B2R2
26+
27+
/// <summary>
28+
/// Provides methods to retrieve register names in a platform-agnostic manner.
29+
/// </summary>
30+
type IRegisterNameAccessor =
31+
/// <summary>
32+
/// Returns a register name from a given RegisterID.
33+
/// </summary>
34+
abstract GetRegisterName: RegisterID -> string
35+
36+
/// <summary>
37+
/// Returns all register names used in the current architecture.
38+
/// </summary>
39+
abstract GetAllRegisterNames: unit -> string[]

src/FrontEnd/ARM32/RegisterFactory.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -566,13 +566,13 @@ type RegisterFactory() =
566566
member _.GetRegisterIDAliases rid =
567567
[| rid |]
568568

569-
member _.GetRegString rid =
569+
member _.GetRegisterName rid =
570570
Register.ofRegID rid |> Register.toString
571571

572-
member this.GetAllRegStrings() =
572+
member this.GetAllRegisterNames() =
573573
let regFactory = this :> IRegisterFactory
574574
regFactory.GetAllRegVars()
575-
|> Array.map (regFactory.GetRegisterID >> regFactory.GetRegString)
575+
|> Array.map (regFactory.GetRegisterID >> regFactory.GetRegisterName)
576576

577577
member _.GetRegType rid =
578578
Register.ofRegID rid |> Register.toRegType

src/FrontEnd/ARM64/RegisterFactory.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1461,13 +1461,13 @@ type RegisterFactory() =
14611461
|> Register.getAliases
14621462
|> Array.map Register.toRegID
14631463

1464-
member _.GetRegString rid =
1464+
member _.GetRegisterName rid =
14651465
Register.ofRegID rid |> Register.toString
14661466

1467-
member this.GetAllRegStrings() =
1467+
member this.GetAllRegisterNames() =
14681468
let regFactory = this :> IRegisterFactory
14691469
regFactory.GetAllRegVars()
1470-
|> Array.map (regFactory.GetRegisterID >> regFactory.GetRegString)
1470+
|> Array.map (regFactory.GetRegisterID >> regFactory.GetRegisterName)
14711471

14721472
member _.GetRegType rid =
14731473
Register.ofRegID rid |> Register.toRegType

src/FrontEnd/AVR/RegisterFactory.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,9 @@ type RegisterFactory(wordSize) =
153153

154154
member _.GetRegisterIDAliases _ = Terminator.futureFeature ()
155155

156-
member _.GetRegString _ = Terminator.futureFeature ()
156+
member _.GetRegisterName _ = Terminator.futureFeature ()
157157

158-
member _.GetAllRegStrings() = Terminator.futureFeature ()
158+
member _.GetAllRegisterNames() = Terminator.futureFeature ()
159159

160160
member _.GetRegType _ = Terminator.futureFeature ()
161161

src/FrontEnd/BinFile/ELF/CanonicalFrameAddress.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ with
3939
static member ToString(regFactory: IRegisterFactory, cfa) =
4040
match cfa with
4141
| RegPlusOffset(rid, offset) ->
42-
regFactory.GetRegString rid + (offset.ToString("+0;-#"))
42+
regFactory.GetRegisterName rid + (offset.ToString("+0;-#"))
4343
| Expression exp ->
4444
PrettyPrinter.ToString exp
4545
| UnknownCFA -> "unknown"

src/FrontEnd/BinLifter/ILowUIRBuilder.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ type ILowUIRBuilder =
7878
member _.GetRegisterID expr = regFactory.GetRegisterID(expr = expr)
7979
member _.GetRegisterID name = regFactory.GetRegisterID(name = name)
8080
member _.GetRegisterIDAliases id = regFactory.GetRegisterIDAliases id
81-
member _.GetRegString id = regFactory.GetRegString id
82-
member _.GetAllRegStrings() = regFactory.GetAllRegStrings()
81+
member _.GetRegisterName id = regFactory.GetRegisterName id
82+
member _.GetAllRegisterNames() = regFactory.GetAllRegisterNames()
8383
member _.GetRegType id = regFactory.GetRegType id
8484
member _.ProgramCounter = regFactory.ProgramCounter
8585
member _.StackPointer with get() = regFactory.StackPointer

src/FrontEnd/BinLifter/IRegisterFactory.fs

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ open B2R2.BinIR.LowUIR
3131
/// Provides a platform-agnostic interface for accessing register information.
3232
/// </summary>
3333
type IRegisterFactory =
34+
inherit IRegisterNameAccessor
3435
inherit IRegisterVarAccessor
3536

3637
/// Returns RegisterID from a given register var expression.
@@ -49,16 +50,6 @@ type IRegisterFactory =
4950
/// </summary>
5051
abstract GetRegisterIDAliases: RegisterID -> RegisterID[]
5152

52-
/// <summary>
53-
/// Returns a register string from a given RegisterID. Depending on the
54-
/// underlying architecture of the BinHandle, we may have a different string
55-
/// result.
56-
/// </summary>
57-
abstract GetRegString: RegisterID -> string
58-
59-
/// Returns all register names.
60-
abstract GetAllRegStrings: unit -> string[]
61-
6253
/// <summary>
6354
/// Returns a RegType from a given RegisterID.
6455
/// </summary>

src/FrontEnd/EVM/RegisterFactory.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ type RegisterFactory() =
6565

6666
member _.GetRegisterIDAliases _ = Terminator.futureFeature ()
6767

68-
member _.GetRegString rid =
68+
member _.GetRegisterName rid =
6969
Register.ofRegID rid |> Register.toString
7070

71-
member _.GetAllRegStrings() = [||]
71+
member _.GetAllRegisterNames() = [||]
7272

7373
member _.GetRegType rid =
7474
Register.ofRegID rid |> Register.toRegType

src/FrontEnd/Intel/LowUIRBuilder.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ type LowUIRBuilder(isa: ISA,
5454
member _.GetRegisterID expr = regFactory.GetRegisterID(expr = expr)
5555
member _.GetRegisterID name = regFactory.GetRegisterID(name = name)
5656
member _.GetRegisterIDAliases id = regFactory.GetRegisterIDAliases id
57-
member _.GetRegString id = regFactory.GetRegString id
58-
member _.GetAllRegStrings() = regFactory.GetAllRegStrings()
57+
member _.GetRegisterName id = regFactory.GetRegisterName id
58+
member _.GetAllRegisterNames() = regFactory.GetAllRegisterNames()
5959
member _.GetRegType id = regFactory.GetRegType id
6060
member _.ProgramCounter = regFactory.ProgramCounter
6161
member _.StackPointer with get() = regFactory.StackPointer

0 commit comments

Comments
 (0)