Just a sample of the Echomail archive
COMPLANC:
[ << oldest | < older | list | newer > | newest >> ]
|  Message 242,482 of 243,097  |
|  BGB to All  |
|  Re: 8 bit cpu  |
|  18 Dec 25 16:30:46  |
 
From: cr88192@gmail.com
On 12/18/2025 12:20 PM, Rosario19 wrote:
> 8 bit cpu for access memory other than 0..255 location has need at
> last one 16 bit register and 16 bits operations, so i think that even
> a 8 bit cpu has to have int in C language as 16 bits
There are no "true" 8 bit systems in this sense, as pretty much every
existing 8-bit CPU has had support for 16-bit operations in some way,
though often by using register pairs.
So, in this sense, it makes more sense to call them 8/16 instead, as the
exact line between 8-bit machines and 16-bit machines is often a little
fuzzy (and both tend to look basically similar as far as C is concerned;
for the machines big enough to where running C on them is viable).
One could then ask, what would a minimal 8-bitter look like.
Might make sense to go with fixed-length 16-bit instructions.
Likely 8x8b registers;
...
Say:
AL, AH
BL, BH
CL, CH
SP, LR
If you want a 16-bit ADD, you do two:
ADD, ADC
Then, say:
RCL/RCR (Rotate Carry Left/Right, 1-bit)
CLC, STC (Clear/Set Carry)
CMPLTZ (Compare Less Than Zero, Set/Clear Carry)
Essentially "Copy sign bit to Carry".
CMPEQZ (Set Carry if Src==0)
BT/BF/BRA/BSR (Disp8)
JMP reg ("RTS"=="JMP LR")
LI (2RI, Copy 8-bit value to register)
LB/SB (Load/Store Byte)
MOV, AND, OR, XOR (2R)
ADD / ADC, SUB / SBB
...
Could probably implement most of C in this. Lots of stuff is going to
need to be implemented as runtime functions though.
SUB/SBB, not strictly necessary but would save a lot of instructions.
For extra fun, could maybe try to use an 8-bit address space, but more
likely just 16-bit with register pairs, say:
AX, BX, CX, SP
Except LB/SB Src/Dst: AX, BX, CX, LR
With addressing modes, say:
[SP+AX] / [BX+AX] / [BX] / [CX]
[BX+Disp2*2+Rd[0]] //4x 16-bit words
[SP+Disp3*2+Rd[0]] //8x 16-bit words
Allows fitting every possibility into 4 bits.
So, for example, if you do:
if(x>y) { ... }
LW AX, [SP+2]
LW CX, [SP+4]
SUB CX, AX
CMPLTZ CX
BF .L0
...
These being mostly pseudo-instructions that crack into byte ops.
Could maybe go "more minimal", but then the number of instructions
needed to do "pretty much anything" would get a bit absurd (would be
less useful to have an 8-bitter where pretty much no useful program
could fit into a reasonable-sized ROM space).
Then again, maybe someone could come up with something both less bad and
more minimal (well, for those who feel things like the 6502 were maybe a
little too feature-rich).
...
--- SoupGate-Win32 v1.05
* Origin: you cannot sedate... all the things you hate (1:229/2)
|
[ << oldest | < older | list | newer > | newest >> ]
(c) 1994, bbs@darkrealms.ca