In 64-bit mode a REX prefix only takes effect when it immediately precedes the opcode; a REX followed by a legacy prefix or another REX is ignored. The instruction decoder, the rewriter's reference classifier, DecodedInstruction and the SSE4a, SHA-256 and CLZERO operand decoders read legacy prefixes and then at most one REX. `48 F3 0F 2B 00` (MOVNTSS) was therefore scanned as `[48 F3][0F 2B 00]` and kept, and `48 67 0F 01 FC` lost its address-size prefix. All of them now accept REX bytes among the prefixes and keep only one that directly precedes the opcode. The converter's guard against prefix-only fragments is removed, since the decoder no longer produces them, and the TechnicalDebt entry describing the split is dropped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| cli | ||
| codegen | ||
| domain/include/domain | ||
| elfpatcher | ||
| io | ||
| relinker | ||
| CMakeLists.txt | ||
| main.cpp | ||