+ All Categories
Home > Documents > The Minimal Instruction Set Computer (MISC) in Java

The Minimal Instruction Set Computer (MISC) in Java

Date post: 24-Feb-2016
Category:
Upload: bikita
View: 30 times
Download: 0 times
Share this document with a friend
Description:
The Minimal Instruction Set Computer (MISC) in Java. Note: This is the same set of overheads that is used to introduce MISC in CS 320. This version of the overheads has an additional section at the end. That section describes the programming project for CS 304 which is based on MISC. - PowerPoint PPT Presentation
Popular Tags:
80
The Minimal Instruction Set Computer (MISC) in Java 1
Transcript
Page 1: The Minimal Instruction Set Computer (MISC) in  Java

1

The Minimal Instruction Set Computer (MISC) in Java

Page 2: The Minimal Instruction Set Computer (MISC) in  Java

2

• Note:• This is the same set of overheads that is used

to introduce MISC in CS 320.• This version of the overheads has an

additional section at the end.• That section describes the programming

project for CS 304 which is based on MISC.

Page 3: The Minimal Instruction Set Computer (MISC) in  Java

3

Part 1. MISC

Page 4: The Minimal Instruction Set Computer (MISC) in  Java

4

• MISC is a Java simulation of a simple CPU• The architecture makes use of 4 byte words• In the simulation the contents of a register as

well as the contents of a byte in memory are modeled by an object containing a character array of 8 bytes

Page 5: The Minimal Instruction Set Computer (MISC) in  Java

5

• Each bit is then modeled by the presence of either the character ‘1’ or the character ‘0’ in a particular position in one of these 8 byte arrays.

• The registers are packaged together in an array named “reg”.

• The index of the array identifies the particular register.

Page 6: The Minimal Instruction Set Computer (MISC) in  Java

6

• Registers:

• register name decimal index binary code• identification in reg array of index• • unused reg[0] "00000000"• • general purpose• • A reg[1] "00000001"• B reg[2] "00000010"• C reg[3] "00000011"• D reg[4] "00000100"•

Page 7: The Minimal Instruction Set Computer (MISC) in  Java

7

• Registers, cont’d.:

• register name decimal index binary code• identification in reg array of index

• memory offsets• • codeoffset reg[5] "00000101"• dataoffset reg[6] "00000110"• unused1 reg[7] "00000111"• unused2 reg[8] "00001000"• unused3 reg[9] "00001001"• • flag reg[10] "00001010"•

Page 8: The Minimal Instruction Set Computer (MISC) in  Java

8

• Registers, cont’d.:

• register name decimal index binary code• identification in reg array of index

• control unit registers• • instructionreg[11] "00001011"• operand1 reg[12] "00001100"• operand2 reg[13] "00001101"• extra reg[14] "00001110"•• ALU registers• • aluinreg1 reg[15] "00001111"• aluinreg2 reg[16] "00010000"• aluoutreg reg[17] "00010001"

Page 9: The Minimal Instruction Set Computer (MISC) in  Java

9

• The memory is also implemented in the simulation as an array

• Each element of the array is a machine word• The index of the array represents the offset into the

memory, counting by 4 byte words.• • Memory: array name•

memory[]

Page 10: The Minimal Instruction Set Computer (MISC) in  Java

10

General Remarks on Machine Instruction Execution

• The general rules for both move and arithmetic instructions are these:– A register or a memory variable can be a

destination.– A constant, a register, or a memory variable can be

a source.– Memory to memory operations are not allowed.

Page 11: The Minimal Instruction Set Computer (MISC) in  Java

11

• After a program is loaded the machine takes control of execution

• This is done by means of a call from the Osystem to the takeControl() method of the Machine

• The machine steps through the contents of the code segment until it encounters an empty (“00000000”) instruction byte

Page 12: The Minimal Instruction Set Computer (MISC) in  Java

12

• Execution starts with the value 0 in the code offset register

• The machine takes the contents of 4 contiguous bytes of memory starting at the address in the code offset register

• It puts those bytes into the instruction, reg[11]; operand1, reg[12]; operand2, reg[13]; and extra register, reg[14], respectively

• After the retrieval of each instruction and before its execution, the code offset is incremented for the next retrieval.

Page 13: The Minimal Instruction Set Computer (MISC) in  Java

13

The Machine Instruction Set

• The MOVE Instruction• assembly instruction method in simulation machine instruction• MOVE register, register void moveDestRegSrcReg() “10000001”• MOVE memory, register void moveToMemFromReg() “10000010”• MOVE register, memory void movetoregfrommem() “10000011”• MOVE memory, constant void movetomemfromconst() “10000100”• MOVE register, constant void movetoregfromconst() “10000101”

Page 14: The Minimal Instruction Set Computer (MISC) in  Java

14

• The ADD Instruction• assembly instruction method in simulation machine instruction • ADD register, register void addDestRegSrcReg() “10000110”• ADD memory, registervoid addToMemFromReg() “10000111”• ADD register, memoryvoid addToRegFromMem() “10001000”• ADD memory, constant void addToMemFromConst() “10001001”• ADD register, constant void addToRegFromConst() “10001010”

Page 15: The Minimal Instruction Set Computer (MISC) in  Java

15

• The SUB Instruction• assembly instruction method in simulation machine instruction • SUB register, register void subDestRegSrcReg() “10001011”• SUB memory, register void subFromMemSrcReg() “10001100”• SUB register, memory void subFromRegSrcMem() “10001101”• SUB memory, constant void subFromMemSrcConst() “10001110”• SUB register, constant void subFromRegSrcConst() “10001111”

Page 16: The Minimal Instruction Set Computer (MISC) in  Java

16

• The JUMP Instruction• assembly instruction method in simulation machine instruction • JMP unsigned integer void jumpUnconditional() “10010000”• JPOS unsigned integer void jumpOnPositive() “10010001”• JNEG unsigned integer void jumpOnNegative() “10010010”• JZERO unsigned integer void jumpOnZero() “10010011”• JOVER unsigned integer void jumpOnOverflow() “10010100”

• • The unsigned integer parameter in operand1 is to be

interpreted as an offset into code memory• It has to be treated as unsigned, and in order to work

correctly it has to fall on a 4 byte instruction boundary

Page 17: The Minimal Instruction Set Computer (MISC) in  Java

17

General Remarks on the Form of Machine Language

• In a line of executable machine language code the instruction comes first, followed by the destination operand, followed by the source operand

• This is followed by an extra space which does not yet have a designated use

• If the line of code contains a data declaration rather than an instruction, the first item will be the initial value of the data item, and the remaining three spaces will be unused

Page 18: The Minimal Instruction Set Computer (MISC) in  Java

18

• A program can take a maximum of 32 lines.• The program will be loaded at offset 0, the data

portion first, the program code itself second• Words 0-7 are reserved for data variables• That means that a single program can have a

maximum of 8 memory variables• If there are not 8 variables, the unneeded words

will be filled with 0’s

Page 19: The Minimal Instruction Set Computer (MISC) in  Java

19

• The code segment of a machine language program begins at offset 8

• Jump instructions in the code will have to be written with operands incremented by 8.

Page 20: The Minimal Instruction Set Computer (MISC) in  Java

20

• The source file signals termination with a row of asterisks

• When the source program is loaded, the asterisks aren’t loaded.

• What is placed in memory instead is a line of 0’s.

Page 21: The Minimal Instruction Set Computer (MISC) in  Java

21

• Inside the machine, the takeControl() method stops if it encounters an instruction which is all zeros

• This means that in memory, a program has to be followed by at least one word where the first byte is zeros

• If need be, this will be the 32nd line, meaning a maximum of 31 lines for a program, or up to 8 variables and up to 23 lines of code

Page 22: The Minimal Instruction Set Computer (MISC) in  Java

22

An Example Machine Language Program

• The example is a machine language program that sums the first 10 integers

• The machine language alone with artificial line breaks and segment labels follows

• The *’s are used on input to detect the end of the program.

Page 23: The Minimal Instruction Set Computer (MISC) in  Java

23

• data segment• • 00001011000000000000000000000000• 00000000000000000000000000000000• 00000000000000000000000000000000• 00000000000000000000000000000000• 00000000000000000000000000000000• 00000000000000000000000000000000• 00000000000000000000000000000000• 00000000000000000000000000000000

Page 24: The Minimal Instruction Set Computer (MISC) in  Java

24

• code segment• • 10000101000001000000000100000000• 10000111000000010000010000000000• 10001010000001000000000100000000• 10000011000000110000000000000000• 10001011000000110000010000000000• 10010001000010010000000000000000• ********************************

Page 25: The Minimal Instruction Set Computer (MISC) in  Java

25

The Example Program Data Segment with Assembly Language Guide

• /.DATA///• This is a directive, not an instruction

• 00001011 00000000 00000000 00000000 • /LOOPLIM/X0B//• loop limit data variable, offset 0, value 11• • 00000000 00000000 00000000 00000000• /ACCUM/X00//• accum data variable, offset 1, value 0

Page 26: The Minimal Instruction Set Computer (MISC) in  Java

26

General comments on data variables

• Registers can only contain 8 bits, so memory variables are limited to 8 bits

• Memory variables have to occur on word boundaries in order to be addressable

• Therefore, 3 bytes are wasted for every variable

Page 27: The Minimal Instruction Set Computer (MISC) in  Java

27

The Example Program Code Segment with Assembly Language Guide

• Only the live code is shown below.• Memory would be filled with 6 additional lines

of 4 groups of 8 zeros• These are not shown.

Page 28: The Minimal Instruction Set Computer (MISC) in  Java

28

• /.CODE///• This is a directive, not an instruction

• 10000101 00000100 00000001 00000000 • /MOVE/D/X01/• move reg D, const 1• MISC method: movetoregfromconst 4, 1

Page 29: The Minimal Instruction Set Computer (MISC) in  Java

29

• /.LABEL/LOOPTOP//• This is a directive, labeling a line in the code

which can be jumped to

• 10000111 00000001 00000100 00000000• /ADD/ACCUM/D/• add data offset 1, reg D• MISC method: addtomemfromreg 1, 4

Page 30: The Minimal Instruction Set Computer (MISC) in  Java

30

• 10001010 00000100 00000001 00000000• /ADD/D/X01/• add reg D, 1• MISC method: addtoregfromconst 4, 1• • 10000011 00000011 00000000 00000000• /MOVE/C/LOOPLIM/• move reg C, data offset 0• MISC method: movetoregfrommem 3, 0

Page 31: The Minimal Instruction Set Computer (MISC) in  Java

31

• 10001011 00000011 00000100 00000000• /SUB/C/D/• sub reg C, reg D• MISC method: subtractdestregsrcreg 3, 4

Page 32: The Minimal Instruction Set Computer (MISC) in  Java

32

• 10010001 00001001 00000000 00000000 • /JPOS/LOOPTOP//• Since space is reserved for 8 variables, the first instruction

comes at word 8. • The label looptop designates the 9th word, or line.• jump on positive to “LABEL”• MISC method: jumponpositive 9• • /.END///• This is a directive, not an instruction.

Page 33: The Minimal Instruction Set Computer (MISC) in  Java

33

Running the Simulation and Using the Operating System Commands

• Altogether, the simulation consists of 6 java files: • MachineByte.java, MachineWord.java, Machine.java,

Osystem.java, MachineOSProgram.java, and MyTerminalIO.java

• Assuming all of the files are in the same directory, compiling and running MachineOSProgram.java will set MISC in motion

• When it is running, it presents a simple command line prompt in a DOS window.

• The operating system has only 3 commands, rpf, dmc, and exit

Page 34: The Minimal Instruction Set Computer (MISC) in  Java

34

rpf

• = run program file• Upon entering this command the user is prompted

for the name of the program (machine language) file to run.

• Note that machine language files have to be simple text files and that when prompted for the file the O/S expects a name with the .txt extension

• It will seemingly “accept” files without the extension, but it will not work correctly

Page 35: The Minimal Instruction Set Computer (MISC) in  Java

35

dmc• = dump memory contents• Upon entering this command the user is prompted for the

name of the output file to create• In this file the system will put the contents of the memory

after a program run• Notice that this operating system in effect has no I/O

capabilities. • You only know what the program did by looking at the

memory contents afterwards.• Note that the output file specified should also be a text file

with a .txt extension.

Page 36: The Minimal Instruction Set Computer (MISC) in  Java

36

exit• = quit or end the simulation. (Technically this isn’t even really a

command…)• Note that a text file named “showfile” should show up in the

directory where you run the simulation. • This is caused by a call to the showStuff() method in the simulation

code.• It is a debugging tool• Even if things are so messed up that you can’t successfully use

dmc, you can still see simulation results• A call to showStuff() can be placed at various locations in the

simulation code to capture and output the machine’s contents at that point.

Page 37: The Minimal Instruction Set Computer (MISC) in  Java

37

A Summary of the Structure of the Java Simulation by Class, Constructor, and Method

• Listed below are the component classes that make up the simulation

• Complete html documentation for the simulation code is available

• In this summary, important information is emphasized without exhaustively commenting on all aspects of the classes or mentioning all instance variables, constructors, or methods of the classes.

Page 38: The Minimal Instruction Set Computer (MISC) in  Java

38

MachineByte

• This is a container for an array of 8 characters• Each character is either a 1 or a 0, so this

represents a byte in the machine simulation

Page 39: The Minimal Instruction Set Computer (MISC) in  Java

39

MachineWord

• This is a container for an array of 4 MachineByte objects

• In the machine architecture 1 addressable word equals 4 bytes

Page 40: The Minimal Instruction Set Computer (MISC) in  Java

40

Machine

• This is the heart of the simulation and its contents can be broken down into several categories

• As explained in greater detail above, the hardware of the machine, its registers and memory, are simulated by elements of arrays of the necessary type

• These are declared and constructed in Machine

Page 41: The Minimal Instruction Set Computer (MISC) in  Java

41

• Machine has a general purpose method that may be useful for debugging, showStuff()

• This shows the complete contents of the machine, including the registers

• This method exists “on the side” and can be used to figure out what is going on with the simulation

• It is not intended for use as part of your solution to a programming assignment, except as a debugging tool

Page 42: The Minimal Instruction Set Computer (MISC) in  Java

42

• Machine has some special purpose methods, which do not support general machine language instructions

• Instead, they are used by the Osystem to do I/O.

• They are:• loadWordToOffset()• getWordFromOffset()

Page 43: The Minimal Instruction Set Computer (MISC) in  Java

43

• Machine has some methods which contain the logic for executing a machine language program.

• These are:• totalReset()• resetOffsets()• takeControl()

Page 44: The Minimal Instruction Set Computer (MISC) in  Java

44

• takeControl() is the most fundamental of the execution methods

• It is called by the Osystem after a program is loaded

Page 45: The Minimal Instruction Set Computer (MISC) in  Java

45

• takeControl() contains the built-in logic of – incrementing the codeoffset register– checking the contents of that location in memory – and executing the method that implements the

machine language instruction corresponding to the binary code found there

Page 46: The Minimal Instruction Set Computer (MISC) in  Java

46

• Machine has methods that implement the machine language move, add, subtract, and jump instructions

• It also has some helper methods that support arithmetic

• One method helps with integer arithmetic when the machine contents are in binary form

• Another method sets the flag register to agree with the outcome of an arithmetic operation

Page 47: The Minimal Instruction Set Computer (MISC) in  Java

47

Osystem

• This has a constructor in which a copy of the Machine is constructed

• It also contains two methods:– runProgramFile()– dumpMemoryContents()

• runProgramFile() loads a program from an external file and turns execution over to the machine

• dumpMemoryContents() stores the current contents of the machine’s memory into an external file

Page 48: The Minimal Instruction Set Computer (MISC) in  Java

48

MachineOSProgram

• This is a program containing a main() method• It is the simulation driver• In it a copy of the Osystem is constructed• The rest of the program is basically a loop which

prompts and checks to see whether the user is entering Osystem commands and file names to go with them

• It also supports an exit command, which is not an Osystem command, but is simply the input which causes the MachineOSProgram to stop looping.

Page 49: The Minimal Instruction Set Computer (MISC) in  Java

49

MyTerminalIO

• This is just my implementation of a simple class that supports input to a program running in a command prompt.

Page 50: The Minimal Instruction Set Computer (MISC) in  Java

50

Part 2. Programming Project

Page 51: The Minimal Instruction Set Computer (MISC) in  Java

51

• With the exception of a couple of items, everything you need to know in order to work this assignment you learned in CS 202.

• You will notice that the examples given in the later units of CS 202, registers and so on, are the basis for the project in CS 304.

• It will not be necessary to explicitly use any design patterns when working the project.

Page 52: The Minimal Instruction Set Computer (MISC) in  Java

52

• So to a large extent the project is a review, requiring you to stay in practice programming while learning various things.

• On the other hand, as you learn more about design patterns, you may find that some of the knowledge you’ve gained can be applied towards writing a good solution to the problem.

Page 53: The Minimal Instruction Set Computer (MISC) in  Java

53

• The project consists of 10 numbered parts which are described below.

• There are dependencies between some of the parts, and these are explained in the bulleted items following the descriptions.

• There is also a diagram at the end that spells out the dependencies.

Page 54: The Minimal Instruction Set Computer (MISC) in  Java

54

• Two parts of the project are marked with ***’s. • This means that their successful

implementation relies on aspects of Java that have not been and will not be illustrated with example programs.

• This will make it necessary to look in the Java API documentation in order to complete them.

Page 55: The Minimal Instruction Set Computer (MISC) in  Java

55

• In the interests of making sure that everyone is equal in doing the project, the following information is being announced here:

• Most of you know by now that I have solutions or partial solutions to most assignments, and I tend to store them on the Web page for the course.

Page 56: The Minimal Instruction Set Computer (MISC) in  Java

56

• If you look in the folders for CS 304, you will find my solutions to the first five parts of the project.

• My solutions are available for reference in case you get stuck or are not clear about what the assignment requires.

Page 57: The Minimal Instruction Set Computer (MISC) in  Java

57

• Each person will get a different layout for their version of the project.

• This means that even if you rely on my code, you’ll have to make modifications.

• In any case, you’ll have to become familiar with the code so that you can modify it to accomplish the second five parts.

Page 58: The Minimal Instruction Set Computer (MISC) in  Java

58

• Writing your own code from the beginning would mean being able to apply any insights you might have about programming rather than just relying on my cut and dried solution.

Page 59: The Minimal Instruction Set Computer (MISC) in  Java

59

Project Part 1

• Give the application a frame with a menu. • Have the options to do load, run, dump, and

exit be menu items with associated listeners. • Use a JFileChooser to handle the information

about file names that has to be passed back and forth for the load and dump commands.

• Do this part first.

Page 60: The Minimal Instruction Set Computer (MISC) in  Java

60

Project Part 2

• Display the register contents of the machine in the graphics frame of the application.

• The register representations should be capable of both input and output.

• This will mean using JTextFields. • You should label the registers with JLabels .

Page 61: The Minimal Instruction Set Computer (MISC) in  Java

61

• Because the application runs files from beginning to end without a break, it is sufficient to show the register contents at the end of a machine language program run.

• It is not necessary to update the representation in the frame as the program executes.

• Do this after completing part 1.

Page 62: The Minimal Instruction Set Computer (MISC) in  Java

62

Project Part 3

• Add a JButton to the graphics frame and revise the application code so that the next instruction is executed only when the button is clicked.

• In this version of the application, the contents of the registers as shown in the frame should be updated after each button click, namely after the execution of each instruction.

Page 63: The Minimal Instruction Set Computer (MISC) in  Java

63

• It is reasonable to assume that the next instruction is still sitting in memory, and what is displayed in the registers after a click is the previously executed instruction along with the state resulting from its execution.

• Do this after completing part 2.

Page 64: The Minimal Instruction Set Computer (MISC) in  Java

64

Project Part 4

• This part has two separate components. • A. Add focus to the application so that when you

enter something into one of the registers from the keyboard, the cursor moves to the next register.

• B. Add a button that will clear the contents of all of the registers without changing the loaded program.

• In general, clearing means setting to 0.

Page 65: The Minimal Instruction Set Computer (MISC) in  Java

65

• You will need to confirm that whatever value is put into the code offset register is the correct one so that execution will start at the beginning of the machine language program when the run button is next clicked.

• Note that this is not a perfect situation, since memory variable values might have been changed already before the registers are cleared for restarting at the beginning.

Page 66: The Minimal Instruction Set Computer (MISC) in  Java

66

• You can do this after completing part 3. • It would also be possible to skip this part of

the assignment if you wanted to and move on to later ones.

• Since this part is included in the posted partial solution, skipping it when doing the assignment would be an unlikely option to exercise.

Page 67: The Minimal Instruction Set Computer (MISC) in  Java

67

Project Part 5

• Display the contents of the machine’s memory in the frame using a JTextArea.

• Since memory contents are too large to all fit in the frame at the same time, make sure the JTextArea is contained in scroll bars.

• Do this after completing part 3.

Page 68: The Minimal Instruction Set Computer (MISC) in  Java

68

• The screenshot on the next overhead gives some idea of what an implementation of parts 1-5 might look like.

Page 69: The Minimal Instruction Set Computer (MISC) in  Java

69

Page 70: The Minimal Instruction Set Computer (MISC) in  Java

70

Project Part 6

• *** Once the memory is displayed in the frame, add some visual indication of which machine instruction in memory is the current one.

• Do this by highlighting a line in the area where memory is displayed by changing the background color of that line.

• You can check the Java API documentation for more information on things you can do in a JTextArea.

Page 71: The Minimal Instruction Set Computer (MISC) in  Java

71

• You might also want to look up the class JTextComponent, which has methods like selectAll(), cut(), setCaretPosition(), and moveCaretPosition().

• These methods would be a good starting point for finding information on how to highlight a line.

• You can do this after completing part 5. • It is also possible to skip this part of the assignment

if you want to and move on to later ones.

Page 72: The Minimal Instruction Set Computer (MISC) in  Java

72

Project Part 7

• *** Make memory editable in the frame so that as execution progresses, if the machine language code in memory is altered, then it is the altered version that is run.

• This is not supposed to cause any change in the original source file, just change the current state of the machine.

• This opens up the possibility of using the memory area as an editor and entering programs either by writing them there from scratch, or by copying and pasting from other sources.

Page 73: The Minimal Instruction Set Computer (MISC) in  Java

73

• You can check the Java API documentation for more information on how to do things with a JTextArea.

• You can do this after completing part 5. • It is also possible to skip this part of the

assignment if you want to and move on to later ones.

Page 74: The Minimal Instruction Set Computer (MISC) in  Java

74

Project Part 8

• Add save and load options to the menu so that midway through a machine language program run, between button clicks, it would be possible to save the state of the machine to a file and reload it later to continue the run.

• If the design is suitably object-oriented, serializability should support this.

• You can do this after completing part 5. • It is also possible to skip this part of the assignment if

you want to and move on to later ones.

Page 75: The Minimal Instruction Set Computer (MISC) in  Java

75

Project Part 9

• Add a new, second button, which causes a program to run from beginning to end without repeated clicking.

• Turn this into a threaded application. • It should be possible to make more than one

copy of the machine, each in its own frame.

Page 76: The Minimal Instruction Set Computer (MISC) in  Java

76

• It should be possible to load and run sumtenV1.txt in multiple frames and see the copies of MISC executing the program in their separate frames at the same time.

• If things go by so fast that you don’t have time to start a second copy before the first one stops, add a delaying mechanism to the code.

• You can do this after completing part 5.

Page 77: The Minimal Instruction Set Computer (MISC) in  Java

77

Project Part 10

• Draw a UML diagram for the final version of your code, the version you’re handing in.

• Notice that this depends on how many of the parts you decided to do.

Page 78: The Minimal Instruction Set Computer (MISC) in  Java

78

Project Part Dependency Diagram

• The diagram given on the next overhead shows the dependency relationships between the different parts of the project.

• Any given part should only be done if the parts in a direct line before it have already been done.

• The order for accomplishing things for turning in is linear.

• You have to turn in parts 1-3 by the first test, parts 4-6 by the second test, and parts 7-10 by the end of the semester.

Page 79: The Minimal Instruction Set Computer (MISC) in  Java

79

1

4

2

9

56

7

3

8

10 Part 10 depends on however many parts you chose to implement.

Page 80: The Minimal Instruction Set Computer (MISC) in  Java

80

The End


Recommended