4 ms·
Writing a minimal x86-64 JIT compiler in C++, Part 2
- bootcat 9y agoAmazing but simple explanation. Really allowed me to grasp JIT.
- kodablah 9y agoI found this series also enlightening, especially if you're curious about the LLVM route: https://eli.thegreenplace.net/2017/adventures-in-jit-compilation-part-1-an-interpreter/ https://eli.thegreenplace.net/2017/adventures-in-jit-compila... (see parts 2 and 3)
- bootcat 9y agoThanks, really useful site and article !
- userbinator 9y agoThis is what I'd consider a "minimal x86 JIT": https://news.ycombinator.com/item?id=8746054 https://news.ycombinator.com/item?id=8746054 ;-) It's interesting to note that JIT compilation is, for restricted inputs, not much different than self-modifying code. I've used the latter technique several times over the years to get impressive performance boosts, and it doesn't even have to be all that complex --- turning variables into constants and embedding them into immediates in instructions provides the best speedup, especially in tight loops, since it saves a register and/or memory access. Think of a video or image codec --- things like frame sizes, bit depth options, etc. don't change throughout the stream, so "JIT'ing" them with SMC really helps.
- spc476 9y agoDynASM is an interesting tool (it's used in LuaJIT). I used it to test integer overflow overhead [1] (mainly because I could specify different expression lengths and test `INTO` vs. `JO`). [1] http://boston.conman.org/2015/09/05.2 http://boston.conman.org/2015/09/05.2 http://boston.conman.org/2015/09/07.1 http://boston.conman.org/2015/09/07.1
- PatchMonkey 9y agoHow well does [this](https://youtu.be/dkZ9zdSRQYM https://youtu.be/dkZ9zdSRQYM) or [that](https://youtu.be/tf09vULK7sw https://youtu.be/tf09vULK7sw) still apply? I'm still perfectly satisfied to remove anything like that from my system. There's even ebuilds out there to install full-featured web browsers without including JIT.