dotnet/runtime

The `emitDispIns` logic in `emitxarch.h` could use some cleanup

Open

#11.631 aperta il 7 dic 2018

Vedi su GitHub
 (4 commenti) (1 reazione) (0 assegnatari)C# (5445 fork)batch import
area-CodeGen-coreclrhelp wanted

Metriche repository

Star
 (17.886 star)
Metriche merge PR
 (Merge medio 12g 11h) (661 PR mergiate in 30 g)

Descrizione

As discussed in https://github.com/dotnet/coreclr/pull/21432 (and mentioned in various other issues), there are several cases where emitDispIns prints the wrong information.

Some examples of this are:

  • It prints movd instead of movq when the integer operand is an EA_8BYTE
  • It prints xrax instead of rax or eax for certain instructions that take both a floating-point and integer-register
  • It prints exclusively ymm or xmm for certain instructions that take both TYP_SIMD16 and TYP_SIMD32 (or a mix of both)

There are also some other issues scattered about given that the handling is often done on a "per instruction format" case.

We should investigate cleaning up this function to improve the logic and to ensure that it accurately prints the disassembly

category:implementation theme:debug-dumps skill-level:beginner cost:small impact:small

Guida contributor