Live data from Hacker News

Experiments in NES JIT Compilation

bheisler.github.io

1–10 of 11 posts

Re: Experiments in NES JIT Compilation

#2
For anyone who hasn't written a JIT I'd recommend writing a Brainfuck runtime one day. It's a tractable and strait forward project that will teach you how to do all of this. Start with implementing a direct interpreter and think of ways to make it faster.

Re: Experiments in NES JIT Compilation

#3
I've been meaning to do something similar, except by generating C code which is compiled JIT. This way the compiler can optimize blocks of 6502 in more efficient ways than just a direct mapping between opcodes and registers. Of course there's no real purpose to doing this, but it's on my backlog of "projects to do if I'm ever really bored" - one of my first ever C++ projects was writing a dynamic recompiler for 6502, nearly 20 years ago.

Re: Experiments in NES JIT Compilation

#4
post #3

I've been meaning to do something similar, except by generating C code which is compiled JIT. This way the compiler can optimize blocks of 6502 in more efficient ways than just a direct mapping between opcodes and registers. Of course there's no real purpose to doing this, but it's on my backlog of "projects to do if I'm ever really bored" - one of my first ever C++ projects was writing a dynamic recompiler for 6502,…

I think the common way to do something like this these days would be to generate LLVM IR.

Re: Experiments in NES JIT Compilation

#5
post #2

For anyone who hasn't written a JIT I'd recommend writing a Brainfuck runtime one day. It's a tractable and strait forward project that will teach you how to do all of this. Start with implementing a direct interpreter and think of ways to make it faster.

Studying this amazing work of art is also recommended: https://news.ycombinator.com/item?id=8746054

Re: Experiments in NES JIT Compilation

#7
post #6

> Broadly speaking, a JIT (or just-in-time) compiler is a piece of code that translates some kind of program code into machine instructions for the host CPU. No, that's a compiler.

compilers can be used to make machine instructions for a none host CPU. he just missed out the runtime part for a jit.

Re: Experiments in NES JIT Compilation

#8
post #6

> Broadly speaking, a JIT (or just-in-time) compiler is a piece of code that translates some kind of program code into machine instructions for the host CPU. No, that's a compiler.

It's almost like JIT is short for "just-in-time compiler" or something.

Re: Experiments in NES JIT Compilation

#9
post #6

> Broadly speaking, a JIT (or just-in-time) compiler is a piece of code that translates some kind of program code into machine instructions for the host CPU. No, that's a compiler.

compilers can be used to make machine instructions for a none host CPU. he just missed out the runtime part for a jit.

Except he didn't, it's in the very next sentence.
Post reply on HN