Oops (Concertina II Going Around in Circles)

Liste des GroupesRevenir à c arch 
Sujet : Oops (Concertina II Going Around in Circles)
De : quadibloc (at) *nospam* servername.invalid (John Savard)
Groupes : comp.arch
Date : 25. Apr 2024, 06:49:25
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <kipj2j5be9kuv8rn770iq6neq2cvu3s5oi@4ax.com>
User-Agent : Forte Free Agent 3.3/32.846
I keep changing the basic design of Concertina II, instead of going
forward and completing the task of fleshing it out.

The reason for that... has been obvious all along. None of my attempts
have satisfied me. I had goals for the architecture, some of which
weren't being met by each iteration. So I kept going back and forth
between compromising one set of goals, or compromising another set of
goals.

If I could make up my mind on what was most important to me, perhaps I
could stop somewhere.

Looking back at the various iterations, I did see that two goals were
very important to me.

I wanted to be able to have 16-bit instructions, at least in pairs
within a 32-bit instruction slot, available without the overhead of a
block header, in the basic instruction set. For this, I need to
reserve 1/4 of the opcode space.

Also, I wanted to have the basic load-store memory-reference
instructions be able to use 16-bit displacements, have a three-bit
index register field and a three-bit base register field, and be able
to use all 32 registers in a normal register bank as destinations.
This takes 3/4 of the opcode space.

As 3/4 plus 1/4 is _not_ greater than 1, having both of these things
in a design simultaneously is not impossible.

And I've found some tiny scraps of opcode space left (in the 3/4 part;
flexible auto-increment with an odd index register, since only even
index registers are allowed in that mode) which are barely enough...

for two-address register to register operate instructions, _and_ for a
block header.

The block header, while rudimentary, would be enough to allow...

indicating some instruction slots as containing instructions from a
secondary instruction set, so as to allow things like three-address
operate instructions, multiple-register load and store instructions,

and also allowing pseudo-immediates...

and instructions longer than 32 bits.

I have two unused opcodes in the load/store memory reference
instructions, so I can use one of them for jump to subroutine (offset
in the index register field, return address register in the
destination register field) - and one for conditional jump. Since the
condition code can go in the destinatin register field, and it only
needs four bits, not five... I can also have a Load Address
instruction, with the limitation that only registers 0-7 and 24-31 can
be used as destinations (the ones used as index registers and the
usual base registers).

However, requiring the block header mechanism even for load and store
multiple registers, basic to subroutine calls, means that the basic
instruction set is... only _barely_ a complete one.

So this is unlikely to satisfy me for very long either.

One other possibility: stick with the current design - 1/4 of the
opcode space for 16-bit instructions and 1/4 of the opcode space for
instructions longer than 32 bits, so as to reduce their overhead and
possibly allow the mechanism to also be used for prefixing
instructions (not needed, though, if I decide to return to having
block headers in a less vestigial form)...

I would have to squeeze the "rest" of the instruction set a bit more
if I switched from aligned-only load and store instructions to going
to using only four base registers for them (the least painful of the
restrictions I've considered so far), but it should be doable.

John Savard

Date Sujet#  Auteur
25 Apr 24 * Oops (Concertina II Going Around in Circles)53John Savard
25 Apr 24 +* Re: Oops (Concertina II Going Around in Circles)44MitchAlsup1
25 Apr 24 i+* Re: Oops (Concertina II Going Around in Circles)2John Savard
25 Apr 24 ii`- Re: Oops (Concertina II Going Around in Circles)1John Savard
25 Apr 24 i+- Re: Oops (Concertina II Going Around in Circles)1BGB
8 May 24 i`* Re: Oops (Concertina II Going Around in Circles)40John Savard
8 May 24 i +* Re: Oops (Concertina II Going Around in Circles)3John Savard
8 May 24 i i`* Re: Oops (Concertina II Going Around in Circles)2MitchAlsup1
9 May 24 i i `- Re: Oops (Concertina II Going Around in Circles)1John Savard
8 May 24 i +- Re: Oops (Concertina II Going Around in Circles)1John Savard
8 May 24 i `* Re: Oops (Concertina II Going Around in Circles)35MitchAlsup1
9 May 24 i  +* Re: Oops (Concertina II Going Around in Circles)6John Savard
9 May 24 i  i+* Re: Oops (Concertina II Going Around in Circles)3MitchAlsup1
9 May 24 i  ii`* Re: Oops (Concertina II Going Around in Circles)2John Savard
9 May 24 i  ii `- Re: Oops (Concertina II Going Around in Circles)1Thomas Koenig
9 May 24 i  i`* Re: Oops (Concertina II Going Around in Circles)2MitchAlsup1
10 May 24 i  i `- Re: Oops (Concertina II Going Around in Circles)1MitchAlsup1
9 May 24 i  `* Re: Oops (Concertina II Going Around in Circles)28John Savard
9 May 24 i   `* Re: Oops (Concertina II Going Around in Circles)27John Savard
9 May 24 i    `* Re: Oops (Concertina II Going Around in Circles)26John Savard
9 May 24 i     `* Re: Oops (Concertina II Going Around in Circles)25John Savard
9 May 24 i      `* Re: Oops (Concertina II Going Around in Circles)24John Dallman
9 May 24 i       +* Re: Oops (Concertina II Going Around in Circles)21John Savard
10 May 24 i       i`* Re: Oops (Concertina II Going Around in Circles)20John Dallman
10 May 24 i       i +* Re: Oops (Concertina II Going Around in Circles)13John Savard
10 May 24 i       i i+* Re: Oops (Concertina II Going Around in Circles)10MitchAlsup1
10 May 24 i       i ii`* Re: Oops (Concertina II Going Around in Circles)9John Savard
10 May 24 i       i ii +* Re: Oops (Concertina II Going Around in Circles)6MitchAlsup1
11 May 24 i       i ii i+* Re: Oops (Concertina II Going Around in Circles)4John Savard
11 May 24 i       i ii ii+- Re: Oops (Concertina II Going Around in Circles)1John Savard
11 May 24 i       i ii ii`* Re: Oops (Concertina II Going Around in Circles)2MitchAlsup1
11 May 24 i       i ii ii `- Re: Oops (Concertina II Going Around in Circles)1John Savard
11 May 24 i       i ii i`- Re: Oops (Concertina II Going Around in Circles)1John Savard
11 May 24 i       i ii `* Re: Oops (Concertina II Going Around in Circles)2Thomas Koenig
11 May 24 i       i ii  `- Re: Oops (Concertina II Going Around in Circles)1John Savard
10 May 24 i       i i`* Re: Oops (Concertina II Going Around in Circles)2John Dallman
10 May 24 i       i i `- Re: Oops (Concertina II Going Around in Circles)1BGB
10 May 24 i       i +- Re: Oops (Concertina II Going Around in Circles)1BGB
11 May 24 i       i `* Re: Oops (Concertina II Going Around in Circles)5Anton Ertl
11 May 24 i       i  `* Re: Oops (Concertina II Going Around in Circles)4MitchAlsup1
12 May 24 i       i   `* Compiler use of instructions (was: Oops)3Anton Ertl
12 May 24 i       i    `* Re: Compiler use of instructions (was: Oops)2John Levine
13 May 24 i       i     `- Re: Compiler use of instructions1MitchAlsup1
12 May 24 i       `* Re: Oops (Concertina II Going Around in Circles)2John Savard
12 May 24 i        `- Re: Oops (Concertina II Going Around in Circles)1Thomas Koenig
5 May 24 +* Re: Oops (Concertina II Going Around in Circles)6John Savard
6 May 24 i+* Re: Oops (Concertina II Going Around in Circles)3John Savard
7 May 24 ii`* Re: Oops (Concertina II Going Around in Circles)2John Savard
8 May 24 ii `- Re: Oops (Concertina II Going Around in Circles)1John Savard
6 May 24 i`* Re: Oops (Concertina II Going Around in Circles)2John Savard
6 May 24 i `- Re: Oops (Concertina II Going Around in Circles)1MitchAlsup1
12 May 24 `* Re: Oops (Concertina II Going Around in Circles)2John Savard
12 May 24  `- Re: Oops (Concertina II Going Around in Circles)1John Savard

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal