mirror of
https://github.com/supleed2/ELEC40006-P1-CW.git
synced 2024-12-22 21:45:49 +00:00
Fixed instrGen and added large test
Also added a note about the OR instruction. Either to fix later or leave as is.
This commit is contained in:
parent
0b1ffea9ce
commit
24e22f13ec
|
@ -17,6 +17,11 @@
|
||||||
STA R6 909
|
STA R6 909
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
IMPORTANT NOTE: For the OR instruction, enter it as "_OR", otherwise the code breaks :(
|
||||||
|
-Kacper
|
||||||
|
*/
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -190,7 +195,7 @@ string getInstructionHex(string instruction){
|
||||||
rs2="R0";
|
rs2="R0";
|
||||||
}else if(opcode=="AND"){
|
}else if(opcode=="AND"){
|
||||||
binary+="001100";
|
binary+="001100";
|
||||||
}else if(opcode=="OR"){
|
}else if(opcode=="_OR"){
|
||||||
binary+="001101";
|
binary+="001101";
|
||||||
}else if(opcode=="XOR"){
|
}else if(opcode=="XOR"){
|
||||||
binary+="001110";
|
binary+="001110";
|
||||||
|
@ -215,7 +220,7 @@ string getInstructionHex(string instruction){
|
||||||
rs1="R0";
|
rs1="R0";
|
||||||
rs2="R0";
|
rs2="R0";
|
||||||
}else if(opcode=="SUB"){
|
}else if(opcode=="SUB"){
|
||||||
binary+"011000";
|
binary+="011000";
|
||||||
}else if(opcode=="SBC"){
|
}else if(opcode=="SBC"){
|
||||||
binary+="011001";
|
binary+="011001";
|
||||||
}else if(opcode=="SBO"){
|
}else if(opcode=="SBO"){
|
||||||
|
@ -278,10 +283,12 @@ void generateMIF(vector<string> instructions){
|
||||||
cout << "DATA_RADIX = HEX;" << endl;
|
cout << "DATA_RADIX = HEX;" << endl;
|
||||||
cout << "CONTENT" << endl;
|
cout << "CONTENT" << endl;
|
||||||
cout << "BEGIN" << endl;
|
cout << "BEGIN" << endl;
|
||||||
cout << "[0..2047]: 0;" << endl;
|
int i=0;
|
||||||
for (int i = 0; i < instructions.size(); i++){
|
for (i; i < instructions.size(); i++){
|
||||||
cout << i << " : " << instructions.at(i) << ";" << endl;
|
cout << i << " : " << instructions.at(i) << ";" << endl;
|
||||||
}
|
}
|
||||||
|
cout << "[" << i << "..2047]: 0;" << endl;
|
||||||
|
cout << "END;" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
|
|
72
all_instr_test.mif
Normal file
72
all_instr_test.mif
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
DEPTH = 2048;
|
||||||
|
WIDTH = 16;
|
||||||
|
ADDRESS_RADIX = DEC;
|
||||||
|
DATA_RADIX = HEX;
|
||||||
|
CONTENT
|
||||||
|
BEGIN
|
||||||
|
0 : 8800;
|
||||||
|
1 : 9001;
|
||||||
|
2 : 26D0;
|
||||||
|
3 : 291A;
|
||||||
|
4 : 2D00;
|
||||||
|
5 : 3161;
|
||||||
|
6 : 3440;
|
||||||
|
7 : 3993;
|
||||||
|
8 : 3AA5;
|
||||||
|
9 : D003;
|
||||||
|
10 : 3CE2;
|
||||||
|
11 : A003;
|
||||||
|
12 : 9804;
|
||||||
|
13 : 38A5;
|
||||||
|
14 : 3FC0;
|
||||||
|
15 : 419F;
|
||||||
|
16 : 304F;
|
||||||
|
17 : 5008;
|
||||||
|
18 : 5028;
|
||||||
|
19 : 284F;
|
||||||
|
20 : 43F7;
|
||||||
|
21 : 3540;
|
||||||
|
22 : 47F5;
|
||||||
|
23 : 484D;
|
||||||
|
24 : 8806;
|
||||||
|
25 : 0040;
|
||||||
|
26 : B800;
|
||||||
|
27 : 8807;
|
||||||
|
28 : 085A;
|
||||||
|
29 : B800;
|
||||||
|
30 : 8808;
|
||||||
|
31 : 0A7D;
|
||||||
|
32 : B800;
|
||||||
|
33 : 8809;
|
||||||
|
34 : 0C53;
|
||||||
|
35 : B801;
|
||||||
|
36 : 880A;
|
||||||
|
37 : B00B;
|
||||||
|
38 : 0E70;
|
||||||
|
39 : B800;
|
||||||
|
40 : 880C;
|
||||||
|
41 : 1063;
|
||||||
|
42 : B800;
|
||||||
|
43 : 880D;
|
||||||
|
44 : 126D;
|
||||||
|
45 : B800;
|
||||||
|
46 : 880E;
|
||||||
|
47 : 147A;
|
||||||
|
48 : B800;
|
||||||
|
49 : 880F;
|
||||||
|
50 : 5340;
|
||||||
|
51 : 53C0;
|
||||||
|
52 : 1678;
|
||||||
|
53 : B800;
|
||||||
|
54 : 1863;
|
||||||
|
55 : 1A5A;
|
||||||
|
56 : 1FB8;
|
||||||
|
57 : 7C00;
|
||||||
|
58 : 1C77;
|
||||||
|
59 : 204C;
|
||||||
|
60 : A810;
|
||||||
|
61 : 226D;
|
||||||
|
62 : 246D;
|
||||||
|
63 : 7E00;
|
||||||
|
[64..2047]: 0;
|
||||||
|
END;
|
64
all_instr_test.txt
Normal file
64
all_instr_test.txt
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
LDA R1 0
|
||||||
|
LDA R2 1
|
||||||
|
MOV R3 R2
|
||||||
|
ADD R4 R3 R2
|
||||||
|
ADO R4
|
||||||
|
SUB R5 R4 R1
|
||||||
|
SBO R1
|
||||||
|
MUL R6 R2 R3
|
||||||
|
MLA R2 R4 R5
|
||||||
|
STA R2 3
|
||||||
|
MLS R3 R4 R2
|
||||||
|
LDA R4 3
|
||||||
|
LDA R3 4
|
||||||
|
MUL R2 R4 R5
|
||||||
|
MRT R7
|
||||||
|
LSL R6 R3 R7
|
||||||
|
SUB R1 R1 R7
|
||||||
|
PSH R1
|
||||||
|
PSH R5
|
||||||
|
ADD R1 R1 R7
|
||||||
|
LSR R7 R6 R7
|
||||||
|
SBO R5
|
||||||
|
ASR R7 R6 R5
|
||||||
|
ROR R1 R1 R5
|
||||||
|
LDA R1 6
|
||||||
|
JMP R1
|
||||||
|
LDA R7 0
|
||||||
|
LDA R1 7
|
||||||
|
JC1 R1 R3 R2
|
||||||
|
LDA R7 0
|
||||||
|
LDA R1 8
|
||||||
|
JC2 R1 R7 R5
|
||||||
|
LDA R7 0
|
||||||
|
LDA R1 9
|
||||||
|
JC3 R1 R2 R3
|
||||||
|
LDA R7 1
|
||||||
|
LDA R1 10
|
||||||
|
LDA R6 11
|
||||||
|
JC4 R1 R6
|
||||||
|
LDA R7 0
|
||||||
|
LDA R1 12
|
||||||
|
JC5 R1 R4 R3
|
||||||
|
LDA R7 0
|
||||||
|
LDA R1 13
|
||||||
|
JC6 R1 R5 R5
|
||||||
|
LDA R7 0
|
||||||
|
LDA R1 14
|
||||||
|
JC7 R1 R7 R2
|
||||||
|
LDA R7 0
|
||||||
|
LDA R1 15
|
||||||
|
POP R5
|
||||||
|
POP R7
|
||||||
|
JC8 R1 R7
|
||||||
|
LDA R7 0
|
||||||
|
AND R1 R4 R3
|
||||||
|
_OR R1 R3 R2
|
||||||
|
NOT R6 R7
|
||||||
|
NOP
|
||||||
|
XOR R1 R6 R7
|
||||||
|
NND R1 R1 R4
|
||||||
|
LDA R5 16
|
||||||
|
NOR R1 R5 R5
|
||||||
|
XNR R1 R5 R5
|
||||||
|
STP
|
Loading…
Reference in a new issue