@@ -292,127 +292,178 @@ void RegistersView::InitMappings()
292
292
NextColumnPosition = std::max (NextColumnPosition, temp);
293
293
mRegisterMapping .insert (x87TW_0, " x87TW_0" );
294
294
mRegisterPlaces .insert (x87TW_0, Register_Position (offset, 0 , 8 , 10 ));
295
+ mRegisterRelativePlaces .insert (x87TW_0, Register_Relative_Position (x87TagWord, x87TW_1, x87TagWord, x87TW_2));
295
296
mRegisterMapping .insert (x87TW_1, " x87TW_1" );
296
297
mRegisterPlaces .insert (x87TW_1, Register_Position (offset++, NextColumnPosition, 8 , 10 ));
298
+ mRegisterRelativePlaces .insert (x87TW_1, Register_Relative_Position (x87TW_0, x87TW_2, x87TagWord, x87TW_3));
297
299
298
300
mRegisterMapping .insert (x87TW_2, " x87TW_2" );
299
301
mRegisterPlaces .insert (x87TW_2, Register_Position (offset, 0 , 8 , 10 ));
302
+ mRegisterRelativePlaces .insert (x87TW_2, Register_Relative_Position (x87TW_1, x87TW_3, x87TW_0, x87TW_4));
300
303
mRegisterMapping .insert (x87TW_3, " x87TW_3" );
301
304
mRegisterPlaces .insert (x87TW_3, Register_Position (offset++, NextColumnPosition, 8 , 10 ));
305
+ mRegisterRelativePlaces .insert (x87TW_3, Register_Relative_Position (x87TW_2, x87TW_4, x87TW_1, x87TW_5));
302
306
303
307
mRegisterMapping .insert (x87TW_4, " x87TW_4" );
304
308
mRegisterPlaces .insert (x87TW_4, Register_Position (offset, 0 , 8 , 10 ));
309
+ mRegisterRelativePlaces .insert (x87TW_4, Register_Relative_Position (x87TW_3, x87TW_5, x87TW_2, x87TW_6));
305
310
mRegisterMapping .insert (x87TW_5, " x87TW_5" );
306
311
mRegisterPlaces .insert (x87TW_5, Register_Position (offset++, NextColumnPosition, 8 , 10 ));
312
+ mRegisterRelativePlaces .insert (x87TW_5, Register_Relative_Position (x87TW_4, x87TW_6, x87TW_3, x87TW_7));
307
313
308
314
mRegisterMapping .insert (x87TW_6, " x87TW_6" );
309
315
mRegisterPlaces .insert (x87TW_6, Register_Position (offset, 0 , 8 , 10 ));
316
+ mRegisterRelativePlaces .insert (x87TW_6, Register_Relative_Position (x87TW_5, x87TW_7, x87TW_4, x87StatusWord));
310
317
mRegisterMapping .insert (x87TW_7, " x87TW_7" );
311
318
mRegisterPlaces .insert (x87TW_7, Register_Position (offset++, NextColumnPosition, 8 , 10 ));
319
+ mRegisterRelativePlaces .insert (x87TW_7, Register_Relative_Position (x87TW_6, x87StatusWord, x87TW_5, x87StatusWord));
320
+
312
321
313
322
offset++;
314
323
315
324
mRegisterMapping .insert (x87StatusWord, " x87StatusWord" );
316
325
mRegisterPlaces .insert (x87StatusWord, Register_Position (offset++, 0 , 14 , sizeof (WORD) * 2 ));
326
+ mRegisterRelativePlaces .insert (x87StatusWord, Register_Relative_Position (x87TW_7, x87SW_B));
317
327
318
328
mRegisterMapping .insert (x87SW_B, " x87SW_B" );
319
329
mRegisterPlaces .insert (x87SW_B, Register_Position (offset, 0 , 9 , 1 ));
330
+ mRegisterRelativePlaces .insert (x87SW_B, Register_Relative_Position (x87StatusWord, x87SW_C3, x87StatusWord, x87SW_C1));
320
331
mRegisterMapping .insert (x87SW_C3, " x87SW_C3" );
321
332
mRegisterPlaces .insert (x87SW_C3, Register_Position (offset, 12 , 10 , 1 ));
333
+ mRegisterRelativePlaces .insert (x87SW_C3, Register_Relative_Position (x87SW_B, x87SW_C2, x87StatusWord, x87SW_C0));
322
334
mRegisterMapping .insert (x87SW_C2, " x87SW_C2" );
323
335
mRegisterPlaces .insert (x87SW_C2, Register_Position (offset++, 25 , 10 , 1 ));
336
+ mRegisterRelativePlaces .insert (x87SW_C2, Register_Relative_Position (x87SW_C3, x87SW_C1, x87StatusWord, x87SW_ES));
324
337
325
338
mRegisterMapping .insert (x87SW_C1, " x87SW_C1" );
326
339
mRegisterPlaces .insert (x87SW_C1, Register_Position (offset, 0 , 9 , 1 ));
340
+ mRegisterRelativePlaces .insert (x87SW_C1, Register_Relative_Position (x87SW_C2, x87SW_C0, x87SW_B, x87SW_SF));
327
341
mRegisterMapping .insert (x87SW_C0, " x87SW_C0" );
328
342
mRegisterPlaces .insert (x87SW_C0, Register_Position (offset, 12 , 10 , 1 ));
343
+ mRegisterRelativePlaces .insert (x87SW_C0, Register_Relative_Position (x87SW_C1, x87SW_ES, x87SW_C3, x87SW_P));
329
344
mRegisterMapping .insert (x87SW_ES, " x87SW_ES" );
330
345
mRegisterPlaces .insert (x87SW_ES, Register_Position (offset++, 25 , 10 , 1 ));
346
+ mRegisterRelativePlaces .insert (x87SW_ES, Register_Relative_Position (x87SW_C0, x87SW_SF, x87SW_C2, x87SW_U));
331
347
332
348
mRegisterMapping .insert (x87SW_SF, " x87SW_SF" );
333
349
mRegisterPlaces .insert (x87SW_SF, Register_Position (offset, 0 , 9 , 1 ));
350
+ mRegisterRelativePlaces .insert (x87SW_SF, Register_Relative_Position (x87SW_ES, x87SW_P, x87SW_C1, x87SW_O));
334
351
mRegisterMapping .insert (x87SW_P, " x87SW_P" );
335
352
mRegisterPlaces .insert (x87SW_P, Register_Position (offset, 12 , 10 , 1 ));
353
+ mRegisterRelativePlaces .insert (x87SW_P, Register_Relative_Position (x87SW_SF, x87SW_U, x87SW_C0, x87SW_Z));
336
354
mRegisterMapping .insert (x87SW_U, " x87SW_U" );
337
355
mRegisterPlaces .insert (x87SW_U, Register_Position (offset++, 25 , 10 , 1 ));
356
+ mRegisterRelativePlaces .insert (x87SW_U, Register_Relative_Position (x87SW_P, x87SW_O, x87SW_ES, x87SW_D));
338
357
339
358
mRegisterMapping .insert (x87SW_O, " x87SW_O" );
340
359
mRegisterPlaces .insert (x87SW_O, Register_Position (offset, 0 , 9 , 1 ));
360
+ mRegisterRelativePlaces .insert (x87SW_O, Register_Relative_Position (x87SW_U, x87SW_Z, x87SW_SF, x87SW_I));
341
361
mRegisterMapping .insert (x87SW_Z, " x87SW_Z" );
342
362
mRegisterPlaces .insert (x87SW_Z, Register_Position (offset, 12 , 10 , 1 ));
363
+ mRegisterRelativePlaces .insert (x87SW_Z, Register_Relative_Position (x87SW_O, x87SW_D, x87SW_P, x87SW_TOP));
343
364
mRegisterMapping .insert (x87SW_D, " x87SW_D" );
344
365
mRegisterPlaces .insert (x87SW_D, Register_Position (offset++, 25 , 10 , 1 ));
366
+ mRegisterRelativePlaces .insert (x87SW_D, Register_Relative_Position (x87SW_Z, x87SW_I, x87SW_U, x87SW_TOP));
345
367
346
368
mRegisterMapping .insert (x87SW_I, " x87SW_I" );
347
369
mRegisterPlaces .insert (x87SW_I, Register_Position (offset, 0 , 9 , 1 ));
370
+ mRegisterRelativePlaces .insert (x87SW_I, Register_Relative_Position (x87SW_D, x87SW_TOP, x87SW_O, x87ControlWord));
348
371
mRegisterMapping .insert (x87SW_TOP, " x87SW_TOP" );
349
372
mRegisterPlaces .insert (x87SW_TOP, Register_Position (offset++, 12 , 10 , 13 ));
373
+ mRegisterRelativePlaces .insert (x87SW_TOP, Register_Relative_Position (x87SW_I, x87ControlWord, x87SW_Z, x87ControlWord));
350
374
351
375
offset++;
352
376
353
377
mRegisterMapping .insert (x87ControlWord, " x87ControlWord" );
354
378
mRegisterPlaces .insert (x87ControlWord, Register_Position (offset++, 0 , 15 , sizeof (WORD) * 2 ));
379
+ mRegisterRelativePlaces .insert (x87ControlWord, Register_Relative_Position (x87SW_TOP, x87CW_IC));
355
380
356
381
mRegisterMapping .insert (x87CW_IC, " x87CW_IC" );
357
382
mRegisterPlaces .insert (x87CW_IC, Register_Position (offset, 0 , 9 , 1 ));
383
+ mRegisterRelativePlaces .insert (x87CW_IC, Register_Relative_Position (x87ControlWord, x87CW_ZM, x87ControlWord, x87CW_UM));
358
384
mRegisterMapping .insert (x87CW_ZM, " x87CW_ZM" );
359
385
mRegisterPlaces .insert (x87CW_ZM, Register_Position (offset, 12 , 10 , 1 ));
386
+ mRegisterRelativePlaces .insert (x87CW_ZM, Register_Relative_Position (x87CW_IC, x87CW_PM, x87ControlWord, x87CW_OM));
360
387
mRegisterMapping .insert (x87CW_PM, " x87CW_PM" );
361
388
mRegisterPlaces .insert (x87CW_PM, Register_Position (offset++, 25 , 10 , 1 ));
389
+ mRegisterRelativePlaces .insert (x87CW_PM, Register_Relative_Position (x87CW_ZM, x87CW_UM, x87ControlWord, x87CW_PC));
362
390
363
391
mRegisterMapping .insert (x87CW_UM, " x87CW_UM" );
364
392
mRegisterPlaces .insert (x87CW_UM, Register_Position (offset, 0 , 9 , 1 ));
393
+ mRegisterRelativePlaces .insert (x87CW_UM, Register_Relative_Position (x87CW_PM, x87CW_OM, x87CW_IC, x87CW_DM));
365
394
mRegisterMapping .insert (x87CW_OM, " x87CW_OM" );
366
395
mRegisterPlaces .insert (x87CW_OM, Register_Position (offset, 12 , 10 , 1 ));
396
+ mRegisterRelativePlaces .insert (x87CW_OM, Register_Relative_Position (x87CW_UM, x87CW_PC, x87CW_ZM, x87CW_IM));
367
397
mRegisterMapping .insert (x87CW_PC, " x87CW_PC" );
368
398
mRegisterPlaces .insert (x87CW_PC, Register_Position (offset++, 25 , 10 , 14 ));
399
+ mRegisterRelativePlaces .insert (x87CW_PC, Register_Relative_Position (x87CW_OM, x87CW_DM, x87CW_PM, x87CW_RC));
369
400
370
401
mRegisterMapping .insert (x87CW_DM, " x87CW_DM" );
371
402
mRegisterPlaces .insert (x87CW_DM, Register_Position (offset, 0 , 9 , 1 ));
403
+ mRegisterRelativePlaces .insert (x87CW_DM, Register_Relative_Position (x87CW_PC, x87CW_IM, x87CW_UM, MxCsr));
372
404
mRegisterMapping .insert (x87CW_IM, " x87CW_IM" );
373
405
mRegisterPlaces .insert (x87CW_IM, Register_Position (offset, 12 , 10 , 1 ));
406
+ mRegisterRelativePlaces .insert (x87CW_IM, Register_Relative_Position (x87CW_DM, x87CW_RC, x87CW_OM, MxCsr));
374
407
mRegisterMapping .insert (x87CW_RC, " x87CW_RC" );
375
408
mRegisterPlaces .insert (x87CW_RC, Register_Position (offset++, 25 , 10 , 14 ));
409
+ mRegisterRelativePlaces .insert (x87CW_RC, Register_Relative_Position (x87CW_IM, MxCsr, x87CW_PC, MxCsr));
376
410
377
411
offset++;
378
412
379
413
mRegisterMapping .insert (MxCsr, " MxCsr" );
380
414
mRegisterPlaces .insert (MxCsr, Register_Position (offset++, 0 , 6 , sizeof (DWORD) * 2 ));
415
+ mRegisterRelativePlaces .insert (MxCsr, Register_Relative_Position (x87CW_RC, MxCsr_FZ));
381
416
382
417
mRegisterMapping .insert (MxCsr_FZ, " MxCsr_FZ" );
383
418
mRegisterPlaces .insert (MxCsr_FZ, Register_Position (offset, 0 , 9 , 1 ));
419
+ mRegisterRelativePlaces .insert (MxCsr_FZ, Register_Relative_Position (MxCsr, MxCsr_PM, MxCsr, MxCsr_OM));
384
420
mRegisterMapping .insert (MxCsr_PM, " MxCsr_PM" );
385
421
mRegisterPlaces .insert (MxCsr_PM, Register_Position (offset, 12 , 10 , 1 ));
422
+ mRegisterRelativePlaces .insert (MxCsr_PM, Register_Relative_Position (MxCsr_FZ, MxCsr_UM, MxCsr, MxCsr_ZM));
386
423
mRegisterMapping .insert (MxCsr_UM, " MxCsr_UM" );
387
424
mRegisterPlaces .insert (MxCsr_UM, Register_Position (offset++, 25 , 10 , 1 ));
425
+ mRegisterRelativePlaces .insert (MxCsr_UM, Register_Relative_Position (MxCsr_PM, MxCsr_OM, MxCsr, MxCsr_IM));
388
426
389
427
mRegisterMapping .insert (MxCsr_OM, " MxCsr_OM" );
390
428
mRegisterPlaces .insert (MxCsr_OM, Register_Position (offset, 0 , 9 , 1 ));
429
+ mRegisterRelativePlaces .insert (MxCsr_OM, Register_Relative_Position (MxCsr_UM, MxCsr_ZM, MxCsr_FZ, MxCsr_UE));
391
430
mRegisterMapping .insert (MxCsr_ZM, " MxCsr_ZM" );
392
431
mRegisterPlaces .insert (MxCsr_ZM, Register_Position (offset, 12 , 10 , 1 ));
432
+ mRegisterRelativePlaces .insert (MxCsr_ZM, Register_Relative_Position (MxCsr_OM, MxCsr_IM, MxCsr_PM, MxCsr_PE));
393
433
mRegisterMapping .insert (MxCsr_IM, " MxCsr_IM" );
394
434
mRegisterPlaces .insert (MxCsr_IM, Register_Position (offset++, 25 , 10 , 1 ));
435
+ mRegisterRelativePlaces .insert (MxCsr_IM, Register_Relative_Position (MxCsr_ZM, MxCsr_UE, MxCsr_UM, MxCsr_DAZ));
395
436
396
437
mRegisterMapping .insert (MxCsr_UE, " MxCsr_UE" );
397
438
mRegisterPlaces .insert (MxCsr_UE, Register_Position (offset, 0 , 9 , 1 ));
439
+ mRegisterRelativePlaces .insert (MxCsr_UE, Register_Relative_Position (MxCsr_IM, MxCsr_PE, MxCsr_OM, MxCsr_OE));
398
440
mRegisterMapping .insert (MxCsr_PE, " MxCsr_PE" );
399
441
mRegisterPlaces .insert (MxCsr_PE, Register_Position (offset, 12 , 10 , 1 ));
442
+ mRegisterRelativePlaces .insert (MxCsr_PE, Register_Relative_Position (MxCsr_UE, MxCsr_DAZ, MxCsr_ZM, MxCsr_ZE));
400
443
mRegisterMapping .insert (MxCsr_DAZ, " MxCsr_DAZ" );
401
444
mRegisterPlaces .insert (MxCsr_DAZ, Register_Position (offset++, 25 , 10 , 1 ));
445
+ mRegisterRelativePlaces .insert (MxCsr_DAZ, Register_Relative_Position (MxCsr_PE, MxCsr_OE, MxCsr_IM, MxCsr_DE));
402
446
403
447
mRegisterMapping .insert (MxCsr_OE, " MxCsr_OE" );
404
448
mRegisterPlaces .insert (MxCsr_OE, Register_Position (offset, 0 , 9 , 1 ));
449
+ mRegisterRelativePlaces .insert (MxCsr_OE, Register_Relative_Position (MxCsr_DAZ, MxCsr_ZE, MxCsr_UE, MxCsr_IE));
405
450
mRegisterMapping .insert (MxCsr_ZE, " MxCsr_ZE" );
406
451
mRegisterPlaces .insert (MxCsr_ZE, Register_Position (offset, 12 , 10 , 1 ));
452
+ mRegisterRelativePlaces .insert (MxCsr_ZE, Register_Relative_Position (MxCsr_OE, MxCsr_DE, MxCsr_PE, MxCsr_DM));
407
453
mRegisterMapping .insert (MxCsr_DE, " MxCsr_DE" );
408
454
mRegisterPlaces .insert (MxCsr_DE, Register_Position (offset++, 25 , 10 , 1 ));
455
+ mRegisterRelativePlaces .insert (MxCsr_DE, Register_Relative_Position (MxCsr_ZE, MxCsr_IE, MxCsr_DAZ, MxCsr_RC));
409
456
410
457
mRegisterMapping .insert (MxCsr_IE, " MxCsr_IE" );
411
458
mRegisterPlaces .insert (MxCsr_IE, Register_Position (offset, 0 , 9 , 1 ));
459
+ mRegisterRelativePlaces .insert (MxCsr_IE, Register_Relative_Position (MxCsr_DE, MxCsr_DM, MxCsr_OE, MM0));
412
460
mRegisterMapping .insert (MxCsr_DM, " MxCsr_DM" );
413
461
mRegisterPlaces .insert (MxCsr_DM, Register_Position (offset, 12 , 10 , 1 ));
462
+ mRegisterRelativePlaces .insert (MxCsr_DM, Register_Relative_Position (MxCsr_IE, MxCsr_RC, MxCsr_ZE, MM0));
414
463
mRegisterMapping .insert (MxCsr_RC, " MxCsr_RC" );
415
464
mRegisterPlaces .insert (MxCsr_RC, Register_Position (offset++, 25 , 10 , 19 ));
465
+ mRegisterRelativePlaces .insert (MxCsr_RC, Register_Relative_Position (MxCsr_DM, MM0, MxCsr_DE, MM0));
466
+
416
467
417
468
offset++;
418
469
0 commit comments