[prev in list] [next in list] [prev in thread] [next in thread]
List: classiccmp
Subject: RE: Variable length (in bits) instructions (was Re: ENIAC ....)
From: "Chuck Guzis" <cclist () sydex ! com>
Date: 2011-01-31 23:29:52
Message-ID: 4D46D570.28555.1196710 () cclist ! sydex ! com
[Download RAW message or body]
On 31 Jan 2011 at 14:30, Rich Alderson wrote:
> From: Chuck Guzis
> Sent: Monday, January 31, 2011 2:13 PM
>
> > When it comes to variable-length instructions, I'm surprised that no
> > one mentioned the IBM 1401, particularly in its ability to "chain"
> > instructions.
>
> The instructions on the 1401 are 1 character long, that is, 6 bits.
>
> Or have I misunderstood the discussion so far. I thought we were
> talking about different operations being effected by different lengths
> of bits as the op codes.[1]
Are we talking about instructions themselves, or their operands? In
either case, the 1401 qualifies--it's a variable word-length machine
and instruction length is dependent on the presence or absence of
operands.
So, there is only one opcode for the "ADD" instruction, but I can
write:
A 123 456
Causing the (variable-length) number whose low-order digit is
addressed by 123 to be added to the (variable-length) number whose
low-order digit is addressed by 456. I can also write:
A 123
Same opcode--but this indicates that the number addressed by 123 is
added to itself. Or I can write:
A
Which adds two numbers preceding (in memory) the pair last addressed
by an A or other instruction.
Similarly, the "unconditional branch" and the "conditional branch"
instructions use a common opcode, but the conditional branch appends
a digit that specifies the condition.
The "trick" behind all of this is that the instruction execution
logic locates the opcode by scanning until it finds a character with
the word mark set. While it's scanning, operands are shifted through
the operand regsters.
So, I submit that the 1401 is a variable length machine (it's
decimal, by the way) both in the sense of data that's being
manipulated and the instructions themselves.
Have I missed a third category of "variable length"?
--Chuck
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic