Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Z
Zipr Toolchain
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Open Source Software
Zipr Toolchain
Commits
ee42505d
Commit
ee42505d
authored
7 years ago
by
an7s
Browse files
Options
Downloads
Patches
Plain Diff
Add utility function to promote registers
Former-commit-id: 4055d9d6e72f415e37ecae19ee7729f14bedb9bc
parent
5004bcea
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
libMEDSannotation/include/MEDS_Register.hpp
+1
-0
1 addition, 0 deletions
libMEDSannotation/include/MEDS_Register.hpp
libMEDSannotation/src/MEDS_Register.cpp
+81
-0
81 additions, 0 deletions
libMEDSannotation/src/MEDS_Register.cpp
with
82 additions
and
0 deletions
libMEDSannotation/include/MEDS_Register.hpp
+
1
−
0
View file @
ee42505d
...
...
@@ -59,6 +59,7 @@ class Register
static
std
::
string
toString
(
RegisterName
);
static
RegisterName
getFreeRegister64
(
const
RegisterSet_t
&
p_used
);
static
std
::
string
readRegisterSet
(
const
std
::
string
&
in
,
RegisterSet_t
&
out
);
static
RegisterName
promoteTo64
(
const
RegisterName
p_reg
);
};
...
...
This diff is collapsed.
Click to expand it.
libMEDSannotation/src/MEDS_Register.cpp
+
81
−
0
View file @
ee42505d
...
...
@@ -441,3 +441,84 @@ string Register::readRegisterSet(const string &in, RegisterSet_t &out)
assert
(
0
&&
"No terminator found for register list"
);
}
RegisterName
Register
::
promoteTo64
(
const
RegisterName
p_reg
)
{
if
(
is64bit
(
p_reg
))
return
p_reg
;
switch
(
p_reg
)
{
case
rn_AL
:
case
rn_AH
:
case
rn_AX
:
case
rn_EAX
:
return
rn_RAX
;
case
rn_BL
:
case
rn_BH
:
case
rn_BX
:
case
rn_EBX
:
return
rn_RBX
;
case
rn_CL
:
case
rn_CH
:
case
rn_CX
:
case
rn_ECX
:
return
rn_RCX
;
case
rn_DL
:
case
rn_DH
:
case
rn_DX
:
case
rn_EDX
:
return
rn_RDX
;
case
rn_DIL
:
case
rn_DI
:
case
rn_EDI
:
return
rn_RDI
;
case
rn_SIL
:
case
rn_SI
:
case
rn_ESI
:
return
rn_RSI
;
case
rn_BPL
:
case
rn_BP
:
case
rn_EBP
:
return
rn_RBP
;
case
rn_SPL
:
case
rn_SP
:
case
rn_ESP
:
return
rn_RSP
;
case
rn_R8B
:
case
rn_R8W
:
case
rn_R8D
:
return
rn_R8
;
case
rn_R9B
:
case
rn_R9W
:
case
rn_R9D
:
return
rn_R9
;
case
rn_R10B
:
case
rn_R10W
:
case
rn_R10D
:
return
rn_R10
;
case
rn_R11B
:
case
rn_R11W
:
case
rn_R11D
:
return
rn_R11
;
case
rn_R12B
:
case
rn_R12W
:
case
rn_R12D
:
return
rn_R12
;
case
rn_R13B
:
case
rn_R13W
:
case
rn_R13D
:
return
rn_R13
;
case
rn_R14B
:
case
rn_R14W
:
case
rn_R14D
:
return
rn_R14
;
case
rn_R15B
:
case
rn_R15W
:
case
rn_R15D
:
return
rn_R15
;
default:
return
rn_UNKNOWN
;
break
;
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment