mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-23 09:00:39 +02:00
2536bfe42c6973cdfb2529be8bdbc5dc02496fdb
This was sort of partially worked around. The issue comes down to REX.W and Operand size prefix ordering on an instruction. When an instruction has both prefixes, then the one that has occured later will overwrite the previous one. Additionally in the case of 66h being reused as an escape prefix, we needed to ignore it in this case. The previous workaround was that if an instruction happened to have both widening and narrowing, then widening would win(for MODRM args), but then later on in the instruction decoding the literal constant decoding would properly check which order the flags came in. This resulted in literal constants working, but not modrm bytes Instead replace the "last" flag handling with a two deep stack that we can push and pop the flags correctly on to it, this ensures that the flags stay around in the 66h ignoring mode (so widening doesn't get obliterated). This effects every instruction that supports REX.W and 66h Operand size prefix, so it could be fixing some unknown bugs elsewhere. Very specifically this one was found in OpenSSL, because it looks like GCC is padding a mov instruction with 66h. Instruction Examples: Only difference is the prefix order being swapped 0x00000000 4 66488b1f mov rbx, qword [rdi] 0x00000004 4 48668b1f mov bx, word [rdi]
FEX - Fast x86 emulation frontend
This is the frontend application and tooling used for development and debugging of the FEXCore library.
Dependencies
- SonicUtils
- FEXCore
- cpp-optparse
- imgui
- json-maker
- tiny-json
- boost interprocess (sadly)
- A C++17 compliant compiler (There are assumptions made about using Clang and LTO)
- clang-tidy if you want the code cleaned up
- cmake
Description
GitHub pull mirror of FEX-Emu/FEX. GitHub repository ID: 245352386. Gitea import mode: github-full.
https://github.com/FEX-Emu/FEX
Readme
MIT
59 MiB
0 Stars
1 Watchers
0 Forks
Releases
67
FEX Release FEX-2610
Latest
Languages
C++
56%
Assembly
37.8%
C
3.8%
Python
1.2%
CMake
0.9%
Other
0.2%