final version

This commit is contained in:
aljazbrodar. 2025-12-11 08:19:08 +01:00
parent 55a126dcca
commit ef273790b8
14 changed files with 443 additions and 102 deletions

View file

@ -53,3 +53,15 @@
14 841 1765434930316414405 CMakeFiles/simulator.dir/executor.cpp.o 8cd2a28f3c211eaa
14 1672 1765434930316414405 CMakeFiles/simulator.dir/mainwindow.cpp.o e3901bb2e4f9b516
1672 1908 1765434931974410166 simulator 53725ab159343a13
1 19 1765435446559075624 simulator_autogen/timestamp c193a23cfe79571d
1 19 1765435446559075624 simulator_autogen/mocs_compilation.cpp c193a23cfe79571d
1 19 1765435446559075624 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/timestamp c193a23cfe79571d
1 19 1765435446559075624 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/mocs_compilation.cpp c193a23cfe79571d
19 1582 1765435446577075723 CMakeFiles/simulator.dir/mainwindow.cpp.o e3901bb2e4f9b516
1582 1819 1765435448140084359 simulator 53725ab159343a13
4 20 1765435860943441957 simulator_autogen/timestamp c193a23cfe79571d
4 20 1765435860943441957 simulator_autogen/mocs_compilation.cpp c193a23cfe79571d
4 20 1765435860943441957 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/timestamp c193a23cfe79571d
4 20 1765435860943441957 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/simulator_autogen/mocs_compilation.cpp c193a23cfe79571d
20 1532 1765435860959441982 CMakeFiles/simulator.dir/mainwindow.cpp.o e3901bb2e4f9b516
1532 1770 1765435862471444373 simulator 53725ab159343a13

View file

@ -0,0 +1,186 @@
dijk START 0
.zacetna inicializacija, d=0
LDA #0
LDX ZAC
STA D, X
STA PROV, X
.neskoncna while zanka
WHILE LDS minus_ena . S = -1, hrani vozlisce ki imam min razdaljo v okolici
LDX #0 . stevec = 0
FOR1 RMO X, A
STA old_X . shrani vrednost X-a
LDA PROV, X . nalozi potencialno razdaljo sosednjega vozlisca v okolici
COMP minus_ena
JEQ NEXT . ce ze obiskano=-2 ali neobiskano=-1 preskoci vozlisce
COMP minus_dva
JEQ NEXT
RMO S, A . sicer S v A
COMP minus_ena . ce S se ni nastavljen ga nastavi prvic
JEQ SET . sicer poglej ali ima trenutno vozl. manjso pot. razdaljo prov[X] < prov[S]
LDA PROV, X . nalozi p. razdaljo tren. vozl.
RMO A, T . shrani jo v T reg.
RMO S, X . premakni trenutni ix min. vozl. v X za ix naslavljanje
LDA PROV, X . nalozi trenutno min razdaljo
LDX old_X . obnovi X, vrednost stevca zanke FOR1
COMPR T, A . primerjaj vrednosti tj. ce razdalja ni krajsa preskoci, sicer SET
JEQ NEXT
JGT NEXT
SET RMO X, S . S nastavi na ix vozlisca - trenutna iteracija
NEXT RMO X, A
ADD #3
RMO A, X
COMP #table_len
JLT FOR1
. ce ni vec vozlisc v okolici koncaj
RMO S, A
COMP minus_ena
JEQ HALT
.sicer p. razdaljo shrani kot dejansko in oznaci vozlisce kot obiskano
RMO S, X
LDA PROV, X
STA D, X
LDA minus_dva
STA PROV, X
.nato dodaj vozlisca v okolico oz. posodobi razdalje obstojecih vozlisc v okolici
LDX #0 . stevec na 0
FOR2 RMO X, A
STA old_X
LDA INPUT_X, X . preveri ali je to povezava ki izvira v vozl. S
MUL #3 . pomnozi s 3 da lahko primerjamo s S, ki steje ix WORDa
COMPR A, S
JGT NEXT2 . ce ni preskoci
JLT NEXT2
.sicer preveri ali je sosednje vozlisce ze obiskano
LDA INPUT_Y, X . nalozi ix soseda
MUL #3
RMO A, X . premakni v X
LDA PROV, X . nalozi sosedovo potencialno razdaljo
LDX old_X . obnovi X
COMP minus_dva . poglej ce je ze obiskan
JEQ NEXT2
COMP minus_ena .ce se ni obiskan, nastavi vrednost p. razdalje
JEQ SET2
.sicer preveri da je nova p. razdalja manjsa od trenutne
. D[S] + w < PROV[Y]
RMO S, X
LDA D, X
LDX old_X
ADD INPUT_W, X
RMO A, T
LDA INPUT_Y, X
MUL #3
RMO A, X
LDA PROV, X
LDX old_X
COMPR A, T
JEQ NEXT2
JLT NEXT2
SET2 RMO S, X
LDA D, X
LDX old_X
ADD INPUT_W, X
RMO A, T
LDA INPUT_Y, X
MUL #3
RMO A, X
RMO T, A
STA PROV, X
LDX old_X
NEXT2 RMO X, A
ADD #3
RMO A, X
COMP #table_len2
JLT FOR2
J WHILE
HALT J HALT
END dijk
.vhodni parametri
INPUT_V WORD 9
INPUT_E WORD 16
INPUT_X WORD 0
WORD 0
WORD 1
WORD 1
WORD 2
WORD 2
WORD 3
WORD 3
WORD 3
WORD 3
WORD 3
WORD 4
WORD 4
WORD 5
WORD 6
WORD 7
INPUT_Y WORD 1
WORD 2
WORD 2
WORD 3
WORD 6
WORD 3
WORD 6
WORD 8
WORD 7
WORD 5
WORD 4
WORD 1
WORD 5
WORD 7
WORD 8
WORD 8
INPUT_W WORD 8
WORD 12
WORD 13
WORD 25
WORD 21
WORD 14
WORD 12
WORD 16
WORD 12
WORD 8
WORD 20
WORD 9
WORD 19
WORD 11
WORD 11
WORD 9
last EQU *
.pomozne spremenljivke
old_X RESW 1
old_S RESW 1
minus_ena WORD X'FFFFFF'
minus_dva WORD X'FFFFFE'
.najkrajse razdalje
D WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
.provisional razdalje (okolica), -2 = done, -1 neobiskan
PROV WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
WORD -1
last_in EQU *
table_len EQU last_in - PROV
table_len2 EQU last - INPUT_W
.indeks zacetnega vozlisca * 3
ZAC WORD 0

View file

@ -0,0 +1,18 @@
Hdijk 0000000001C6
T0000001E0100000721BD0FA1840FA19C6F2178050000AC100F216A03A18E2B216A33
T00001E1E20252B216733201FAC402B215C33201503A177AC05AC4103A170072146A0
T00003C1E50332005372002AC14AC10190003AC0129001B3B2FC0AC402B213033208E
T00005A1EAC4103A1490FA12B0321250FA140050000AC100F211103A07E210003A004
T0000781E37205D3B205A03A0A0210003AC0103A11F0720F52B20FB3320462B20F233
T0000961E2023AC4103A0F00720E11BA0AEAC0503A079210003AC0103A0F80720CEA0
T0000B41E053320203B201DAC4103A0CD0720BE1BA08BAC0503A056210003AC01AC50
T0000D21E0FA0D30720A9AC10190003AC012900303B2F863F2F243F2FFD0000090000
T0000F01E100000000000000000010000010000020000020000030000030000030000
T00010E1E030000030000040000040000050000060000070000010000020000020000
T00012C1E030000060000030000060000080000070000050000040000010000050000
T00014A1E0700000800000800000800000C00000D00001900001500000E00000C0000
T000168191000000C00000800001400000900001300000B00000B000009
T0001871EFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
T0001A51EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
T0001C303000000
E000000

View file

@ -0,0 +1,29 @@
HORNER START 0
. Pretvorimo polinom x^4 + 2x^3 + 3x^2 + 4x+5 v Hornerjevo obliko
. b_n = a_n = 1
. b_n-1 = 2 + b_n * x = 2 + 1 * x = 4
. b_n-2 = 3 + b_n-1 * x = 3 + 4 * x = 11
. b_n-3 = 4 + b_n-2 * x = 4 + 11 * x = 26
. b_n-4 = 5 + b_n-3 * x = 5 + 26 * x = 57
. kjer x = 2
LDA #1
MUL x
ADD #2
MUL x
ADD #3
MUL x
ADD #4
MUL x
ADD #5
STA res
karkoli J karkoli
END HORNER
x WORD 2
res RESW 1

View file

@ -0,0 +1,39 @@
POLY START 0
.x^4
LDA x
MUL x
MUL x
MUL x
STA res
CLEAR A
.+2x^3
LDA x
MUL x
MUL x
MUL #2
ADD res
STA res
CLEAR A
.+3x^2
LDA x
MUL x
MUL #3
ADD res
STA res
CLEAR A
.+4x
LDA x
MUL #4
ADD res
STA res
CLEAR A
.+5
LDA res
ADD #5
STA res
CLEAR A
HALT J HALT
END POLY
x WORD 2
res RESW 1

View file

@ -0,0 +1,5 @@
HPOLY 000000000058
T0000001E03204F23204C2320492320460F2046B40003203E23203B2320382100021B
T00001E1E20350F2032B40003202A2320272100031B20240F2021B400032019210004
T00003C191B20160F2013B40003200E1900050F2008B4003F2FFD000002
E000000

View file

@ -0,0 +1,47 @@
MAIN START 0
.nastavi X register za prehod cez tabelo
LDX counter
.izracun vrednosti za vsak x v tabeli in
LOOP STA ctx_a
JSUB HORNER_X
LDA counter
ADD #3
STA counter
LDX counter
COMP #bytes_len
JLT LOOP
HALT J HALT
END MAIN
HORNER_X LDA #1
MUL in, X
ADD #2
MUL in, X
ADD #3
MUL in, X
ADD #4
MUL in, X
ADD #5
STA in, X
.povrni kontekst pred skokom v subrutino
LDA ctx_a
RSUB
.tabela x-ov polinoma
in WORD 0
WORD 2
WORD 3
.parametri
lastin EQU *
bytes_len EQU lastin - in
counter WORD 0
.kontest
ctx_a RESW 1

View file

@ -0,0 +1,5 @@
HMAIN 000000000051
T0000001E0720480F20484B201503203F1900030F20390720362900093B2FE83F2FFD
T00001E1E01000123A01E19000223A01819000323A01219000423A00C1900050FA006
T00003C1203200F4F0000000000000002000003000000
E000000

View file

@ -37,18 +37,14 @@ public:
QWidget *centralwidget;
QGroupBox *groupBox;
QLabel *labelA;
QLabel *labelL;
QLabel *labelB;
QLabel *labelS;
QLabel *labelT;
QLabel *labelPC;
QLabel *labelF;
QLabel *label_2;
QLabel *label_3;
QLabel *label_4;
QLabel *label_5;
QLabel *label_6;
QLabel *label_7;
QLabel *label_8;
QGroupBox *groupBox_2;
QLabel *labelX;
@ -56,6 +52,10 @@ public:
QGroupBox *groupBox_3;
QLabel *labelSW;
QLabel *label_11;
QLabel *label_3;
QLabel *labelPC;
QLabel *label_7;
QLabel *labelL;
QWidget *layoutWidget;
QVBoxLayout *verticalLayout;
QLabel *label;
@ -93,52 +93,40 @@ public:
centralwidget->setObjectName("centralwidget");
groupBox = new QGroupBox(centralwidget);
groupBox->setObjectName("groupBox");
groupBox->setGeometry(QRect(10, 20, 191, 301));
groupBox->setGeometry(QRect(10, 20, 191, 231));
labelA = new QLabel(groupBox);
labelA->setObjectName("labelA");
labelA->setGeometry(QRect(20, 40, 58, 15));
labelL = new QLabel(groupBox);
labelL->setObjectName("labelL");
labelL->setGeometry(QRect(20, 240, 58, 15));
labelB = new QLabel(groupBox);
labelB->setObjectName("labelB");
labelB->setGeometry(QRect(20, 120, 58, 15));
labelB->setGeometry(QRect(20, 80, 58, 15));
labelS = new QLabel(groupBox);
labelS->setObjectName("labelS");
labelS->setGeometry(QRect(20, 160, 58, 15));
labelS->setGeometry(QRect(20, 120, 58, 15));
labelT = new QLabel(groupBox);
labelT->setObjectName("labelT");
labelT->setGeometry(QRect(20, 200, 58, 15));
labelPC = new QLabel(groupBox);
labelPC->setObjectName("labelPC");
labelPC->setGeometry(QRect(20, 80, 91, 16));
labelT->setGeometry(QRect(20, 160, 58, 15));
labelF = new QLabel(groupBox);
labelF->setObjectName("labelF");
labelF->setGeometry(QRect(20, 280, 58, 15));
labelF->setGeometry(QRect(20, 200, 58, 15));
label_2 = new QLabel(groupBox);
label_2->setObjectName("label_2");
label_2->setGeometry(QRect(20, 20, 58, 15));
label_3 = new QLabel(groupBox);
label_3->setObjectName("label_3");
label_3->setGeometry(QRect(20, 60, 58, 15));
label_4 = new QLabel(groupBox);
label_4->setObjectName("label_4");
label_4->setGeometry(QRect(20, 100, 58, 15));
label_4->setGeometry(QRect(20, 60, 58, 15));
label_5 = new QLabel(groupBox);
label_5->setObjectName("label_5");
label_5->setGeometry(QRect(20, 140, 58, 15));
label_5->setGeometry(QRect(20, 100, 58, 15));
label_6 = new QLabel(groupBox);
label_6->setObjectName("label_6");
label_6->setGeometry(QRect(20, 180, 58, 15));
label_7 = new QLabel(groupBox);
label_7->setObjectName("label_7");
label_7->setGeometry(QRect(20, 220, 58, 15));
label_6->setGeometry(QRect(20, 140, 58, 15));
label_8 = new QLabel(groupBox);
label_8->setObjectName("label_8");
label_8->setGeometry(QRect(20, 260, 58, 16));
label_8->setGeometry(QRect(20, 180, 58, 16));
groupBox_2 = new QGroupBox(centralwidget);
groupBox_2->setObjectName("groupBox_2");
groupBox_2->setGeometry(QRect(10, 330, 161, 80));
groupBox_2->setGeometry(QRect(10, 260, 161, 80));
labelX = new QLabel(groupBox_2);
labelX->setObjectName("labelX");
labelX->setGeometry(QRect(20, 50, 58, 15));
@ -147,13 +135,25 @@ public:
label_10->setGeometry(QRect(20, 30, 58, 15));
groupBox_3 = new QGroupBox(centralwidget);
groupBox_3->setObjectName("groupBox_3");
groupBox_3->setGeometry(QRect(20, 460, 161, 80));
groupBox_3->setGeometry(QRect(10, 350, 161, 151));
labelSW = new QLabel(groupBox_3);
labelSW->setObjectName("labelSW");
labelSW->setGeometry(QRect(10, 50, 58, 15));
labelSW->setGeometry(QRect(20, 130, 58, 15));
label_11 = new QLabel(groupBox_3);
label_11->setObjectName("label_11");
label_11->setGeometry(QRect(10, 30, 58, 15));
label_11->setGeometry(QRect(20, 110, 58, 15));
label_3 = new QLabel(groupBox_3);
label_3->setObjectName("label_3");
label_3->setGeometry(QRect(20, 30, 58, 15));
labelPC = new QLabel(groupBox_3);
labelPC->setObjectName("labelPC");
labelPC->setGeometry(QRect(20, 50, 91, 16));
label_7 = new QLabel(groupBox_3);
label_7->setObjectName("label_7");
label_7->setGeometry(QRect(20, 70, 58, 15));
labelL = new QLabel(groupBox_3);
labelL->setObjectName("labelL");
labelL->setGeometry(QRect(20, 90, 58, 15));
layoutWidget = new QWidget(centralwidget);
layoutWidget->setObjectName("layoutWidget");
layoutWidget->setGeometry(QRect(240, 20, 541, 641));
@ -265,18 +265,14 @@ public:
actionExit->setText(QCoreApplication::translate("MainWindow", "Exit", nullptr));
groupBox->setTitle(QCoreApplication::translate("MainWindow", "Splo\305\241nonamenski registri", nullptr));
labelA->setText(QCoreApplication::translate("MainWindow", "labelA", nullptr));
labelL->setText(QCoreApplication::translate("MainWindow", "labelL", nullptr));
labelB->setText(QCoreApplication::translate("MainWindow", "labelB", nullptr));
labelS->setText(QCoreApplication::translate("MainWindow", "labelS", nullptr));
labelT->setText(QCoreApplication::translate("MainWindow", "labelT", nullptr));
labelPC->setText(QCoreApplication::translate("MainWindow", "labelPC", nullptr));
labelF->setText(QCoreApplication::translate("MainWindow", "labelF", nullptr));
label_2->setText(QCoreApplication::translate("MainWindow", "A", nullptr));
label_3->setText(QCoreApplication::translate("MainWindow", "PC", nullptr));
label_4->setText(QCoreApplication::translate("MainWindow", "B", nullptr));
label_5->setText(QCoreApplication::translate("MainWindow", "S", nullptr));
label_6->setText(QCoreApplication::translate("MainWindow", "T", nullptr));
label_7->setText(QCoreApplication::translate("MainWindow", "L", nullptr));
label_8->setText(QCoreApplication::translate("MainWindow", "F", nullptr));
groupBox_2->setTitle(QCoreApplication::translate("MainWindow", "Indeksni register", nullptr));
labelX->setText(QCoreApplication::translate("MainWindow", "labelX", nullptr));
@ -284,6 +280,10 @@ public:
groupBox_3->setTitle(QCoreApplication::translate("MainWindow", "Statusni register", nullptr));
labelSW->setText(QCoreApplication::translate("MainWindow", "labelSW", nullptr));
label_11->setText(QCoreApplication::translate("MainWindow", "SW", nullptr));
label_3->setText(QCoreApplication::translate("MainWindow", "PC", nullptr));
labelPC->setText(QCoreApplication::translate("MainWindow", "labelPC", nullptr));
label_7->setText(QCoreApplication::translate("MainWindow", "L", nullptr));
labelL->setText(QCoreApplication::translate("MainWindow", "labelL", nullptr));
label->setText(QCoreApplication::translate("MainWindow", "Pomnilnik", nullptr));
addressLineEdit->setText(QString());
addressLineEdit->setPlaceholderText(QCoreApplication::translate("MainWindow", "Pomnilniski naslov", nullptr));

View file

@ -24,7 +24,7 @@
<x>10</x>
<y>20</y>
<width>191</width>
<height>301</height>
<height>231</height>
</rect>
</property>
<property name="title">
@ -43,24 +43,11 @@
<string>labelA</string>
</property>
</widget>
<widget class="QLabel" name="labelL">
<property name="geometry">
<rect>
<x>20</x>
<y>240</y>
<width>58</width>
<height>15</height>
</rect>
</property>
<property name="text">
<string>labelL</string>
</property>
</widget>
<widget class="QLabel" name="labelB">
<property name="geometry">
<rect>
<x>20</x>
<y>120</y>
<y>80</y>
<width>58</width>
<height>15</height>
</rect>
@ -73,7 +60,7 @@
<property name="geometry">
<rect>
<x>20</x>
<y>160</y>
<y>120</y>
<width>58</width>
<height>15</height>
</rect>
@ -86,7 +73,7 @@
<property name="geometry">
<rect>
<x>20</x>
<y>200</y>
<y>160</y>
<width>58</width>
<height>15</height>
</rect>
@ -95,24 +82,11 @@
<string>labelT</string>
</property>
</widget>
<widget class="QLabel" name="labelPC">
<property name="geometry">
<rect>
<x>20</x>
<y>80</y>
<width>91</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>labelPC</string>
</property>
</widget>
<widget class="QLabel" name="labelF">
<property name="geometry">
<rect>
<x>20</x>
<y>280</y>
<y>200</y>
<width>58</width>
<height>15</height>
</rect>
@ -134,24 +108,11 @@
<string>A</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>20</x>
<y>60</y>
<width>58</width>
<height>15</height>
</rect>
</property>
<property name="text">
<string>PC</string>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>20</x>
<y>100</y>
<y>60</y>
<width>58</width>
<height>15</height>
</rect>
@ -164,7 +125,7 @@
<property name="geometry">
<rect>
<x>20</x>
<y>140</y>
<y>100</y>
<width>58</width>
<height>15</height>
</rect>
@ -177,7 +138,7 @@
<property name="geometry">
<rect>
<x>20</x>
<y>180</y>
<y>140</y>
<width>58</width>
<height>15</height>
</rect>
@ -186,24 +147,11 @@
<string>T</string>
</property>
</widget>
<widget class="QLabel" name="label_7">
<property name="geometry">
<rect>
<x>20</x>
<y>220</y>
<width>58</width>
<height>15</height>
</rect>
</property>
<property name="text">
<string>L</string>
</property>
</widget>
<widget class="QLabel" name="label_8">
<property name="geometry">
<rect>
<x>20</x>
<y>260</y>
<y>180</y>
<width>58</width>
<height>16</height>
</rect>
@ -217,7 +165,7 @@
<property name="geometry">
<rect>
<x>10</x>
<y>330</y>
<y>260</y>
<width>161</width>
<height>80</height>
</rect>
@ -255,10 +203,10 @@
<widget class="QGroupBox" name="groupBox_3">
<property name="geometry">
<rect>
<x>20</x>
<y>460</y>
<x>10</x>
<y>350</y>
<width>161</width>
<height>80</height>
<height>151</height>
</rect>
</property>
<property name="title">
@ -267,8 +215,8 @@
<widget class="QLabel" name="labelSW">
<property name="geometry">
<rect>
<x>10</x>
<y>50</y>
<x>20</x>
<y>130</y>
<width>58</width>
<height>15</height>
</rect>
@ -280,8 +228,8 @@
<widget class="QLabel" name="label_11">
<property name="geometry">
<rect>
<x>10</x>
<y>30</y>
<x>20</x>
<y>110</y>
<width>58</width>
<height>15</height>
</rect>
@ -290,6 +238,58 @@
<string>SW</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>58</width>
<height>15</height>
</rect>
</property>
<property name="text">
<string>PC</string>
</property>
</widget>
<widget class="QLabel" name="labelPC">
<property name="geometry">
<rect>
<x>20</x>
<y>50</y>
<width>91</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>labelPC</string>
</property>
</widget>
<widget class="QLabel" name="label_7">
<property name="geometry">
<rect>
<x>20</x>
<y>70</y>
<width>58</width>
<height>15</height>
</rect>
</property>
<property name="text">
<string>L</string>
</property>
</widget>
<widget class="QLabel" name="labelL">
<property name="geometry">
<rect>
<x>20</x>
<y>90</y>
<width>58</width>
<height>15</height>
</rect>
</property>
<property name="text">
<string>labelL</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">