Before use read this
Use original repo, this repo just for my experiments, or take code from this repo and add it in main repo if you need it :)
- [warning this is experimentall fork, can be broken]
- TODO
- understend how all works :D
- refractoring
- more sepatare code
- fix compiler warnings
- add tests for all instructions
- maybe use single test by instructtions on assembler
- maybe use test code contains all test instructions (some other project contains hard SIMD optimisations)
make
sudo dmesg -w # open in another terminal window/tab for see logs if need
make load
In demesg see output OPEMU: module loaded
== all okey
Run some SSE3/SSE4+
application and:
- if application working
op_emu
success emulate instructions - if you see for example
OPEMU: pminud xmm0, xmm1
andtrap invalid opcode
some instruction need implement inop_emu
- if you see only
trap invalid opcode
some instruction unknown forop_emu
make unload
mirh previos readme text from original
-
This is an adaptation of the original Opcode Emulator from xnu-amd's repo for Linux.
-
For the kernel module, and a few other things (fpins, SSE4.1...), I took some code from Meowthra's AVX+ OPEMU, which looks pretty good, but does not fit my needs (SSSE3, SSE4.1, & SSE4.2).
-
POPCNT and CRC32 are all merit of Andy Vandijck instead.
- SSE3, SSSE3, SSE4.2 (mostly). CRC32 doesn't pass tests though.
- most SSE4.1 instructions are missing, I tried to add a few but it's not working well yet.