Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Unified Diff: src/arm/simulator-arm.cc

Issue 195024: Refactor the register to name mapping in the ARM simulator (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Added src/arm/constatns-arm.cc to Visual Studio project file Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/arm/simulator-arm.cc
===================================================================
--- src/arm/simulator-arm.cc (revision 2838)
+++ src/arm/simulator-arm.cc (working copy)
@@ -70,6 +70,7 @@
Simulator* sim_;
+ int32_t GetRegsiterValue(int regnum);
iposva 2009/09/08 21:59:57 GetRegisterValue
Søren Thygesen Gjesse 2009/09/09 07:01:12 Done.
bool GetValue(const char* desc, int32_t* value);
// Set or delete a breakpoint. Returns true if successful.
@@ -132,43 +133,19 @@
#endif
-// The order of these are important, see the handling of the 'print all'
-// debugger command.
-static const char* reg_names[] = { "r0", "r1", "r2", "r3",
- "r4", "r5", "r6", "r7",
- "r8", "r9", "r10", "r11",
- "r12", "r13", "r14", "r15",
- "pc", "lr", "sp", "ip",
- "fp", "sl", ""};
-
-static int reg_nums[] = { 0, 1, 2, 3,
- 4, 5, 6, 7,
- 8, 9, 10, 11,
- 12, 13, 14, 15,
- 15, 14, 13, 12,
- 11, 10};
-
-
-static int RegNameToRegNum(const char* name) {
- int reg = 0;
- while (*reg_names[reg] != 0) {
- if (strcmp(reg_names[reg], name) == 0) {
- return reg_nums[reg];
- }
- reg++;
+int32_t Debugger::GetRegsiterValue(int regnum) {
+ if (regnum == kPCRegister) {
+ return sim_->get_pc();
+ } else {
+ return sim_->get_register(regnum);
}
- return -1;
}
bool Debugger::GetValue(const char* desc, int32_t* value) {
- int regnum = RegNameToRegNum(desc);
- if (regnum >= 0) {
- if (regnum == 15) {
- *value = sim_->get_pc();
- } else {
- *value = sim_->get_register(regnum);
- }
+ int regnum = Registers::Number(desc);
+ if (regnum != kNoRegister) {
+ *value = GetRegsiterValue(regnum);
return true;
} else {
return SScanF(desc, "%i", value) == 1;
@@ -273,17 +250,9 @@
if (args == 2) {
int32_t value;
if (strcmp(arg1, "all") == 0) {
- for (int i = 0; i <= 15; i++) {
- if (GetValue(reg_names[i], &value)) {
- if (i <= 10) {
- PrintF("%3s: 0x%08x %d\n", reg_names[i], value, value);
- } else {
- PrintF("%3s: 0x%08x %d\n",
- reg_names[15 + 16 - i],
- value,
- value);
- }
- }
+ for (int i = 0; i < kNumRegisters; i++) {
+ value = GetRegsiterValue(i);
+ PrintF("%3s: 0x%08x %10d\n", Registers::Name(i), value, value);
}
} else {
if (GetValue(arg1, &value)) {
@@ -301,7 +270,6 @@
int32_t value;
if (GetValue(arg1, &value)) {
Object* obj = reinterpret_cast<Object*>(value);
- USE(obj);
PrintF("%s: \n", arg1);
#ifdef DEBUG
obj->PrintLn();

Powered by Google App Engine
This is Rietveld 408576698