Skip to content

Update the ISA #88

@arghyabi

Description

@arghyabi

Use this new ISA table and update it in all places...

Opcopde     Instruction	Byte	Description
------------------------------------------------------------------------------------------------
0000_0000	NOP	    	1	No Operation
................................................................................................
SSDD_0001	ADD  D S	1	Add 2 registers and update to destination
SSDD_0010	SUB  D S	1	Subtract source from dest. & update to dest.
SSDD_0011	MOV  D S	1	Move from source to destination
SSDD_0100	AND  D S	1	Logical AND operation; update to destination
SSDD_0101	OR   D S	1	Logical OR operation; update to destination
SSDD_0110	XOR  D S	1	Logical XOR operation; update to destination
SSDD_0111	LDR  D S	1	Load destination from memory address in source
SSDD_1000	STR  D S	1	Save register value to memory address in source
RRRR_1001	CMP  R R	1	Compare two register values (unsigned); update the flag
RRRR_1010	CMPS R R	1	Compare two register values (signed); update the flag
................................................................................................
RR00_1011	SHL  R		1	Shift register left by 1 bit
RR01_1011	SHR  R		1	Shift register right by 1 bit
RR10_1011	INC  R		1	Increment register
RR11_1011	DEC  R		1	Decrement register

RR00_1100	LDI  R VV	2	Load the value to register immediately
RR01_1100	LDM  R AA	2	Load from value to register from memory
RR10_1100	SAV  R AA	2	Save the register value to memory
RR11_1100	NOT  R		1	Bitwise NOT operation; update same register

RR00_1101	CMI  R VV	2	Compare register with immediate value (unsigned)
RR01_1101	CMIS R VV	2	Compare register with immediate value (signed)
RR10_1101	PUSH R		1	Push register value to stack
RR11_1101	POP  R		1	Pop from stack and load to register
................................................................................................
0000_1110	JMP  AA		3	Jump to address (without push PC to stack) 
0001_1110	JMZ  AA		3	Jump to address if Zero flag set
0010_1110	JNZ  AA		3	Jump to address if Zero flag NOT set
0011_1110	JMC  AA		3	Jump to address if Carry flag set
0100_1110	JME  AA		3	Jump to address if Eql flag is set
0101_1110	JMG  AA		3	Jump to address if Grt flag is set
0110_1110	JML  AA		3	Jump to address if Lst flag is set
................................................................................................		
0000_1111	PSHV VV		2	Push immediate value to stack
0001_1111	CALL AA		3	Push the PC to Stack (PC high & low) and load PC with new address
0010_1111	RTN	    	1	Pop the PC address and restore
0011_1111	OUT		    1	Display unsigned value in 7-Segment
0100_1111	OUTS		1	Display signed value in 7-Segment
0101_1111	HLT	    	1	Halt the platform
1111_1111	RST	    	1	Reset it self
................................................................................................

update in

  • ISA DOC
  • INS*.py
  • Add new instruction LDR and STR everywhere
  • MicrocodeConfig.yaml
  • Compiler
  • Emulator

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions