dotnet / dotnet/BenchmarkDotNet
Migrate arm64 disassembler implementation to AsmArm64
- Vorherrschende Sprache
- C#
- Sterne
- 11.5k
- Forks
- 1.1k
- Ø Merge
- 6 T. 11 Std.
- Gemergte PRs (30 T.)
- 12
Beschreibung
Currently, BenchmarkDotNet using `Gee.External.Capstone` package for `arm64` disassembler.
And `Iced` for x86/x64 disassemblers.
`Gee.External.Capstone` package contains a lot of native dependency DLLs.
So It's better to migrate to use [AsmArm64](https://github.com/xoofx/AsmArm64).
### Support newer instruction
Currently, `Gee.External.Capstone` using capstone v4.0.2 binaries. and it looks like some instruction support are missing.
On .NET 11, arm64 minimum instruction requirement is updated.
So it might need to handle additional instructions that are emitted by JIT.
https://github.com/dotnet/docs/blob/main/docs/core/whats-new/dotnet-11/runtime.md#arm64-requirements
e.g. .NET 11 JIT looks like emitting `RETAA`/`RETBB`, but current `Gee.External.Capstone` can't handle these instructions.
https://github.com/dotnet/runtime/blob/7e807becb8c6b1917dac0565c674ade7947a8bec/src/coreclr/jit/instrsarm64.h#L1321C21-L1324
### Known Issues when migrated to AsmArm64
- Currently AsmArm64 don't support SVE/SVE2/SME instruction. (`Gee.External.Capstone` also doesn't support these instruction though)
- ~~Disassembler results has some differences (e.g. instructions are resolved to alias (`MOVZ` is printed as `MOV` automatically))~~
Beitragsleitfaden
Rechercherichtung
Beginne damit, die Integration des arm64-Disassemblers und die aktuelle Verwendung von Gee.External.Capstone zu lokalisieren, und vergleiche dann die erforderliche Instruktionsunterstützung mit AsmArm64. Prüfe die .NET 11 JIT-Beispiele, insbesondere RETAA und RETBB, und verifiziere, dass die Migration die erwarteten emittierten Instruktionen verarbeitet, ohne das bestehende arm64-Disassemblierungsverhalten zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- csharp
- Bereich
- devtools
- Issue-Typ
- Refactoring
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Aktiv
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100