View unanswered posts | View active topics It is currently Thu Mar 28, 2024 9:43 am



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

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

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
Profile

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


Wed May 07, 2014 2:58 pm
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 3 posts ] 

Who is online

Users browsing this forum: No registered users and 5 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

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