这个作业是编写一个模拟“ Brookshear Machine”的C程序
159.102 Technical Programming 2 Assignment 3
Where PC is the program counter, INST is the current instruction and R0 through to RF are the value of the sixteen registers. Each field is output as a 2 or 4 digit hexadecimal value (use the X format specifier to get capital letters) with a leading 0 if necessary.
Output continues (with no user intervention) until the Halt instruction is executed, at which time your program also stops.
A Halt instruction will occur in all test programs.
Example: if a3.txt contains:
B404
239A
2412
5345
350C
C000
Then the output is:
00 B404 – [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
04 2412 – [00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
06 5345 – [00 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00]
08 350C – [00 00 00 00 12 12 00 00 00 00 00 00 00 00 00 00]
0A C000 – [00 00 00 00 12 12 00 00 00 00 00 00 00 00 00 00]
Use unsigned char‘s for your PC, registers and memory.
When reading the a3.txt file, be careful with alignment problems in the scanf-like functions. First read each line into an unsigned int variable, then extract out the two bytes using bit-wise operators and store them in your memory array.
Brookshear machine instructions
1RXY Load register R with the value at memory address XY
2RXY Load register R with the value XY
3RXY Store the value in register R at memory address XY
40RS Copy/move the value in register R to register S
5RST Add the values in registers R and S and put the answer in register T
7RST Bit-wise OR the values in registers R and S and put the answer in register T
8RST Bit-wise AND the values in registers R and S and put the answer in register T
9RST Bit-wise XOR the values in registers R and S and put the answer in register T
AR0X Rotate the contents of register R X times to the right
BRXY Jump to the instruction located at memory address XY if the value in register R is equal to the value in register 0 (i.e. change the PC to XY)
C000 Halt