
Writing a minimal x86-64 JIT compiler in C++, Part 2 - AlexeyBrin
https://solarianprogrammer.com/2018/01/12/writing-minimal-x86-64-jit-compiler-cpp-part-2/
======
userbinator
This 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.

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

~~~
bootcat
Thanks, really useful site and article !

------
spc476
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/05.2)
[http://boston.conman.org/2015/09/07.1](http://boston.conman.org/2015/09/07.1)

------
PatchMonkey
How 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.

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

