FLINT is perhaps the first virtual machine - it ran on MANIAC, aka the
IAS Machine.
The host machine has 40-bit words and deals with 40-bit signed fixed point numbers. FLINT is an interpreter for a dual-accumulator virtual machine which deals with 40-bit floating point numbers (in 31 or so locations) and 10-bit integer numbers (again in 31 or so locations.) Each 40-bit word from the instruction stream forms two 20-bit instructions, which break into 10 bits of order code and 10 bits of address. There's an odd facility for consuming 40-bit literals from the instruction stream - almost like there's a separate pointer for these literals, so a word might contain one or two instructions which use a literal, and then one or two subsequent words will be read and skipped. The mechanism for conditionals is to set an answer bit using a test operation, and then a subsequent test reads and resets the answer bit. One of TI's calculator chips does the same thing (see
http://righto.com/ti )
I though this might be of interest because from time to time someone suggests building out a floating point extension to a 6502 or similar. Here's a form of instruction set to consider, not entirely unlike
SWEET16's place in extending to 16 bits.
In the linked article we also find
a description of "1906", another floating point library, which is in some ways more like SWEET16 in that it interoperates with native code. It's described as offering a "pseudo-machine." It has an usual instruction format which specifies not direct versus indirect, but instead contains a mask of bits which selects which subset of B registers (index registers) should be added to form the effective address.
via George Dyson's book
Turing's Cathedral, which is worth a read. (You can read bits of it at Google Books and at Amazon)
BTW there's an amount of retro content on gplus, so do mosey over to
Computer History and
Retro Computing and have a look around.
Cheers
Ed