From 5c6d1b22f6f9eef5f0fe76e5bb6c2bce5b3e5cd2 Mon Sep 17 00:00:00 2001 From: "aljazbrodar." Date: Thu, 4 Dec 2025 14:49:32 +0100 Subject: [PATCH] some progress --- ass2/simulator/.qtcreator/CMakeLists.txt.user | 12 ++--- .../index/machine.cpp.FD5DF53B10242751.idx | Bin 3832 -> 4328 bytes .../index/machine.h.D09D611E77E172BE.idx | Bin 2940 -> 3262 bytes .../index/opcode.h.2460D9A23E2279B0.idx | Bin 358 -> 3678 bytes .../Testing/Temporary/LastTest.log | 4 +- ass2/simulator/machine.cpp | 50 ++++++++++++++++-- ass2/simulator/machine.h | 12 ++++- 7 files changed, 65 insertions(+), 13 deletions(-) diff --git a/ass2/simulator/.qtcreator/CMakeLists.txt.user b/ass2/simulator/.qtcreator/CMakeLists.txt.user index 282a626..b3e0eab 100644 --- a/ass2/simulator/.qtcreator/CMakeLists.txt.user +++ b/ass2/simulator/.qtcreator/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -105,16 +105,16 @@ 2 false - -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} + -DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} -DCMAKE_BUILD_TYPE:STRING=Debug +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_COLOR_DIAGNOSTICS:BOOL=ON -DCMAKE_GENERATOR:STRING=Ninja +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DQT_MAINTENANCE_TOOL:FILEPATH=/home/aljaz/Qt/MaintenanceTool -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} 0 /home/aljaz/Desktop/spo/ass2/simulator/build/Desktop_Qt_6_10_1-Debug diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/machine.cpp.FD5DF53B10242751.idx b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/machine.cpp.FD5DF53B10242751.idx index 2053dbcf4053f82190489bbce278e4d6b54112e4..d0731ffe2db01b790283f800aff77d9e03867c72 100644 GIT binary patch literal 4328 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 XYxJ?cM}1AcdY98(T2j^K&kOt;Dj%Vt literal 3832 zcmb_ee{36f6+gR9V#i-QXUD(tt4W$=wUeCB{yIsEo2*Nm9}7vGCUw_E4e~DMi*t*8 z=iQx`WPj|R3ANR#?H{H=wMBrSg$jncN@GI%A*4w#K?zJMtpKf4$I!+QDiVUC29k^A~Ug;7c|a7QIrS%R80|oSPcvP!!YpG zI3+7+gKG!-)BU|nPLzskOjasV%*bpiJ(Nt&q=r(X>9J$UL~3Ft8C(kurqi4TFpEV^ zNT-8APLgDe(}ZBhS|}7MolDHjji#q2hD*};v5AT>J3W;i867@0UeX<(7#SZ;9VPm7 zVs3OOH8YoxF33ge|3oMs=f_s`B5!4k;F0g7rW;s>GtSaVcLN*Hum(6n!ihho4u5yYbN?ArO=l~S6bYvm{zZsFsO0uenyb54BSsCPVtK2#q z-lbBP z%Rpe2Rd+YVD1s^%74V-Cl|f?%{f7eQ#6@9E;Eg5DaZ;9reU{%|;V1<;X9i&=y1SzX zC}xc^V*bxv8HTP(Z@b9cFCg%{EJ{L{FBEnifxP;|(MUMTW_cc_xZK~yK>wQ&X}0^c z9WRRaB$0>+~S`u?YoMnw% z+@sSn!c!tIgqJ_(F=Ib{K8NIF#iNlMz7r3_7YJoxa)dQrC}W||x z&E8PMf+ZL;es0rI9l)9c@^qVLuGWx5nroaCpPn!o=3dfyse~hs) zZpvDEv(cw+-m!0dU!~1)P z-*{@T>Do)Q`2eVgd_yfU*2M;hdT@^=JazT8H)(Sps8g;~V+=d6kErp6J+yF{+4Pyi zpsu!6(=o5bYbWZHS2hbjTm1M#+WZAj&pYS+v6wAZj{Njeurn_F_7mEC2-K6#NpCD- zi_qls8=Wn$WM6piueA9fsAK+EYploJ(@4}n=8{^3_xn3<-)>zrZ`SNV*lM-fNK6Pf z`I`bHeT2K|ZWrO|;=(oj%`?bBD&T6m+$itqvZ0T&4X;fE{_)siwG zJn9>5CcGg$<{L9en~jSQHQA+yBb^_B%Z>H zao?c}ru`O#d)>V)m3R)h54BX{8TJjgSK^uSO|=uBKPY^BDLH-qi)Msv7F!j;MR>1& zZ<(5}_&2i8uv*gO!SsGQNQ}B}ZXKP!u|BWUN?ToI8{rmzOZhCq49%2jy<$^-{HJ%n z_a#6&VL4Gt%5PbHee3*<-#iX%8?$@n&6SgvSFUF*9^B{bE3@sv1I_^#$i`|s86&K0EDOOr&|fY8$bQ5xg;Jl{UQ zpAbzD;jBLB+Cro z)Ofb%)VX)AZ+&zDARYT0g%gNFToPQt>BeMmC{W?Jm2ASa~pVA%o;_ISi7^>k1G{ z>a%Y>Y`YWrpaufB*zIH+n6V&(K|fl#0)&=p_;4+gpeL66H@@7^0}Hnsf=U{3I= diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/machine.h.D09D611E77E172BE.idx b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/machine.h.D09D611E77E172BE.idx index 86a7f4c32c481d8a48e9abbe19cb51d6c7dcaa9b..f8413d59e92c218364dea023edf604738fee4c55 100644 GIT binary patch literal 3262 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 O@2PVYumWX_{Qd%T89R6Y diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/opcode.h.2460D9A23E2279B0.idx b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/.qtc_clangd/.cache/clangd/index/opcode.h.2460D9A23E2279B0.idx index de570002c7d399a0ed68f7949a971568d5292cdb..e12b48146b8a9d59c6498171d507a9e50e45baaa 100644 GIT binary patch literal 3678 zcmYM13v89;9f#k(m0oBmy}h(A{k~qHErnhV^g>Iag|?@M9z67N&Hk!0BO`oVcYM0*)Jpceuq5I z=>-D+2ZDZ|Z+(&wP2K*TgFPc%_Xr`<@kB<3x3ov$C+0_k*J~c1nV@KB^@^rIb3;%x zwXJQpZEY<|@gw{2RfVTmUd2MRJ z`0xbqgz$v%bc#TGNUU8KFptknP_(uM*NV2FXxqAJsJrKXFSWHI=oP`WZ6atsZK%cX z3kUAL1Vsp6I~2NCgu)GYV8i%gp|B5+9}nIa4w+{ICXA<3*w3-95${;nh>u_2B*I=1 z#-|D67lbD$Hh9J6EdxEZ9*?JYXt2lAHPF|!%j4~d^p6Z}^+dJ~dAcHza!+K-;I@IT zk)dJFko|VcdPQV(@Iha!5IfpR-tFzL7fRO77xi_z&aorn?*5MN&AfAb!;?3lv!Unf z`K}%6j!!zD8NYrhM#&iH1fAg8p>7DLO@7**8mr`T=z3l6*rC3Bto;6@_z#nnyazg7 z$2)eYuWw7qc>fQ{O37u=EA)yiJJcH=ogR)m(VnGbB6NyQaqLik?tb#0cXnNJl+1*7 zwd>fSe)4wBQ{y*>vXzX3o~37H+oAq;)v=Giz9b8jTnJsFOB_4YDeFf*IJB>&NXf;} z6}rN)L){)}^Y*^--C`wYL8t1}Y&+D=r+;*2;0Fgvlq`TQ(nXFP>Wh2sf3NSz?NTLE zp)+)bV~0BY#Q2Q^PqkJm=|Jb{JjV|8;ak^B&-&adB@3Y!>V>Wy>h{hPZwK@C*C<&H zU8`$dJJgB6mwuPNaoVfo9Ox{a<=UZsJn+QSPm0EymCS=K)P-4gsIS(nZg~D*hwoJ~ z2RdKpyLPCHPrrWW`B!cSl+@7KI@_^By=w1N{~O<&X^)ljgs6{>iB7a5;_V;BsQMY( zp4;^2!w-2ol&r+ZSLat8EFJu}-5^{IkKC(lld_9|HnU8c(% zJJd(79@y^pb@eIfLeJCl96Qtx|NDo1FMh3eDp?L)rK?;!)G3!$|I3p(dzJJ+m+NxJ z4)w_|lj^?rw;N+hE`hGpm5v?i<9W`l$0h^&m8^kYu9rJ@s9%oyOWj0K%8!*?0liYM zbnQ@2M1ORve7)Ht{vLA?}(D|&`CPUu|r*WJ%4o3soy@WE0sz0bcuH*vf zMS4+=9qMNuJUMZts`8ggWy|k({tigC5xbob#aaz>fPt})V<#weoM(L z=v#R*?6ww%*BfHN+v)j>txps^~G5SN1uM+iwjCB z=(&2XV~2Xz?{gb>#!o>GW^Lc2|9@WHfY~j&to$?;gAF*MG`O`>T?% z(1|)R+YYs=+7T0u8oQ!o8g!=4bnQ?-u>akH;<_E5DVYzwKrhI$Lw)4apPzgod(Jf_ zXF|``vt2vX&;E1A=_^N{g z(2MnA*ADfu)-Nh5eIjO>fK8W(nIvG-BVwiq*mQ`P2?93#A!d4jO?QZy9AMKMVx|VzbcUFT0XBUh zW?FzvSBRMuVAB&~rUck@gqR5dHvJ%GI)F_#h?xvv(+gsz0@!qdn27*3eIRBUfK3;O znFL_d17fBC*mQuH2>>?tpO~i~*xY?$o_t_)?}>Tpfz6#K=7|S3_nnxh9oXD;VxDwh zbI*x+%7M)tC*}zUHusyDryJPZZDO8mU~{jDd8&cUohIgq1~&JZn5P-o++|{(WMFfT miFt~F%^fBd!#x9C=C563cvB<+ud;q{r#JPZKYob+%KR52f)AqvxFBCYvAEbszc@3uG$*knzeqnHtXnU+pnyD$89>)m z<|a7+o#N2`IeX{#0|D$zKqs>>voZ642?kEEGZ|S}Rd#5uP&nvxO^k_=iGi7kgNcuY zjfIVifdj07p(r)2I2g$6%nCog(IU`3=^*E-hzZ005cEV6FfF diff --git a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/Testing/Temporary/LastTest.log b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/Testing/Temporary/LastTest.log index b42501f..a10933d 100644 --- a/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/Testing/Temporary/LastTest.log +++ b/ass2/simulator/build/Desktop_Qt_6_10_1-Debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Nov 27 14:24 CET +Start testing: Dec 04 13:01 CET ---------------------------------------------------------- -End testing: Nov 27 14:24 CET +End testing: Dec 04 13:01 CET diff --git a/ass2/simulator/machine.cpp b/ass2/simulator/machine.cpp index c316ba3..f7d473b 100644 --- a/ass2/simulator/machine.cpp +++ b/ass2/simulator/machine.cpp @@ -1,5 +1,6 @@ #include "machine.h" #include "device.h" +#include "opcode.h" #include using namespace std; @@ -95,15 +96,55 @@ void Machine::setDevice(int num, Device* device) { void Machine::notImplemented(string mnemonic) { - throw std::runtime_error("Instruction: " + mnemonic + " is not yet implemented."); + std::cerr << "Instruction: " << mnemonic << " is not yet implemented." << endl; } void Machine::invalidOpcode(int opcode) { - throw std::runtime_error("Invalid opcode: " + to_string(opcode)); + std::cerr << "Invalid opcode: " << to_string(opcode) << endl; } void Machine::invalidAddressing() { - throw std::runtime_error("Invalid addressing used."); + std::cerr << "Invalid addressing used." << endl; +} + +// Nalozi in vrni en bajt z naslova PC +// in ga poveca za 1 +int Machine::fetch() { + int address = getReg(8); + setReg(8, address + 1); + return readByte(address); +} + + +void Machine::execute() { + int opcode = fetch(); + int operand; + switch (opcode) { + // Format 1 + case Opcode::FIX: + case Opcode::FLOAT: + case Opcode::NORM: + execF1(opcode); + break; + + // Format 2 + case Opcode::ADDR: + case Opcode::CLEAR: + case Opcode::DIVR: + case Opcode::MULR: + case Opcode::RMO: + case Opcode::SHIFTL: + case Opcode::SHIFTR: + case Opcode::SUBR: + operand = fetch(); + execF2(opcode, operand); + break; + + // Format 3/4 (SIC/XE) + default: + decode_F3_F4(opcode); + break; + } } @@ -113,3 +154,6 @@ void Machine::invalidAddressing() { + + + diff --git a/ass2/simulator/machine.h b/ass2/simulator/machine.h index 5c86b08..869170f 100644 --- a/ass2/simulator/machine.h +++ b/ass2/simulator/machine.h @@ -53,11 +53,19 @@ public: void notImplemented(string mnemonic); - // Izvajalnik je naletel na operacijsko kodo ukaza, ki ni veljavna. void invalidOpcode(int opcode); - // Neveljavno naslavljanje. void invalidAddressing(); + + int fetch(); + + void execute(); + + bool execF1(int opcode); + + bool execF2(int opcode, int operand); + + bool execSICF3F4(int opcode, int ni, int operand); }; #endif