Simple simulation of a microprocessor system (HELP!)
Posted on 2003-11-25
How much sense does this make to anyone, i have been learning c++ for 8 weeks now and i been given two weeks to complete the fist part of my assignment which is below. The teacher is of no use and cant seem to explain anything, where would a good place to start be, i have been trying to use seperate header files for the different parts. Just seem to be getting more and more confused by it all, i certainly dont want the complete answer but some code to start me off would be great, so i can build on it.
Develop a series of classes that can be used together to provide a simple simulation of a microprocessor system comprising as a minimum a CPU, with its internal registers, and operations to fetch and execute instructions and Flash ROM which holds the program instructions.
The CPU should have four internal registers and the following instruction types:
MOVE Rx,Ry move contents of Rx to Ry
MOVE data_value, Rx move data value into Rx
ADD Rx, Ry add Rx to Ry and store it in Ry
SUB Rx, Ry subtract Rx from Ry and store it in Ry
OUTPUT Rx output contents of Rx to display
HALT End of instructions
where Rx and Ry represent the registers R0 - R3
All instructions are encoded as a three single digit numbers d1d2d3 :-
The first digit is the op-code, the next two digits are operands for the instruction. If the instruction only requires a single register then it is the last digit. If any operands are not required then the digit value is zero.
The op-codes for the different instruction types are:-
Op-code Instruction type
1 MOVE register to register
2 MOVE data to a register
Examples of possible instruction codes and the equivalent instruction
Instruction code Instruction
112 MOVE R1, R2
251 MOVE 5, R1
301 ADD R0, R1
430 SUB R3, R0
502 OUT R2
1. The FlashROM class should have the following functions/methods.
• void program(int p) - function receives an array (or could be done using a pointer to an array) of values terminating
with the HALT instruction. The purpose of this function is to read in the complete program and store it in the FlashROM
• void erase() - erase all Flash ROM contents.
• int read(int location) - return contents of the given location.
Write a short main function to test this class.