AnyPS5/core/relinker
boykopovar a6bb98d4d5
Merge pull request #54 from oneandonlydean/feat/extrq-register-form
feat(relinker): lower register-form EXTRQ and relocate following instructions for short sites
- **Lowering:** register-form EXTRQ is emitted out of line with SSE2 only. Two scratch XMM registers (distinct from both operands) are spilled; one gets the index (`src >> 8 & 63`), the other `(64 - length) & 63` (`length` masked to 6 bits, so 0 means 64). The destination is shifted right by the index, then left and right by the complement, which keeps the low `length` bits. INSERTQ register form is still reported as unsupported.
- **Short sites:** when a site is shorter than a `jmp rel32`, the converter extends it over the instructions that follow it until it's 5 bytes long:
  - following EXTRQ/INSERTQ instructions (before any other instruction) are lowered into the same stub, via a new `MatchSequence`;
  - other instructions are copied after the lowered body (`LowerOutOfLine`'s new `trailing` bytes), but only if they're sequential, have no RIP-relative operand and no branch target;
  - anything else (a return, a branch, RIP-relative code, the segment ending) still fails the relink, as does a branch target inside the extended site.
- `docs/TechnicalDebt.md` now lists only the INSERTQ register form, MONITORX/MWAITX/CLZERO/RDPRU/MCOMMIT and SHA-NI.
2026-09-28 09:35:28 +03:00
..
cli feat(relinker): add --skip-sce-module flag 2026-09-27 11:43:32 +03:00
codegen feat(relinker): lower register-form EXTRQ and relocate following instructions for short sites 2026-09-28 16:37:15 +13:00
domain/include/domain feat(relinker): add native guest module loading with export priority 2026-09-27 11:43:28 +03:00
elfpatcher Merge pull request #47 from oneandonlydean/fix/linux-load-alignment 2026-09-28 08:44:02 +03:00
io fix(relinker): report buffered output write failures 2026-09-28 00:25:42 +02:00
relinker fix(relinker): align the linux header load segment to the largest segment alignment 2026-09-28 14:22:48 +13:00
CMakeLists.txt Merge pull request #47 from oneandonlydean/fix/linux-load-alignment 2026-09-28 08:44:02 +03:00
main.cpp Merge remote-tracking branch 'origin/main' into feat/demons-souls-boot 2026-09-27 10:52:21 -07:00