Hacker News new | comments | show | ask | jobs | submitlogin
Writing a minimal x86-64 JIT compiler in C++, Part 2 (solarianprogrammer.com)
133 points by AlexeyBrin 1 month ago | hide | past | web | 6 comments | favorite

This is what I'd consider a "minimal x86 JIT": 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.

I found this series also enlightening, especially if you're curious about the LLVM route: https://eli.thegreenplace.net/2017/adventures-in-jit-compila... (see parts 2 and 3)

Thanks, really useful site and article !

DynASM 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/07.1

How well does [this](https://youtu.be/dkZ9zdSRQYM) or [that](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.

Amazing but simple explanation. Really allowed me to grasp JIT.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact