Skip to content

Commit 35ba4a8

Browse files
multiplication working, yayyyy!
1 parent f308db3 commit 35ba4a8

File tree

12 files changed

+514
-887
lines changed

12 files changed

+514
-887
lines changed
1.11 KB
Binary file not shown.

Assembler/cmake-build-debug/.ninja_log

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,5 @@
2525
1807 1882 1703536519944071821 Assembler 35cca99beb22f557
2626
1 1854 1703536641039528366 CMakeFiles/Assembler.dir/main.cpp.o a0649e1ce8eedca3
2727
1854 1937 1703536641127533671 Assembler 35cca99beb22f557
28+
1 2012 1703684675441054811 CMakeFiles/Assembler.dir/main.cpp.o a0649e1ce8eedca3
29+
2012 2100 1703684675529050080 Assembler 35cca99beb22f557
64 Bytes
Binary file not shown.
728 Bytes
Binary file not shown.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
Start testing: Dec 26 11:28 IST
1+
Start testing: Dec 28 21:40 IST
22
----------------------------------------------------------
3-
End testing: Dec 26 11:28 IST
3+
End testing: Dec 28 21:40 IST

Assembler/main.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,15 @@ int main(int argc, char* argv[]) {
483483
}
484484

485485
auto InstructionStart = PRESENT_ADDRESS;
486+
//Our machine jumps to +1 address when called , jumped or returned, so for instructions we need to have a gap(1 word), and we jump to the next address.
487+
if (PRESENT_ADDRESS % RAM_FORMAT_LENGTH == 0) {
488+
SubroutinesNInstructions << "\n";
489+
SubroutinesNInstructions << "0x" << std::setw(3) << std::hex << PRESENT_ADDRESS << ": ";
490+
}
491+
//This will take care of the edge case, in the hardware.
492+
SubroutinesNInstructions << "0000 ";
493+
PRESENT_ADDRESS++;
494+
486495

487496
//Here we are going to store the instructions in the sequence.
488497
//ASSEMBLING_INSTRUCTIONS

Docs.txt

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -250,34 +250,23 @@ G => IF 1 THE NEXT MICRO-INSTRUCTION WILL BE THE FIRST INSTRUCTION OF THE NEXT I
250250
IF 0 THE NEXT MICRO-INSTRUCTION IS FROM THE SAME INSTRUCTION, IT IS CONTINUING TO DO THE SAME INSTRUCTION.
251251

252252

253-
THE STARTING MICRO-OPERATION OF EVERY INSTRUCTION WILL BE THE EACT SAME THAT IS THE FETCH CYCLE:
254-
255-
EACH INSTRUCTION, HOW IT IS INTERPRETTED, HOW TO USE IT, OTHER NON-USEFUL INFO FOR ANY USER(I do not think any one will use this :( , but anyways)
256-
---------------------------------------------------------------------------------
257-
1-B-0-0-0-0-4-0
258-
259-
260-
1 -> LFA
261-
STANDS FOR LOAD FROM ADDRESS
262-
CAN LOAD A WORD FROM THE ADDRESS DIRECTLY OR INDIRECTLY
263-
FOR EXAMPLE :
264-
```
265-
.data
266-
a = 4;
267-
b = &a;
268-
```
269-
you can load 4 into the DATA REGISTER in two ways,
270-
EITHER :
271-
```
272-
lfa a;
273-
```
274-
OR :
275-
```
276-
lfa% b;
277-
```
253+
THE STARTING MICRO-OPERATION OF EVERY INSTRUCTION WILL BE THE EXACT SAME THAT IS THE FETCH CYCLE:
278254

255+
* THE CONTROL FOR FETCHING OF THE INSTRUCTION IS NOT WRITTEN IN THE RAM, THE CIRCUIT WILL FETCH THE INSTRUCTION WHENEVER IT KNOWS THAT THE PREVIOUS INSTRUCTION IS COMPLETED.
256+
+ THIS IS BECAUSE THE LAST BIT OF EACH CONTROL WORD IN THE ROM WILL TELL THE CIRCUIT TO LOAD THE NEXT INSTRUCTION OR THIS INSTRUCTION HAS SOME MICRO-INSTRUCTIONS LEFT.
279257

280258

259+
&& SOME EXTRA DESIGN CHOICES AND THEIR REASONS :
260+
261+
@ ABOUT THE AND GATES AT CONTROLLED BUFFERS OR TRI-STATE BUFFERS, THIS IS BECAUSE OUR INSTRUCTION LOADING HAPPENS AFTER HALF A CYCLE AFTER COMPLETION OF THE PREVISOU INSTRUCTION,
262+
SO THIS MEANS THE OUTPUT FROM THESE REGISTERS WILL BE PUT ON THE BUS FO ONLY HALF OF THE CUCLE,
263+
THIS HELPS PREVENT CONFLICTS(TWO VALUES BEING PUT ON THE BUS AT THE SAME TIME).
264+
265+
@ ABOUT THE CONFUSING LOOKING INPUT FOR THE PC LOAD, WHEN WE ARE LOADING THE ADDRESS TO PC,
266+
+ FOR "RET" AND "CALL" AFTER LOADING THE ADDRESS INTO THE ADDRESS REGISTER(FOR INDIRECT) WRITING THE PRESENT ADDRESS VALUE THE VALUE IN THE INSTRUCTION IN THE CASE OF THE
267+
"CALL", NEXT WE ARE GOING TO GO TO THE 'ADDRESS + 1' VALUE BECAUSE THE SUBROUTINE INSTRUCTIONS WILL START FROM THE NEXT ADDRESS.
268+
+ BUT IN THE CASE OF JUMP(AS OUR JUMP IS ALWAYS CONDITIONAL) IF THE CONDITION IS "1" THE ADDRESS TO WHICH + 1 IS LOADED, BUT IF IT NOT, THEN WE LOAD THE ADDRESS "PC + 1",
269+
EQUIVALENTLY SKIPPING THE JUMP INSTRUCTION.
281270

282271

283272

ROM.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
v3.0 hex words addressed
22
00: 00000000 00000000 00000000 1a000101 00000000 21000101 00000000 13000101
33
08: 00000000 71000100 13000101 00000000 15000100 13000081 00000000 4a000000
4-
10: 20080001 00000000 1a000100 21000100 02080001 00000000 00000000 15000100
4+
10: 02080001 00000000 1a000100 21000100 02080001 00000000 00000000 15000100
55
18: 1a000081 00000000 15000100 21000081 00000000 15000100 13000081 00000000
66
20: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
77
28: 00000000 00000000 15000100 1a000080 21000081 00000000 00000000 00000000
@@ -12,7 +12,7 @@ v3.0 hex words addressed
1212
50: 00050000 20020000 00050000 20020000 00050000 20020000 00050000 20020000
1313
58: 00050000 20020000 00050000 20020000 00050000 20020000 00050000 20020000
1414
60: 00050000 20020000 00050000 20020000 00050000 20020000 00050000 20020000
15-
68: 00050000 20020000 00050000 02b80001 00000000 00000000 00000000 00000000
15+
68: 00050000 20020000 02b80001 00000000 00000000 00000000 00000000 00000000
1616
70: 00000600 3f000001 00000000 00000401 00000000 ca000000 20800000 00000400
1717
78: ca000000 22280000 2f000001 00000000 c6000000 00000400 ca000000 20800000
1818
80: 6a000000 02380000 2f000001 00000000 ca000000 20800001 00000000 00002001
@@ -29,5 +29,5 @@ d0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
2929
d8: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
3030
e0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
3131
e8: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
32-
f0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
32+
f0: 21000100 00000001 00000000 00000000 00000000 00000000 00000000 00000000
3333
f8: 00000000 00000000 00000000 00000000 00000000 00000000 1b000040 00000000

0 commit comments

Comments
 (0)