Does anyone know of any good books which describe the design and implementation of small VMs/interpreters like these?
How to fit a large program into a small machine (1980)
31–40 of 43 posts
Re: How to fit a large program into a small machine (1980)
#32Does anyone know of any good books which describe the design and implementation of small VMs/interpreters like these?
It uses a simple stack machine. I am on the market for a book on small register based interpreters.
Re: How to fit a large program into a small machine (1980)
#33the answer is to encode your program using a higher-level machine code targeting a portable virtual machine. that’s also how they managed to fit all the software of the Apollo guidance computer into it. > “The AGC had a sophisticated software interpreter, developed by the MIT Instrumentation Laboratory, that implemented a virtual machine with more complex and capable pseudo-instructions than the native AGC.” ( https:…
Re: How to fit a large program into a small machine (1980)
#34I'm pretty sure the year for this article should be 1980, not 1999. According to Jimmy Maher, this was an article that was written for Byte magazine around the time of Zork's release.
Not Byte but Creative Computing, July 1980 https://archive.org/stream/creativecomputing-1980-07/Creativ...
Re: How to fit a large program into a small machine (1980)
#35Does anyone know of any good books which describe the design and implementation of small VMs/interpreters like these?
I think it isn't a constrained enough topic to write a textbook on. The conclusion section of the article under discussion summarizes the technique pretty well. I have encountered brief discussions of the technique in a few places though. Jon Bentley wrote a column called Programming Pearls , collected in a couple of compilation books, and one of those was called Squeezing Space which talked about this a bit. I think…
Another paper that comes to mind is Anton Ertl's on his vmgen system. The Smalltalk-80 bytecode design is worth a look too.
Re: How to fit a large program into a small machine (1980)
#36An instance of compiling the program to a bespoke bytecode and then interpreting the bytecode. This is one of my favourite programming tricks - high effort and high effectiveness, rarely used. Dwarf does this as one of the size optimisation tricks. I used to know another example but it isn't coming to mind.
Too bad ROM was expensive those days. If a language with a nice balance between expressiveness and performance (say Lisp, Forth, Pascal, maybe Lua or even Java) had been embedded in the machine's ROM, then many programs could contain just their core functionality. While having all the machine's capabilities easily accessible (and maybe some standard library of often-used functions). As opposed to containing implement…
Where hardcoded ROMs do exist in designs now, it's usually still as a glorified stage 1 bootloader, albeit now usually with signature checking as well.
Re: How to fit a large program into a small machine (1980)
#37Re: How to fit a large program into a small machine (1980)
#38Earlier quoted context omitted.
Not Byte but Creative Computing, July 1980 https://archive.org/stream/creativecomputing-1980-07/Creativ...
I definitely remember this in Byte in 1980 also, or at least an article by Zork authors on the same subject.
Re: How to fit a large program into a small machine (1980)
#39Does anyone know of any good books which describe the design and implementation of small VMs/interpreters like these?
The only one I know is this one here: https://craftinginterpreters.com/ It uses a simple stack machine. I am on the market for a book on small register based interpreters.
https://people.inf.ethz.ch/wirth/CompilerConstruction/index....
Re: How to fit a large program into a small machine (1980)
#40Does anyone know of any good books which describe the design and implementation of small VMs/interpreters like these?
https://people.inf.ethz.ch/wirth/CompilerConstruction/index....