Last visit was: Thu Oct 31, 2024 5:09 am
It is currently Thu Oct 31, 2024 5:09 am



 [ 3 posts ] 
 FLINT - a virtual machine for floating point from 1955 
Author Message

Joined: Wed Jan 09, 2013 6:54 pm
Posts: 1803
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


Mon Feb 03, 2014 5:19 pm

Joined: Mon May 05, 2014 11:11 pm
Posts: 1
The method you mention for immediates is also used in Chuck Moore's later Forth machines. A multi-operation opcode has embedded immediate symbols in it, and following the opcode are whole words of immediates. So to express (x + 13) & 255 you might have:

Code:
@p + @p and  { this is the opcode }
13           { fetched by the first @p }
255          { fetched by the second @p }


"@p" is the immediate fetch operation.


Mon May 05, 2014 11:19 pm

Joined: Wed Jan 09, 2013 6:54 pm
Posts: 1803
Interesting!


Wed May 07, 2014 2:58 pm
 [ 3 posts ] 

Who is online

Users browsing this forum: claudebot and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software