Menu

How add new cpu opcodes at source code level

To add new cpu opcodes we need only to change two files: simulate.h and simulate.c
So we have to proceed with these steps:

(1) modify the file simulate.h

Go to the bottom of this file under the comment //New Opcodes and add your new opcode ABC as last and before the end_ops constant.
For example:
//New Opcodes
MDIV , // MDIV R, 10, M : (S>D) -- Calc Modulus and Division putting them into destination Registers
STX , // STX 0xFF , M : (S>D) -- Store immed. value into contents of [MemoryAddress] pointed by Register
+ ABC , // short description

(2) modify the file simulate.c

Go at line 325 of this file under the comment //New Opcodes and add your macro that represent the opcode ABC
For example: (you may need to study other opcodes to understand how they work, it's not too difficult...)
This opcode is equivalent to: SET R, VALUE
#define ABC_opcode _cpuREG( cpuIMM_ARG(1) ) = cpuIMM_ARG(2); \
currPC += value // size of this intruction

For example:
Go at line 482 of this file under the comment //New Opcodes and add your macro that represent the opcode ABC
__def_opcall( ABC );

For example:
Go at line 569 of this file under the comment //New Opcodes and add your initialisation group that represent the opcode ABC
+ { __Opcode_Struct( ABC , 3 , "#RI" ) },

Go at line 730 inside the simugoto() routine and add your address constant:
For example:
&&do_MDIV, &&do_STX, &&do_ABC, // new opcodes

Go at line 858 inside the simugoto() routine and add your address constant:
For example:
__def_goto_Label( ABC );

STOP.
You don't needs to do any other steps!!
In alternative to the simugoto() routine, there is another routine called simulate():
if you use this routine you don't need to do the steps 730/858 which are exclusive for simugoto() routine.

Well, that's all for now.
I greet you and thank you.

Posted by Davide Ug. Lini 2018-05-20

Anonymous
Anonymous

Add attachments
Cancel





Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.