3 ms·
> Forth compilers can be bootstrapped from not-very-much assembler Do you have any resources handy on how one could do that from scratch?
by lhorie 6y ago
> Forth compilers can be bootstrapped from not-very-much assembler
Do you have any resources handy on how one could do that from scratch?
- naters 6y agoJonesforth [1] is a classic example of this, and a really good example of “literate” code. [1] https://github.com/nornagon/jonesforth/blob/master/jonesforth.S https://github.com/nornagon/jonesforth/blob/master/jonesfort...
- benhoyt 6y agoA good learning resource is Jonesforth (something of a classic), on GitHub here: https://github.com/nornagon/jonesforth/blob/master/jonesforth.S https://github.com/nornagon/jonesforth/blob/master/jonesfort... I wrote several Forth compilers when learning to code as a teenager, one using the A86 assembler, and two fully bootstrapped-from-assembler ones for 8086 and 386. The 8086 source code is here (I didn't write the assembler myself): https://github.com/benhoyt/third https://github.com/benhoyt/third (KERNEL.F has the assembler parts)
- ampdepolymerase 6y agoThere is also https://github.com/kragen/stoneknifeforth https://github.com/kragen/stoneknifeforth
- transfire 6y agoNice find. Thanks.
- tailrecursion 6y agoYou requested from scratch, but also look into "metacompilation", which was typically how it was done.
- dreamcompiler 6y agoI did this for the TMS34010 graphics processor many years ago but my notes are long gone. I was inspired by Mach 2 Forth, an amazing compiler for the early Mac. My compiler had local variables and tail call detection to take advantage of a special "one-deep" stack register on the chip. The key point is that Forth can easily incorporate an RPN assembler which you can write in Forth, and with which you can then build a better Forth. I'm not sure if I even started with the official TI assembler for the chip; I probably first wrote a cross assembler in Mach 2 by transcribing the ISA manual and bootstrapped from that.