Skip to content

Commit 115b90d

Browse files
dl471mrexodia
authored andcommitted
Add arrow movements for rest of non-FPU registers
1 parent 2815ca2 commit 115b90d

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

src/gui/Src/Gui/RegistersView.cpp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ void RegistersView::InitMappings()
3030
// create mapping from internal id to name
3131
mRegisterMapping.clear();
3232
mRegisterPlaces.clear();
33+
mRegisterRelativePlaces.clear();
3334
int offset = 0;
3435

3536
/* Register_Position is a struct definition the position
@@ -155,26 +156,51 @@ void RegistersView::InitMappings()
155156

156157
mRegisterMapping.insert(LastError, "LastError");
157158
mRegisterPlaces.insert(LastError, Register_Position(offset++, 0, 11, 20));
159+
mRegisterRelativePlaces.insert(LastError, Register_Relative_Position(IF, LastStatus));
158160
mMODIFYDISPLAY.insert(LastError);
159161
mRegisterMapping.insert(LastStatus, "LastStatus");
160162
mRegisterPlaces.insert(LastStatus, Register_Position(offset++, 0, 11, 20));
163+
mRegisterRelativePlaces.insert(LastStatus, Register_Relative_Position(LastError, GS));
161164
mMODIFYDISPLAY.insert(LastStatus);
162165

163166
offset++;
164167

165168
mRegisterMapping.insert(GS, "GS");
166169
mRegisterPlaces.insert(GS, Register_Position(offset, 0, 3, 4));
170+
mRegisterRelativePlaces.insert(GS, Register_Relative_Position(LastStatus, FS, LastStatus, ES));
167171
mRegisterMapping.insert(FS, "FS");
168172
mRegisterPlaces.insert(FS, Register_Position(offset++, 9, 3, 4));
173+
mRegisterRelativePlaces.insert(FS, Register_Relative_Position(GS, ES, LastStatus, DS));
169174
mRegisterMapping.insert(ES, "ES");
170175
mRegisterPlaces.insert(ES, Register_Position(offset, 0, 3, 4));
176+
mRegisterRelativePlaces.insert(ES, Register_Relative_Position(FS, DS, GS, CS));
171177
mRegisterMapping.insert(DS, "DS");
172178
mRegisterPlaces.insert(DS, Register_Position(offset++, 9, 3, 4));
179+
mRegisterRelativePlaces.insert(DS, Register_Relative_Position(ES, CS, FS, SS));
173180
mRegisterMapping.insert(CS, "CS");
174181
mRegisterPlaces.insert(CS, Register_Position(offset, 0, 3, 4));
175182
mRegisterMapping.insert(SS, "SS");
176183
mRegisterPlaces.insert(SS, Register_Position(offset++, 9, 3, 4));
177184

185+
if(mShowFpu)
186+
{
187+
if(mFpuMode)
188+
{
189+
mRegisterRelativePlaces.insert(CS, Register_Relative_Position(DS, SS, ES, x87r0));
190+
mRegisterRelativePlaces.insert(SS, Register_Relative_Position(CS, x87r0, DS, x87r0));
191+
}
192+
else
193+
{
194+
mRegisterRelativePlaces.insert(CS, Register_Relative_Position(DS, SS, ES, x87st0));
195+
mRegisterRelativePlaces.insert(SS, Register_Relative_Position(CS, x87st0, DS, x87st0));
196+
}
197+
}
198+
else
199+
{
200+
mRegisterRelativePlaces.insert(CS, Register_Relative_Position(DS, SS, ES, DR0));
201+
mRegisterRelativePlaces.insert(SS, Register_Relative_Position(CS, DR0, DS, DR0));
202+
}
203+
178204
if(mShowFpu)
179205
{
180206
offset++;
@@ -455,18 +481,36 @@ void RegistersView::InitMappings()
455481

456482
offset++;
457483

484+
if(mShowFpu)
485+
{
486+
#ifdef _WIN64
487+
mRegisterRelativePlaces.insert(DR0, Register_Relative_Position(YMM15, DR1));
488+
#else
489+
mRegisterRelativePlaces.insert(DR0, Register_Relative_Position(YMM7, DR1));
490+
#endif
491+
}
492+
else
493+
{
494+
mRegisterRelativePlaces.insert(DR0, Register_Relative_Position(SS, DR1));
495+
}
496+
458497
mRegisterMapping.insert(DR0, "DR0");
459498
mRegisterPlaces.insert(DR0, Register_Position(offset++, 0, 4, sizeof(duint) * 2));
460499
mRegisterMapping.insert(DR1, "DR1");
461500
mRegisterPlaces.insert(DR1, Register_Position(offset++, 0, 4, sizeof(duint) * 2));
501+
mRegisterRelativePlaces.insert(DR1, Register_Relative_Position(DR0, DR2));
462502
mRegisterMapping.insert(DR2, "DR2");
463503
mRegisterPlaces.insert(DR2, Register_Position(offset++, 0, 4, sizeof(duint) * 2));
504+
mRegisterRelativePlaces.insert(DR2, Register_Relative_Position(DR1, DR3));
464505
mRegisterMapping.insert(DR3, "DR3");
465506
mRegisterPlaces.insert(DR3, Register_Position(offset++, 0, 4, sizeof(duint) * 2));
507+
mRegisterRelativePlaces.insert(DR3, Register_Relative_Position(DR2, DR6));
466508
mRegisterMapping.insert(DR6, "DR6");
467509
mRegisterPlaces.insert(DR6, Register_Position(offset++, 0, 4, sizeof(duint) * 2));
510+
mRegisterRelativePlaces.insert(DR6, Register_Relative_Position(DR3, DR7));
468511
mRegisterMapping.insert(DR7, "DR7");
469512
mRegisterPlaces.insert(DR7, Register_Position(offset++, 0, 4, sizeof(duint) * 2));
513+
mRegisterRelativePlaces.insert(DR7, Register_Relative_Position(DR6, UNKNOWN));
470514

471515
mRowsNeeded = offset + 1;
472516
}

0 commit comments

Comments
 (0)