Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

/prog/ Challenge: Design your own toy CPU

Name: Anonymous 2010-07-13 16:44

Name: Anonymous 2010-07-13 16:47

Oh fuck!

Name: Anonymous 2010-07-13 16:48

That's a hardware problem.

Name: Anonymous 2010-07-13 16:52

push
pop
nor
jpc

Name: Anonymous 2010-07-13 18:20

We had that as assignment back then actually.

Name: Anonymous 2010-07-13 18:22

nop

Name: FrozenVoid 2010-07-13 18:26

VoidCPU DESIGN GUIDE(Licensed Under Creative Commons Share Alike 3.0):
256 segments x4GB each for process. max mem1024GB(256*4gb)
No caches/pipelines/outof order execution.
255 instr.(1 cycle inns only only),each:1[byte]name,type:[dest reg][reg1][reg2] ortype:
each:1[byte]name,type:[dest reg],[flags],[segment][ pointerx4byte].
255 registers. pointer to reg=reserved first 65 kilobytes(registers[0-255],255intterupts.. Ops can be dest =reg1=reg2 or can any combo of registers.
Memory beyond 4GB is accessed via segments[0=4gb,1=4-8,2=8-12gb,].
. Each register/pointer is 32bit.No Stack.No carry/overflow/math errors(numbers just wraparound/return zero). Instructions are either 4 bytes or 8bytes(depends on ins. number).
special registers:0=Instruction pointer,254=Random Number generator, 255=timer.
A SSE unit for large(>4 bytes)/floating point numbers is optional.
0=NOP(HALT), 3 bytes[0-255^3] sleep duration(0=NOP,1=sleep(+1nop),2=sleep(+2nopcycles)
1=ADD dest,reg1,reg2
2=SUB dest,reg1,reg2
4=MULT dest,reg1,reg
5=DIV dest,reg1src,reg2divider
6=LEFT SHIFT<< dest,reg1,reg2[number of shifts]
7=LEFT ROTATE<<< dest,reg1,reg2[number of rotates]
8=RIGHT SHIFT<< dest,reg1,reg2[number of shifts]
9=RIGHT ROTATE<<< dest,reg1,reg2[number of rotates]
10=MOVE dest/src reg,flags/type of operation[reg->mem,mem->reg]x[type:imm value/pointer],segment of memory[x255 ]/condregNUM,[pointer/value]
11=INT innterupt,[NumberINT 0-255],operation flags[1byte][set/get info/reset/handler type/etc][pointer to handler]
12=AND dest,reg1,reg2,
13=XOR dest,reg1,reg2
14=OR dest,reg1,reg2
15=NOT dest,reg1,reg2
16=SWAP opflags[],reg1,reg2
17=JUMP flags[condition/register jump cond],type/register num,[segment],[pointer]
18=CMP dest,reg1,reg2 //compares two registers stores results in dest reg[equals=0,>=1,<=2]
19=CMPMEM srcreg,flags,segment,[pointer]
20=IO: flags[in/out x repeat x flags[[1-8 bytes]memory increment size] ],memport NUM,segment,[pointer]
21-255 custom instructions:Can be set/reset by priviliged program(process 0).
Each process has its own segment.process 0=kernel/OS/Main and can access any part of CPU/set-reset instructions/processes.

Name: Anonymous 2010-07-13 19:11

desu
sage
/thread

Name: Anonymous 2010-07-14 2:42

DEC_AND_JUMP_IF_ZERO [memory-address]

Since there's only one operation, opcode for it is not neccessary.

Name: FrozenVoid 2010-07-14 3:11

>>9
There is no need to have opcodes either.
http://en.wikipedia.org/wiki/Transport_triggered_architecture

__________________
Orbis terrarum delenda est

Name: FrozenVoid 2010-07-14 10:14

Disregard that I suck cocks.

Name: Anonymous 2010-12-10 8:39

Don't change these.
Name: Email:
Entire Thread Thread List