From 74f256efb2d90ae0bc878111d497ee146327bb51 Mon Sep 17 00:00:00 2001 From: Martin Date: Mon, 13 Oct 2025 12:09:15 +0200 Subject: [PATCH] Disammbler und Simulator angepasst. Arrays begonnen (defunct) --- STCompiler.Common/Bytecode.cs | 4 + STCompiler.Common/VarType.cs | 21 +- .../bin/Debug/net8.0/STCompiler.Common.dll | Bin 8704 -> 9728 bytes .../bin/Debug/net8.0/STCompiler.Common.pdb | Bin 10828 -> 11132 bytes .../net8.0/STCompiler.Common.AssemblyInfo.cs | 4 +- ...STCompiler.Common.AssemblyInfoInputs.cache | 2 +- .../obj/Debug/net8.0/STCompiler.Common.dll | Bin 8704 -> 9728 bytes .../obj/Debug/net8.0/STCompiler.Common.pdb | Bin 10828 -> 11132 bytes .../Debug/net8.0/ref/STCompiler.Common.dll | Bin 7168 -> 7680 bytes .../Debug/net8.0/refint/STCompiler.Common.dll | Bin 7168 -> 7680 bytes STCompiler.Compiler/Ast.cs | 15 +- STCompiler.Compiler/Lexer.cs | 31 ++- STCompiler.Compiler/Parser.cs | 161 +++++++++++++--- STCompiler.Compiler/Program.cs | 136 +++++++++++-- .../bin/Debug/net8.0/STCompiler.Common.dll | Bin 8704 -> 9728 bytes .../bin/Debug/net8.0/STCompiler.Common.pdb | Bin 10828 -> 11132 bytes .../bin/Debug/net8.0/STCompiler.Compiler.dll | Bin 27136 -> 31744 bytes .../bin/Debug/net8.0/STCompiler.Compiler.pdb | Bin 18936 -> 20848 bytes STCompiler.Compiler/input.st | 8 + .../STCompiler.Compiler.AssemblyInfo.cs | 2 +- ...Compiler.Compiler.AssemblyInfoInputs.cache | 2 +- ...er.Compiler.csproj.AssemblyReference.cache | Bin 458 -> 458 bytes .../obj/Debug/net8.0/STCompiler.Compiler.dll | Bin 27136 -> 31744 bytes .../obj/Debug/net8.0/STCompiler.Compiler.pdb | Bin 18936 -> 20848 bytes .../Debug/net8.0/ref/STCompiler.Compiler.dll | Bin 9216 -> 9728 bytes .../net8.0/refint/STCompiler.Compiler.dll | Bin 9216 -> 9728 bytes STCompiler.Disassembler/Program.cs | 29 ++- .../bin/Debug/net8.0/STCompiler.Common.dll | Bin 8704 -> 9728 bytes .../bin/Debug/net8.0/STCompiler.Common.pdb | Bin 10828 -> 11132 bytes .../Debug/net8.0/STCompiler.Disassembler.dll | Bin 9216 -> 9728 bytes .../Debug/net8.0/STCompiler.Disassembler.pdb | Bin 12104 -> 12336 bytes .../STCompiler.Disassembler.AssemblyInfo.cs | 4 +- ...iler.Disassembler.AssemblyInfoInputs.cache | 2 +- ...isassembler.csproj.AssemblyReference.cache | Bin 458 -> 458 bytes .../Debug/net8.0/STCompiler.Disassembler.dll | Bin 9216 -> 9728 bytes .../Debug/net8.0/STCompiler.Disassembler.pdb | Bin 12104 -> 12336 bytes .../net8.0/ref/STCompiler.Disassembler.dll | Bin 6144 -> 6144 bytes .../net8.0/refint/STCompiler.Disassembler.dll | Bin 6144 -> 6144 bytes STCompiler.Simulator/Program.cs | 182 +++++++++++++++++- .../bin/Debug/net8.0/STCompiler.Common.dll | Bin 8704 -> 9728 bytes .../bin/Debug/net8.0/STCompiler.Common.pdb | Bin 10828 -> 11132 bytes .../bin/Debug/net8.0/STCompiler.Simulator.dll | Bin 13312 -> 16384 bytes .../bin/Debug/net8.0/STCompiler.Simulator.pdb | Bin 12820 -> 14316 bytes .../STCompiler.Simulator.AssemblyInfo.cs | 4 +- ...ompiler.Simulator.AssemblyInfoInputs.cache | 2 +- ...r.Simulator.csproj.AssemblyReference.cache | Bin 458 -> 458 bytes .../obj/Debug/net8.0/STCompiler.Simulator.dll | Bin 13312 -> 16384 bytes .../obj/Debug/net8.0/STCompiler.Simulator.pdb | Bin 12820 -> 14316 bytes .../Debug/net8.0/ref/STCompiler.Simulator.dll | Bin 6656 -> 6656 bytes .../net8.0/refint/STCompiler.Simulator.dll | Bin 6656 -> 6656 bytes 50 files changed, 534 insertions(+), 75 deletions(-) diff --git a/STCompiler.Common/Bytecode.cs b/STCompiler.Common/Bytecode.cs index 993aeb1..830ce0e 100644 --- a/STCompiler.Common/Bytecode.cs +++ b/STCompiler.Common/Bytecode.cs @@ -40,6 +40,9 @@ public static class Bytecode { public const byte JZ = 0x70; public const byte JMP = 0x71; + // Array operations + public const byte ARRAY_BOUNDS_CHECK = 0xE0; + public const byte HALT = 0xF0; } @@ -63,6 +66,7 @@ public static class Bytecode { { OpCodes.LT_U, "LT_U" }, { OpCodes.GT_U, "GT_U" }, { OpCodes.LE_U, "LE_U" }, { OpCodes.GE_U, "GE_U" }, { OpCodes.EQ_U, "EQ_U" }, { OpCodes.NEQ_U, "NEQ_U" }, { OpCodes.LT_F, "LT_F" }, { OpCodes.GT_F, "GT_F" }, { OpCodes.LE_F, "LE_F" }, { OpCodes.GE_F, "GE_F" }, { OpCodes.EQ_F, "EQ_F" }, { OpCodes.NEQ_F, "NEQ_F" }, { OpCodes.JZ, "JZ" }, { OpCodes.JMP, "JMP" }, + { OpCodes.ARRAY_BOUNDS_CHECK, "ARRAY_BOUNDS_CHECK" }, { OpCodes.HALT, "HALT" } }; diff --git a/STCompiler.Common/VarType.cs b/STCompiler.Common/VarType.cs index e2d1b8c..15dfa24 100644 --- a/STCompiler.Common/VarType.cs +++ b/STCompiler.Common/VarType.cs @@ -18,5 +18,24 @@ public enum VarType { TIME_OF_DAY = 18, // Tageszeit (TOD) -> TimeSpan / DateTime TOD = TIME_OF_DAY, DATE_AND_TIME = 19,// Datum + Uhrzeit (DT) -> DateTime - DT = DATE_AND_TIME + DT = DATE_AND_TIME, + // Array marker - actual array types use ArrayType class + ARRAY = 20 +} + +// Represents an array type in structured text +public class ArrayType { + public VarType ElementType { get; set; } // Type of array elements + public int Start { get; set; } // Start index + public int End { get; set; } // End index + public int Length => End - Start + 1; // Number of elements + + public ArrayType(VarType elementType, int start, int end) { + ElementType = elementType; + Start = start; + End = end; + if (end < start) throw new System.ArgumentException("Array end index must be greater than or equal to start index"); + } + + public override string ToString() => $"ARRAY [{Start}..{End}] OF {ElementType}"; } diff --git a/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.dll index ea9b04b3d44abbe0f37aa1f839383d744c5a62c7..f181d402b828eec1ac139fd9db7252d2254c688d 100644 GIT binary patch literal 9728 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 diff --git a/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.pdb b/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.pdb index 8486650aa59c9b41c284e3e24e16c2305b1712d3..ba33997a7716ed81407a5b08a68b3e2b3bd487e2 100644 GIT binary patch delta 708 zcmX>T@+WM9N__?c1A}rvN)nJ_cml)?j6i-J149ZE0|N_4F1Vy9GcUauB%c8j3k_z- z0kRW7^6sIYE#LPepQV4Pg`^1C7jLZ|S$_s*2azkZU zfi&A>Rz~}JW(HRcW(FT14hG^VAWj703?R-2;xZs!rojj_i4klf1A`q z$v{2`fC2zSDrf+M7#JjGK(8<`C;%N}rJ)XV@&`tBpsvYXjC^bfjBE^xH73tu+^kS~ zIi}?H;m1!_1blg9+2QjcaPqGNVS_66yegCChJCAMOwMKUQdnXB_w*@~IZ8J!%y*e* zFh`2z;4*<@y$X}U_AFWE_0Xko@^z-43Mz+`x*Gg4!YaDfu-BD8EnFV)BkaMUIoXG1 zA7eFcN;{4hB9ZU{G>_2mvOb=YYOWW>Dg0U}OqsVv1k``d>>!3#b_YyRuehB=H33@jjaa7j^SUV1T*$*=$>78=a3 z1jtSR$-9Sox&UbwCI$u%4ItksCm&?k^tTIcx-^EnED5WTK2`EdhH28`UqE4oa9Jh} zPA&!ppmqi!1_mPrRv;r9h?#*HBq$2RkwDA`<%7gP7-&A2W}Ns?UJ#@hCIE6J>tsPj zdoxC$iy6U+7#QrpDp-K3K$;mCmV&eZ0ffiMpr8TL&&*(^G1-nu4#=LI#I#vKB=^4E zHJg@hsoPaI`!1gp;3YJ`Ki?msnPo3zns4VKJT)N}=74jAbH=Phzb8^c4 ay@%&*-obK6mCfIV9Jv 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 diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.pdb b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.pdb index 8486650aa59c9b41c284e3e24e16c2305b1712d3..ba33997a7716ed81407a5b08a68b3e2b3bd487e2 100644 GIT binary patch delta 708 zcmX>T@+WM9N__?c1A}rvN)nJ_cml)?j6i-J149ZE0|N_4F1Vy9GcUauB%c8j3k_z- z0kRW7^6sIYE#LPepQV4Pg`^1C7jLZ|S$_s*2azkZU zfi&A>Rz~}JW(HRcW(FT14hG^VAWj703?R-2;xZs!rojj_i4klf1A`q z$v{2`fC2zSDrf+M7#JjGK(8<`C;%N}rJ)XV@&`tBpsvYXjC^bfjBE^xH73tu+^kS~ zIi}?H;m1!_1blg9+2QjcaPqGNVS_66yegCChJCAMOwMKUQdnXB_w*@~IZ8J!%y*e* zFh`2z;4*<@y$X}U_AFWE_0Xko@^z-43Mz+`x*Gg4!YaDfu-BD8EnFV)BkaMUIoXG1 zA7eFcN;{4hB9ZU{G>_2mvOb=YYOWW>Dg0U}OqsVv1k``d>>!3#b_YyRuehB=H33@jjaa7j^SUV1T*$*=$>78=a3 z1jtSR$-9Sox&UbwCI$u%4ItksCm&?k^tTIcx-^EnED5WTK2`EdhH28`UqE4oa9Jh} zPA&!ppmqi!1_mPrRv;r9h?#*HBq$2RkwDA`<%7gP7-&A2W}Ns?UJ#@hCIE6J>tsPj zdoxC$iy6U+7#QrpDp-K3K$;mCmV&eZ0ffiMpr8TL&&*(^G1-nu4#=LI#I#vKB=^4E zHJg@hsoPaI`!1gp;3YJ`Ki?msnPo3zns4VKJT)N}=74jAbH=Phzb8^c4 ay@%&*-obK6mCb6|S5VP_@dbkMg#qIeMe%>WZAi4u{hjao?m73Kw&&j4 z^l9np8`qR{-ZkRKqQpc~VZ1!p!F~UW)o1>ksj7FWWu*a8cXr+bTEB-+KQ8*YyYN z{W1m(JhFMs;%32%mKtC~9w0nuRi?=)O{KGdaaREQ*v7q#o0HugiKRVe)cg^E&34?p zW-MlG&OdJEy!z>EbS78sfj>~LGmZ8$fc3Y-KM z0V&f*JDC%i9cIAL#>v_yHpAcZ1icPgZ6iE~?L3^$={hLU%2dxP+rd=(1G?U0Y*l;I z1L{fYvwECt9aZ2-nZwn4U*dq*Y~xo}kcS=mfrL}JQv6tB?X_zeo422v$vphL!r48@ zeKVMObl)f1a}2YqIBpV;Rf{qFFapr} zG4(>rc!tK;s*kF_siV}0`iPENqn4=?)N}L*0gcD1`_%JTPqn6>$4Tb&mT|ngSu0!B z7sb?{QeRiMskZh!q;ZbM1?q`fDN@VTD)nM@nYv27+L%h;qR9MXR9@8i+a9#tM**0_Ng1yE;V(5HmlUt>euR*>JIe-^)vNTwLw4YOto6A zQm3i4>KyG^ub!!f)#+-T8ck`}XEbS6_tT~tvjlHJuXQq4*g$qo;Xy7>Ybf(QW|hmo z*=8$rRMzATi|0tsgowam{5jfuh6a7Lf^q_ z^gX;mKg64KC*G!?;$6B6+vr}rPrt!-x(^@G1K2@-#>ez`d_oW5GYa{F+OnJaWDiZ{ z$X9Iq@-;1xZ)u@?PmAOSS}gnN3GyQ?m7nOT@(Zny-)N;Aq^HTBv|9e6HFB6v7vT>+ zOFXneyynN3EZQR3biNFyi)92|l9D_&F$vIRl279@l6J{4G9FP>SmnIe&y{lIV-Y=Ug`R<(v<`ddSvWwOwZ4ef;Ub)1)u9Jv))HLCv1zrBrY7)9H>EA? zRA%kc7-A|*#0>Lti2_@!dN${K=g_oeyvLryD`ntzZL>9xMbp=z7N0;_jD6HXHs5x7 z;AzA|4Zikr+4C|84&}VNuQSg(IGOKr<_Bx%&aGY0Hmz~qoaxPNb+cyFoz*{W#P3q3 zb_mJ;+o#EqpXIe{$Rm7(w{r3#M2n!0*zn_mtYmQFeYL$Cb1TyQ{XbH)OuK*Orz`> jVb2izRH9wu2&+-{uF9lFUzN=>nZIoD3jOQVTaon-(y{?} delta 1973 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 delta 1973 zcmZA2e{54#6bJC{d42D(v01vYEpwZZZOF#2QM$UVKu8A|L10725JU;xx(xzRe#`{W z*b2lDkstGsNsuVQf(t=|6b(Tlivfd#pdm!j5HbicQ;DJh1SI13p3Q%JFZXlLIrrYz z*Y>tAIVoAQeN#!-n#*ru;OIrkunY+T0T$BwixcWP4$SlS%?9dCVKLC->nI+YnFKPK zpXET2S8R>(7D)ZzsGp@MTfjRkqb1L~EM-!Va;+7!2Xmvqnuh@4MXS9zZh0c;0;R73yV)PL88@`ATKZz!YO`u?2EYW52}Y7V{~~Uut4*4yN+#BS1O>+>=V=vA{5k&0%|v%?z2Ec`plq z1cnS0Owlx6*6#0JJmXtuySS*Xx7zF>*vtEI(WR9W)@`4Q6TS(YQ>b3FOnggSrIl`t zC+PgmYNutc`H4M(jjf>SE)NVY=Yo=Sq9QB}9K2;BhsV6?rE~Oq<|4@Hc@2aAUvo%gv z3)SK3BDGO%Q&*@P)V1ms^&Rz`dP@C1p9F(*PoBtvW+}T3w*V z)TLCglICKq(JRf^oNy4wR{j8&U^`uox9JM(pzXXN2WzmCzKUHmiQRM~-lLnahrWfq zbUV7}4(z8p(M@;b0NsOwvHLRqFiR{tM{GJ*TsmLU=<_m|E>1`$ySVu25(!8dn&DU#$UvD?U?^Xx0)?ojr5J|_ zjOOwRRHBnk#7A^0j?$SpMH{rfkWR%i+@-7WK=v_yAa?S9h@=gcJQqin-@s4E|czxO3IcCoPpDA9?(5+rW&W5}jmg~3N zL6)25bF%`L>(~&#<7MY|m$x*Bto)&oA-Sx9~#?b01f;H6w&7 zwD1g}m3f3&98C!FtVE2Fv5NEf%i)Y_)?3&@sNvi&$0J^%aD95T{~new Token(TokType.TO,s,startLine), "BY"=>new Token(TokType.BY,s,startLine), "END_FOR"=>new Token(TokType.END_FOR,s,startLine), + "ARRAY"=>new Token(TokType.ARRAY,s,startLine), + "OF"=>new Token(TokType.OF,s,startLine), _=>new Token(TokType.IDENT,s,startLine) }; } @@ -92,16 +95,23 @@ public class StLexer { int startLine = currentLine; bool isFloat = false; - // Ganze Zahl vor dem Dezimalpunkt + // Ganze Zahl vor dem Dezimalpunkt oder Bereichsoperator while(char.IsDigit(Peek())) sb.Append(Next()); - // Optional: Dezimalpunkt und Nachkommastellen + // Prüfe auf Bereichsoperator (..) oder Dezimalpunkt (.) if (Peek() == '.') { - isFloat = true; - sb.Append(Next()); - while(char.IsDigit(Peek())) + if (Peek2() == '.') { + // Es ist ein Bereichsoperator (..) + // Don't consume the dots, just return the number + return new Token(TokType.INT, sb.ToString(), startLine); + } else { + // Es ist ein Dezimalpunkt + isFloat = true; sb.Append(Next()); + while(char.IsDigit(Peek())) + sb.Append(Next()); + } } // Optional: Exponentialdarstellung @@ -150,10 +160,21 @@ public class StLexer { if (c == ';') return new Token(TokType.SEMI,";",tokenLine); if (c == '(') return new Token(TokType.LPAREN,"(",tokenLine); if (c == ')') return new Token(TokType.RPAREN,")",tokenLine); + if (c == '[') return new Token(TokType.LBRACKET,"[",tokenLine); + if (c == ']') return new Token(TokType.RBRACKET,"]",tokenLine); if (c == '+') return new Token(TokType.PLUS,"+",tokenLine); if (c == '-') return new Token(TokType.MINUS,"-",tokenLine); if (c == '*') return new Token(TokType.MUL,"*",tokenLine); if (c == '/') return new Token(TokType.DIV,"/",tokenLine); + if (c == '.') { + if (Peek() == '.') { + Next(); + return new Token(TokType.DOTS,"..",tokenLine); + } + // Put back the dot for floating point numbers + i--; + return NextToken(); + } AddError($"Unexpected character '{c}'"); return new Token(TokType.EOF,"",tokenLine); // Skip invalid character diff --git a/STCompiler.Compiler/Parser.cs b/STCompiler.Compiler/Parser.cs index ea715e8..411d3b2 100644 --- a/STCompiler.Compiler/Parser.cs +++ b/STCompiler.Compiler/Parser.cs @@ -14,6 +14,7 @@ public class StParser { StLexer lex; Token cur; Dictionary syms = new(); + public Dictionary arrayTypes = new(); // Add dictionary for array types public List Errors => lex.Errors; public bool HasErrors => Errors.Count > 0; @@ -61,42 +62,96 @@ public class StParser { return p; } + VarType? ParseType(string varName) { + if (cur.Type == TokType.ARRAY) { + Next(); // Skip ARRAY + if (!Expect(TokType.LBRACKET)) return null; + var start = ParseExpr(); + if (start == null || start is not IntExpr startInt) { + AddError("Array start index must be an integer constant"); + return null; + } + if (!Expect(TokType.DOTS)) return null; + var end = ParseExpr(); + if (end == null || end is not IntExpr endInt) { + AddError("Array end index must be an integer constant"); + return null; + } + if (!Expect(TokType.RBRACKET)) return null; + if (!Expect(TokType.OF)) return null; + if (cur.Type != TokType.IDENT) { + AddError("Expected element type name after OF"); + return null; + } + string elemTypeName = cur.Text.ToLowerInvariant(); + Next(); + + VarType? elementType = elemTypeName switch { + "bool" => VarType.BOOL, + "byte" => VarType.BYTE, + "word" => VarType.WORD, + "dword" => VarType.DWORD, + "lword" => VarType.LWORD, + "sint" => VarType.SINT, + "int" => VarType.INT, + "dint" => VarType.DINT, + "lint" => VarType.LINT, + "usint" => VarType.USINT, + "uint" => VarType.UINT, + "udint" => VarType.UDINT, + "ulint" => VarType.ULINT, + "real" => VarType.REAL, + "lreal" => VarType.LREAL, + _ => null + }; + + if (elementType == null) { + AddError($"Unknown element type '{elemTypeName}'"); + return null; + } + + arrayTypes[varName] = new ArrayType(elementType.Value, (int)startInt.Value, (int)endInt.Value); + return VarType.ARRAY; + } + else if (cur.Type == TokType.IDENT) { + string typeName = cur.Text.ToLowerInvariant(); + Next(); + + return typeName switch { + "bool" => VarType.BOOL, + "byte" => VarType.BYTE, + "word" => VarType.WORD, + "dword" => VarType.DWORD, + "lword" => VarType.LWORD, + "sint" => VarType.SINT, + "int" => VarType.INT, + "dint" => VarType.DINT, + "lint" => VarType.LINT, + "usint" => VarType.USINT, + "uint" => VarType.UINT, + "udint" => VarType.UDINT, + "ulint" => VarType.ULINT, + "real" => VarType.REAL, + "lreal" => VarType.LREAL, + _ => null + }; + } + + AddError("Expected type name or ARRAY"); + return null; + } + VarDecl? ParseVarDecl(){ if (cur.Type != TokType.IDENT) { AddError("Expected identifier for variable declaration"); return null; } - string name=cur.Text.ToUpperInvariant(); // Variablennamen in Großbuchstaben + string name = cur.Text.ToUpperInvariant(); // Variablennamen in Großbuchstaben Next(); - if (cur.Type != TokType.IDENT) { - AddError("Expected type name"); - return null; - } - string tname=cur.Text.ToLowerInvariant(); - Next(); - - VarType? vt = tname switch { - "bool" => VarType.BOOL, - "byte" => VarType.BYTE, - "word" => VarType.WORD, - "dword" => VarType.DWORD, - "lword" => VarType.LWORD, - "sint" => VarType.SINT, - "int" => VarType.INT, - "dint" => VarType.DINT, - "lint" => VarType.LINT, - "usint" => VarType.USINT, - "uint" => VarType.UINT, - "udint" => VarType.UDINT, - "ulint" => VarType.ULINT, - "real" => VarType.REAL, - "lreal" => VarType.LREAL, - _ => null - }; - + var vt = ParseType(name); if (vt == null) { - AddError($"Unknown type '{tname}'"); + AddError($"Invalid type for variable '{name}'"); return null; } @@ -121,6 +176,26 @@ public class StParser { Stmt? ParseAssign() { string target = cur.Text.ToUpperInvariant(); Next(); // consume identifier + + // Check if this is an array assignment + Expr? index = null; + if (cur.Type == TokType.LBRACKET) { + Symbol? sym; + if (!syms.TryGetValue(target, out sym)) { + AddError($"Undeclared variable '{target}'"); + return null; + } + if (sym.Type != VarType.ARRAY) { + AddError($"Cannot use array indexing on non-array variable '{target}'"); + return null; + } + + Next(); // consume [ + index = ParseExpr(); + if (index == null) return null; + if (!Expect(TokType.RBRACKET)) return null; + } + if (cur.Type != TokType.ASSIGN) { AddError($"Expected ':=' after identifier '{target}'"); return null; @@ -129,7 +204,7 @@ public class StParser { var e = ParseExpr(); if (e == null) return null; if (!Expect(TokType.SEMI)) return null; - return new AssignStmt{Target=target, Expr=e}; + return new AssignStmt{Target=target, Index=index, Expr=e}; } Stmt? ParseStmt(){ @@ -318,6 +393,29 @@ public class StParser { AddError($"Undeclared variable '{n}'"); return null; } + + // Check for array access + if (cur.Type == TokType.LBRACKET) { + if (sym.Type != VarType.ARRAY) { + AddError($"Cannot index non-array variable '{n}'"); + return null; + } + + Next(); // consume [ + var idx = ParseExpr(); + if (idx == null) return null; + + if (!Expect(TokType.RBRACKET)) return null; + + ArrayType? arrayType; + if (!arrayTypes.TryGetValue(n, out arrayType)) { + AddError($"Internal error: Array type information missing for '{n}'"); + return null; + } + + return new ArrayAccessExpr(n, idx, arrayType.ElementType); + } + return new VarExpr(n, sym.Type); case TokType.LPAREN: @@ -332,4 +430,9 @@ public class StParser { return null; } } + + public ArrayType? GetArrayType(string name) { + ArrayType? type; + return arrayTypes.TryGetValue(name, out type) ? type : null; + } } diff --git a/STCompiler.Compiler/Program.cs b/STCompiler.Compiler/Program.cs index ff79d4f..484ed2f 100644 --- a/STCompiler.Compiler/Program.cs +++ b/STCompiler.Compiler/Program.cs @@ -33,6 +33,10 @@ class Program { try { var emitter = new BytecodeEmitter(); + // Register array types from parser + foreach (var (name, arrayType) in parser.arrayTypes) { + emitter.RegisterArrayType(name, arrayType); + } emitter.Compile(prog); File.WriteAllBytes(args[1], emitter.BuildBinary()); Console.WriteLine($"Wrote {args[1]}: consts={emitter.ConstantsCount}, vars={emitter.VarCount}, code={emitter.CodeLength}"); @@ -52,11 +56,17 @@ public class BytecodeEmitter { List consts = new(); // Kann nun int, long, float oder double speichern Dictionary syms = new(); List code = new(); + Dictionary arrayTypes = new(); class Symbol { required public string Name; public VarType Type; public int Index; + public ArrayType? ArrayInfo; // Null for non-array types + } + + public void RegisterArrayType(string name, ArrayType type) { + arrayTypes[name] = type; } public int ConstantsCount => consts.Count; @@ -65,8 +75,19 @@ public class BytecodeEmitter { public void Compile(ProgramNode p){ int idx=0; - foreach(var v in p.Vars) - syms[v.Name]=new Symbol{Name=v.Name,Type=v.Type,Index=idx++}; + foreach(var v in p.Vars) { + var symbol = new Symbol{Name=v.Name, Type=v.Type, Index=idx}; + if (v.Type == VarType.ARRAY) { + var arrayInfo = arrayTypes[v.Name]; + symbol.ArrayInfo = arrayInfo; + // For arrays, increment the index by array size + idx += arrayInfo.Length; + } else { + // For regular variables, increment by 1 + idx++; + } + syms[v.Name] = symbol; + } foreach(var v in p.Vars) if(v.Init!=null){EmitExpr(v.Init);EmitByte(Bytecode.OpCodes.STORE_VAR);EmitU16((ushort)syms[v.Name].Index);} @@ -149,8 +170,43 @@ public class BytecodeEmitter { if (!syms.TryGetValue(a.Target, out symbol)) { throw new Exception($"Undeclared variable '{a.Target}'"); } - EmitExpr(a.Expr); - EmitByte(Bytecode.OpCodes.STORE_VAR); EmitU16((ushort)symbol.Index); + + // If this is an array assignment, we need to evaluate the index and adjust the target address + if (symbol.Type == VarType.ARRAY && a.Index != null) { + // Evaluate array index + EmitExpr(a.Index); + + // Bounds check + if (symbol.ArrayInfo == null) + throw new Exception($"Internal error: Array info missing for '{a.Target}'"); + + EmitByte(Bytecode.OpCodes.ARRAY_BOUNDS_CHECK); + EmitU16((ushort)symbol.ArrayInfo.Start); + EmitU16((ushort)symbol.ArrayInfo.End); + + // Convert to zero-based index + if (symbol.ArrayInfo.Start != 0) { + EmitByte(Bytecode.OpCodes.PUSH_CONST); + EmitU16((ushort)AddConst(symbol.ArrayInfo.Start)); + EmitByte(Bytecode.OpCodes.SUB_INT); + } + + // Add base address + EmitByte(Bytecode.OpCodes.PUSH_CONST); + EmitU16((ushort)symbol.Index); + EmitByte(Bytecode.OpCodes.ADD_INT); + + // Now evaluate and store the value + EmitExpr(a.Expr); + EmitByte(Bytecode.OpCodes.STORE_VAR); + EmitU16(0); // Index is already on stack + } + else { + // Regular variable assignment + EmitExpr(a.Expr); + EmitByte(Bytecode.OpCodes.STORE_VAR); + EmitU16((ushort)symbol.Index); + } break; case IfStmt iff: @@ -226,14 +282,12 @@ public class BytecodeEmitter { int ci = AddConst(ie.Value); EmitByte(Bytecode.OpCodes.PUSH_CONST); // PUSH_CONST EmitU16((ushort)ci); - // removed emitting the type byte into code stream; type is stored with constant table break; case RealExpr re: int cri = AddConst(re.Value); EmitByte(Bytecode.OpCodes.PUSH_REAL_CONST); // PUSH_REAL_CONST EmitU16((ushort)cri); - // removed emitting the type byte into code stream; type is stored with constant table break; case VarExpr ve: @@ -244,6 +298,42 @@ public class BytecodeEmitter { EmitByte(Bytecode.OpCodes.LOAD_VAR); // LOAD_VAR EmitU16((ushort)symbol.Index); break; + + case ArrayAccessExpr ae: + Symbol? arraySymbol = null; + if (!syms.TryGetValue(ae.ArrayName, out arraySymbol)) { + throw new Exception($"Undeclared array '{ae.ArrayName}'"); + } + if (arraySymbol.Type != VarType.ARRAY || arraySymbol.ArrayInfo == null) { + throw new Exception($"Variable '{ae.ArrayName}' is not an array"); + } + + // Emit the index expression first + EmitExpr(ae.Index); + + // Emit array bounds check + int start = arraySymbol.ArrayInfo.Start; + int end = arraySymbol.ArrayInfo.End; + EmitByte(Bytecode.OpCodes.ARRAY_BOUNDS_CHECK); + EmitU16((ushort)start); + EmitU16((ushort)end); + + // Convert index to zero-based + if (start != 0) { + EmitByte(Bytecode.OpCodes.PUSH_CONST); + EmitU16((ushort)AddConst(start)); + EmitByte(Bytecode.OpCodes.SUB_INT); + } + + // Load array base address + EmitByte(Bytecode.OpCodes.PUSH_CONST); + EmitU16((ushort)arraySymbol.Index); + EmitByte(Bytecode.OpCodes.ADD_INT); + + // Load array element + EmitByte(Bytecode.OpCodes.LOAD_VAR); + EmitU16(0); // Index is already on stack + break; case BinaryExpr be: EmitExpr(be.L); @@ -253,14 +343,6 @@ public class BytecodeEmitter { if (!opCodes.ContainsKey(key)) { throw new Exception($"Unknown operator '{be.Op}' for type {be.Type}"); } - - // Wenn nötig, Typenkonvertierung vor der Operation - // Conversion opcodes removed - runtime will handle type differences using constant type markers and operation opcodes - // if (be.L.Type != be.Type) - // EmitByte((byte)(0x50 + (int)be.Type)); // CONVERT_TO_* - // if (be.R.Type != be.Type) - // EmitByte((byte)(0x50 + (int)be.Type)); // CONVERT_TO_* - EmitByte(opCodes[key]); break; } @@ -308,11 +390,29 @@ public class BytecodeEmitter { } } + // Calculate total variable space needed (accounting for arrays) + int totalVarSpace = 0; + foreach(var kv in syms) { + if (kv.Value.Type == VarType.ARRAY && kv.Value.ArrayInfo != null) { + totalVarSpace = Math.Max(totalVarSpace, kv.Value.Index + kv.Value.ArrayInfo.Length); + } else { + totalVarSpace = Math.Max(totalVarSpace, kv.Value.Index + 1); + } + } + // Variablen - w.Write((ushort)syms.Count); - var types = new byte[syms.Count]; - foreach(var kv in syms) - types[kv.Value.Index] = (byte)kv.Value.Type; + w.Write((ushort)totalVarSpace); + var types = new byte[totalVarSpace]; + foreach(var kv in syms) { + if (kv.Value.Type == VarType.ARRAY && kv.Value.ArrayInfo != null) { + // Fill array elements with their element type + for (int i = 0; i < kv.Value.ArrayInfo.Length; i++) { + types[kv.Value.Index + i] = (byte)kv.Value.ArrayInfo.ElementType; + } + } else { + types[kv.Value.Index] = (byte)kv.Value.Type; + } + } foreach(var b in types) w.Write(b); diff --git a/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Common.dll index ea9b04b3d44abbe0f37aa1f839383d744c5a62c7..f181d402b828eec1ac139fd9db7252d2254c688d 100644 GIT binary patch literal 9728 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 diff --git a/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Common.pdb b/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Common.pdb index 8486650aa59c9b41c284e3e24e16c2305b1712d3..ba33997a7716ed81407a5b08a68b3e2b3bd487e2 100644 GIT binary patch delta 708 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 K&;M6E@P7b)CETn4 literal 27136 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 diff --git a/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.pdb b/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.pdb index 49e9360444391319083b667361895f8c11509f1c..651302cf4a6a283fbacbb02b8c8df80c04a7b0ee 100644 GIT binary patch delta 6174 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 delta 4330 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 KqD_&xc>NEayK|EO diff --git a/STCompiler.Compiler/input.st b/STCompiler.Compiler/input.st index 99bb2de..bd9a298 100644 --- a/STCompiler.Compiler/input.st +++ b/STCompiler.Compiler/input.st @@ -8,8 +8,16 @@ VAR x REAL := 1.5; y LREAL := 2.5; cnt INT := 0; +// numbers ARRAY [1..10] OF INT; +// matrix ARRAY [0..3] OF REAL; END_VAR + +// numbers[1] := 42; +// numbers[2] := numbers[1] * 2; +// matrix[0] := 3.14; + + // Einfacher If-Test IF a = 0 THEN a := 1; diff --git a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfo.cs b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfo.cs index 23cbb57..dfa34bc 100644 --- a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfo.cs +++ b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("STCompiler.Compiler")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ec4d7dc26ee2fd96db003ab3a6c1af70e02894b9")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+3cb63739152cd26ec43993953c7b93d4ab9bcce7")] [assembly: System.Reflection.AssemblyProductAttribute("STCompiler.Compiler")] [assembly: System.Reflection.AssemblyTitleAttribute("STCompiler.Compiler")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfoInputs.cache b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfoInputs.cache index cbd1f84..174f51c 100644 --- a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfoInputs.cache +++ b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfoInputs.cache @@ -1 +1 @@ -bcd7f5e5efddd7ac50fcf7487abbb9cf17cacc826a4dbbf1dcb95d96e7974c93 +cc701f58f98db810dc498092a84a16f3679a63cf316500de1b157491a545da80 diff --git a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.csproj.AssemblyReference.cache b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.csproj.AssemblyReference.cache index 308cebe535193434766818b3a245e6a3101cf215..f4b75acf0b6248d9fd5ee65bcefdffa624cf347c 100644 GIT binary patch delta 16 XcmX@be2RHO8Y@Tl6Wvc6v*Q^7ILrp9 delta 16 XcmX@be2RHO8mqThZTN+a+3}13H2?+| diff --git a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.dll b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.dll index 9c7f68a36d3bcc17d1322bce9346ad00a9f851ef..53c681a69cf1ddc463f1c3e572e1454247014392 100644 GIT binary patch literal 31744 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 K&;M6E@P7b)CETn4 literal 27136 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 diff --git a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.pdb b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.pdb index 49e9360444391319083b667361895f8c11509f1c..651302cf4a6a283fbacbb02b8c8df80c04a7b0ee 100644 GIT binary patch delta 6174 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 delta 4330 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 KqD_&xc>NEayK|EO diff --git a/STCompiler.Compiler/obj/Debug/net8.0/ref/STCompiler.Compiler.dll b/STCompiler.Compiler/obj/Debug/net8.0/ref/STCompiler.Compiler.dll index 816638c07e4e778d584d1316f40dbf21f12cc4b9..cae0eeca482b8c8f82454030c558483149355723 100644 GIT binary patch delta 3907 zcma)<4RBOf701tg_q~^w5H`CT$QNnYut0*LA!HNc%5=IRp|CcPkfhL9lu)-oB5X)jc%_ADeeLdgC~a|Bcc-njuPvvS6en%)AYK-(Byzx}K<3 z8O=nujK2Kz)E=T#=+o%Pb@H{vPLrrjnV$(OgqG!;5k(@;`JE^b^M_3BU&7t+j;HPL z(P-##zkY7{H?JE*9{n#OhiC)R@wXaHBZC@4L>n`R1d3KTb!OpRw`LIe_YggV`Hq^1 z8@f7L+c$TrQF=NWw*LDX$U^K^@v8g6)!1f1S3Bp-g8Vz6veDL|Ek^U92{a^7A=-n^ zzs-F6wp1RGNq^QB873W+itmdIBaOm_@;9=xLOUx>+9@k_la6VM4={HzKgE7F$FFgn z_lzRsRPop(I4N`|-9oh=A$E~18qiy!71`LF7i!8)NGo;>TOmTxO7zC49?7? znM&F8K6mEexCG9`PV9FRanTtnNVxRpuwGR+EQSCaW-ZNA(S|s-Zlr zkDL6g){vk3&X244SPeJXnOMpot)U{4!p)a|5Le7%9RIhCcfns7e+L`If51~h2$NDw z1N^{HP8-J_LpgJV;x9P=MP|a;ZmJ4j(p7!~=Vx+ehmL%k65WZ?gEAQ<24yOkn6i^p z(IMtGJq>X!?+Q|GxsyU#(a+XJaaqK{sV8WGhb&mGC#|F zhIyRX%-qY|z}(1O$9$T(hWP{LG3I;BQ_S7WlgwwC-8OIDX0|Y2V7|;e$Bcn$@fDj* zwTxRuI^qQH=JmK}WWbqzn%Yd2bH9=IfBm>#06%WpMWQaGen$JUM(|@3lu-LWMt$olsPvKP=M8PIO*Q z9x=8-Ce#&rS$0jT%i=#*+s@FI$r9`jsq{yD= z!=Ziy&w)C7a`BHS$ttmIb0(DaeWPDYsppK7QwpcaO_P0;r=JqJ6XWPvab`;K3C)}A zbHoLql&#MFek)||7ru#3EAS!p8#%3yR*C1QGHHkTg22_;$1~)sz z_B0X0t!Sbnm*btFq*-_j32MRsjW**^DCw&_IEGlG>*$r#!H%LvuS=D$d_hm3f}q=o zHNy4%k@!y%$1ms*C%rp4Os$FX)szzxC-!$2KPi%FL>IX6s$Wbtm_my@C=wpzYxIxb$iIGUBr+ zXwe0F6#O9_0Eg*G@G?qS^dfx=yh_KwpVI*NOVqIF8l3`1=nObY=fO8I+M++=P%L_f zu7H1~m%y7CXVC}rnvKmZx(<@K0qWvS&=POa0_vnrYQg375LiW>;JwrXHn9Hy7)H%<*-X83R%@omDM#87wjwy{a!l2R z?if$p%T7P1_H*iS_)Fw4JHzZ;JpE-#Lg(^jB?H!JZg+{#yDq;b4aM2z>ARD z3nA3>QmE;rP{%FV$!Gf6_p|S3XD@Sr{Q>qbvU7=@OYFSC&KNsm>eg6S>$dht$L{7*=eDQ& zp6c4h2CA#Um%^IxTCiqCePz|XD;uePB3RW(HH{RmUbz-Ts}8TH%KG}sCR))%J0e@U zr@fUkDmywNyVpjx#;M);oA=Iz@h$PK@%FC9-CvATeS9-^BHqC{?5v7+ zu^7rpzn~>^7;b-XoAc`IM-!DQW3hN=r?W2Ob5=xE#;Bna8A(F6w(N2SGnf6(_mguo zbD^kn=41_K==oSDeV&3}VZOow=So&Vc1Sa=By+ZRrSPt{u-&e?yxr3Dc02#fT40B~ zg_chWm$%TfCJBKj8jm_=M(d#p%_&b>2ESmJTPE?K+iJhfsLy zEFUGNLW-vRRQTR*mx-E~my=TA-(ldJz#C7t@MXZe<{ZpEQy7Rvmjx;U!KLM;v6j+h z@mN_P7z_l<1F?!|FwjyKi3X!sr3&ZaoI&qRe0Wa$xzsmgs4qWLY;ac0x$2Z?HAAl4 zc3B(1jVwybC_oixL0XC{z7$>yxQyb6%GeJw%fT2jqsR;(r;H*TN8!ehT`~01+`BZ* MSHYjIeI-f%1+s^yCjbBd delta 3477 zcmbW43v3kE6^8#ivonkz7<>H&`r@ zqRdhVO+!R*hop`|s*NBmjRHk++9p*hjEv|5OHI-uQI#fkomQ#TR%wY)K_L3yv+GA% zDXO}w`R4rpIrrYVcW3X;#-g#i4?Vf;;)y^19?91vmLW}rfIJ$h3G>VC!>@E?6tn}a z+UNwXTf-&U=`kRk`uYZ-$SW~!@iwW})E&9BB0TcE*HpPG^4?RWYT2l5TvM6L*YEh( zmUsG^UViJzw0X7aAr+hXlP0hpVMc*R4%|UG35Pw>=n>Gr}KazJEn%9+Pp~UBfKNaT@ zssD;K!R!YTA6KV*saS<~+1veeGH{RjnAvyKgv--LrfvMj)C~gA+$~Ov(s8cuf@R~R z@xGohsx>$bg*}{hhN|?1MJXzS%AqoNWMahB%H&&DzG7)*bJ=w62vrW11y{>wMe4Lx z2SlY|fvE3`S_ntF8S&|E{78}9Q&eSK&s0&nMdct()Hg)s@@~<6ep^%?7D92k*YZL) z@$<-la+$ouD-GjzEvfoh8pa)1Bh=em`S!!KG-~0Ot z2KjAKNT~gvqW+gk_y6f8gE#S9yIf_?Q$@;}r-Ew1Jhe)t&QmpNA=bGvCq0Wy-toy! zanZb;_h~|%P1$HgX4N@-)oh$qXH~J)Jgc5_Y`axuCEGpcT(eqLc2b?=$8oR9omDq| z_la`#lAcpHeVrHP2$>M?U(4olVExk~)q`j%S!iB3OV>78@R%FHy-#%)N)?ws&( zgPlqIj2ni53_2!WAQj%Xw9`SFxI-Fi8ra23CB8yXDj$`~7^yHnJ|LClQuEAAE0;x! zeA&F`Q!waL$RhcpLZ)(m(s3o3$=yryE@889y>OGTOSp|x*iGhgv(_9YZM;M-#t+C$ zoDt`DLWg6z8@aP*;SusdgvbHZkUMZ2IfOgOUEDYwJced6h8A)k+Q=uN+dhpg$RJs-oPjE}RmgIDncc?wUFuj3h)r#INp!CQEq9K(0Xvp7orf=wJu z-~{>);aS;$RZz$PaLy{E$^EFbGGLq6asPmGC&33jQD+Qx*J~IzcYM z1Q`^+92b;Zfz`-1D){qr3%M3`(TTm-MIOL=1{a)87w1*Op&nw~ zBLnXhCoYw7spR70vN0ykm^f#oW?Wj0yV7i2tVt=Fl%gqdrln|FYNo}3(iZ`xFG49j zys7l?rqc5^#R-ZN6elQ7m+&RwQOO>a>>1_iF2=O6VA{E~H$-|>3OBX6^gkYiSy92LgQxH9-CVzPcIAEgWw^O?!u!*mK6L>jrAPdowm zVtOx_|ElCJ;AkU~bW8C$sStD4v$=`%On%MQ5SklzKHN3b z)jiPHS&8Vj!J*Dd@4Elt;&o9zC4Zs0g>2e@=ms=5G`5gD8k#%2SF^XO7B4Sn)#&z| zQNt_G-{+mqZ};BK_j{EE|MW@=YyRsI-Ww?VtcrSG;Yn}v;^paU4BJ^?=lUC!zrp*? z;uY>1f7yb7sj}8&I99+=PKGZ4e?+6t3?Rb_D8s*vD`ohj{wN*CN2f^asIH1KRQ{+F zK%!HY7}`%4Kb_%Hi_e|@KBsJ^q6~&v2FFocRd4;0m&^Kks(b5td#Y;t`l|YS!?nHL zq0s8C?$uqjJ(XSkb)mjc)ve*`?yy%}bkZM5{u|K?yIIGP;gUQf+U{K`ni$O}-fp(` z@mpSvUexjEK^1Dz$9EO_sl!yg-2Xy+uSORm&05w~^4!lhA=ZXieJg9LnGcViFR3?- Mfg1TUG#s-34gQ>XqyPW_ diff --git a/STCompiler.Compiler/obj/Debug/net8.0/refint/STCompiler.Compiler.dll b/STCompiler.Compiler/obj/Debug/net8.0/refint/STCompiler.Compiler.dll index 816638c07e4e778d584d1316f40dbf21f12cc4b9..cae0eeca482b8c8f82454030c558483149355723 100644 GIT binary patch delta 3907 zcma)<4RBOf701tg_q~^w5H`CT$QNnYut0*LA!HNc%5=IRp|CcPkfhL9lu)-oB5X)jc%_ADeeLdgC~a|Bcc-njuPvvS6en%)AYK-(Byzx}K<3 z8O=nujK2Kz)E=T#=+o%Pb@H{vPLrrjnV$(OgqG!;5k(@;`JE^b^M_3BU&7t+j;HPL z(P-##zkY7{H?JE*9{n#OhiC)R@wXaHBZC@4L>n`R1d3KTb!OpRw`LIe_YggV`Hq^1 z8@f7L+c$TrQF=NWw*LDX$U^K^@v8g6)!1f1S3Bp-g8Vz6veDL|Ek^U92{a^7A=-n^ zzs-F6wp1RGNq^QB873W+itmdIBaOm_@;9=xLOUx>+9@k_la6VM4={HzKgE7F$FFgn z_lzRsRPop(I4N`|-9oh=A$E~18qiy!71`LF7i!8)NGo;>TOmTxO7zC49?7? znM&F8K6mEexCG9`PV9FRanTtnNVxRpuwGR+EQSCaW-ZNA(S|s-Zlr zkDL6g){vk3&X244SPeJXnOMpot)U{4!p)a|5Le7%9RIhCcfns7e+L`If51~h2$NDw z1N^{HP8-J_LpgJV;x9P=MP|a;ZmJ4j(p7!~=Vx+ehmL%k65WZ?gEAQ<24yOkn6i^p z(IMtGJq>X!?+Q|GxsyU#(a+XJaaqK{sV8WGhb&mGC#|F zhIyRX%-qY|z}(1O$9$T(hWP{LG3I;BQ_S7WlgwwC-8OIDX0|Y2V7|;e$Bcn$@fDj* zwTxRuI^qQH=JmK}WWbqzn%Yd2bH9=IfBm>#06%WpMWQaGen$JUM(|@3lu-LWMt$olsPvKP=M8PIO*Q z9x=8-Ce#&rS$0jT%i=#*+s@FI$r9`jsq{yD= z!=Ziy&w)C7a`BHS$ttmIb0(DaeWPDYsppK7QwpcaO_P0;r=JqJ6XWPvab`;K3C)}A zbHoLql&#MFek)||7ru#3EAS!p8#%3yR*C1QGHHkTg22_;$1~)sz z_B0X0t!Sbnm*btFq*-_j32MRsjW**^DCw&_IEGlG>*$r#!H%LvuS=D$d_hm3f}q=o zHNy4%k@!y%$1ms*C%rp4Os$FX)szzxC-!$2KPi%FL>IX6s$Wbtm_my@C=wpzYxIxb$iIGUBr+ zXwe0F6#O9_0Eg*G@G?qS^dfx=yh_KwpVI*NOVqIF8l3`1=nObY=fO8I+M++=P%L_f zu7H1~m%y7CXVC}rnvKmZx(<@K0qWvS&=POa0_vnrYQg375LiW>;JwrXHn9Hy7)H%<*-X83R%@omDM#87wjwy{a!l2R z?if$p%T7P1_H*iS_)Fw4JHzZ;JpE-#Lg(^jB?H!JZg+{#yDq;b4aM2z>ARD z3nA3>QmE;rP{%FV$!Gf6_p|S3XD@Sr{Q>qbvU7=@OYFSC&KNsm>eg6S>$dht$L{7*=eDQ& zp6c4h2CA#Um%^IxTCiqCePz|XD;uePB3RW(HH{RmUbz-Ts}8TH%KG}sCR))%J0e@U zr@fUkDmywNyVpjx#;M);oA=Iz@h$PK@%FC9-CvATeS9-^BHqC{?5v7+ zu^7rpzn~>^7;b-XoAc`IM-!DQW3hN=r?W2Ob5=xE#;Bna8A(F6w(N2SGnf6(_mguo zbD^kn=41_K==oSDeV&3}VZOow=So&Vc1Sa=By+ZRrSPt{u-&e?yxr3Dc02#fT40B~ zg_chWm$%TfCJBKj8jm_=M(d#p%_&b>2ESmJTPE?K+iJhfsLy zEFUGNLW-vRRQTR*mx-E~my=TA-(ldJz#C7t@MXZe<{ZpEQy7Rvmjx;U!KLM;v6j+h z@mN_P7z_l<1F?!|FwjyKi3X!sr3&ZaoI&qRe0Wa$xzsmgs4qWLY;ac0x$2Z?HAAl4 zc3B(1jVwybC_oixL0XC{z7$>yxQyb6%GeJw%fT2jqsR;(r;H*TN8!ehT`~01+`BZ* MSHYjIeI-f%1+s^yCjbBd delta 3477 zcmbW43v3kE6^8#ivonkz7<>H&`r@ zqRdhVO+!R*hop`|s*NBmjRHk++9p*hjEv|5OHI-uQI#fkomQ#TR%wY)K_L3yv+GA% zDXO}w`R4rpIrrYVcW3X;#-g#i4?Vf;;)y^19?91vmLW}rfIJ$h3G>VC!>@E?6tn}a z+UNwXTf-&U=`kRk`uYZ-$SW~!@iwW})E&9BB0TcE*HpPG^4?RWYT2l5TvM6L*YEh( zmUsG^UViJzw0X7aAr+hXlP0hpVMc*R4%|UG35Pw>=n>Gr}KazJEn%9+Pp~UBfKNaT@ zssD;K!R!YTA6KV*saS<~+1veeGH{RjnAvyKgv--LrfvMj)C~gA+$~Ov(s8cuf@R~R z@xGohsx>$bg*}{hhN|?1MJXzS%AqoNWMahB%H&&DzG7)*bJ=w62vrW11y{>wMe4Lx z2SlY|fvE3`S_ntF8S&|E{78}9Q&eSK&s0&nMdct()Hg)s@@~<6ep^%?7D92k*YZL) z@$<-la+$ouD-GjzEvfoh8pa)1Bh=em`S!!KG-~0Ot z2KjAKNT~gvqW+gk_y6f8gE#S9yIf_?Q$@;}r-Ew1Jhe)t&QmpNA=bGvCq0Wy-toy! zanZb;_h~|%P1$HgX4N@-)oh$qXH~J)Jgc5_Y`axuCEGpcT(eqLc2b?=$8oR9omDq| z_la`#lAcpHeVrHP2$>M?U(4olVExk~)q`j%S!iB3OV>78@R%FHy-#%)N)?ws&( zgPlqIj2ni53_2!WAQj%Xw9`SFxI-Fi8ra23CB8yXDj$`~7^yHnJ|LClQuEAAE0;x! zeA&F`Q!waL$RhcpLZ)(m(s3o3$=yryE@889y>OGTOSp|x*iGhgv(_9YZM;M-#t+C$ zoDt`DLWg6z8@aP*;SusdgvbHZkUMZ2IfOgOUEDYwJced6h8A)k+Q=uN+dhpg$RJs-oPjE}RmgIDncc?wUFuj3h)r#INp!CQEq9K(0Xvp7orf=wJu z-~{>);aS;$RZz$PaLy{E$^EFbGGLq6asPmGC&33jQD+Qx*J~IzcYM z1Q`^+92b;Zfz`-1D){qr3%M3`(TTm-MIOL=1{a)87w1*Op&nw~ zBLnXhCoYw7spR70vN0ykm^f#oW?Wj0yV7i2tVt=Fl%gqdrln|FYNo}3(iZ`xFG49j zys7l?rqc5^#R-ZN6elQ7m+&RwQOO>a>>1_iF2=O6VA{E~H$-|>3OBX6^gkYiSy92LgQxH9-CVzPcIAEgWw^O?!u!*mK6L>jrAPdowm zVtOx_|ElCJ;AkU~bW8C$sStD4v$=`%On%MQ5SklzKHN3b z)jiPHS&8Vj!J*Dd@4Elt;&o9zC4Zs0g>2e@=ms=5G`5gD8k#%2SF^XO7B4Sn)#&z| zQNt_G-{+mqZ};BK_j{EE|MW@=YyRsI-Ww?VtcrSG;Yn}v;^paU4BJ^?=lUC!zrp*? z;uY>1f7yb7sj}8&I99+=PKGZ4e?+6t3?Rb_D8s*vD`ohj{wN*CN2f^asIH1KRQ{+F zK%!HY7}`%4Kb_%Hi_e|@KBsJ^q6~&v2FFocRd4;0m&^Kks(b5td#Y;t`l|YS!?nHL zq0s8C?$uqjJ(XSkb)mjc)ve*`?yy%}bkZM5{u|K?yIIGP;gUQf+U{K`ni$O}-fp(` z@mpSvUexjEK^1Dz$9EO_sl!yg-2Xy+uSORm&05w~^4!lhA=ZXieJg9LnGcViFR3?- Mfg1TUG#s-34gQ>XqyPW_ diff --git a/STCompiler.Disassembler/Program.cs b/STCompiler.Disassembler/Program.cs index 23d58b4..cafe69f 100644 --- a/STCompiler.Disassembler/Program.cs +++ b/STCompiler.Disassembler/Program.cs @@ -46,10 +46,29 @@ class Program { byte tb = r.ReadByte(); var vt = (VarType)tb; varTypes[i] = vt; - if (Enum.IsDefined(typeof(VarType), vt)) + + if (vt == VarType.ARRAY) { + // Look ahead to find array length and element type + int arrayStart = i; + int length = 1; + VarType elementType = 0; // Initialize to INT as default + + if (i + 1 < nVars) { + elementType = (VarType)varTypes[i + 1]; + while (i + length < nVars && varTypes[i + length] == varTypes[i + 1]) { + length++; + } + } + + Console.WriteLine($" Var[{i}] type = ARRAY[{length}] OF {elementType}"); + i += length - 1; // Skip array elements + } + else if (Enum.IsDefined(typeof(VarType), vt)) { Console.WriteLine($" Var[{i}] type = {vt}"); - else + } + else { Console.WriteLine($" Var[{i}] type = {tb} (unknown)"); + } } ushort codeLen = r.ReadUInt16(); @@ -71,6 +90,12 @@ class Program { case Bytecode.OpCodes.JZ: { ushort target = ReadU16(code, ref ip); Console.WriteLine($"JZ addr={target:0000}"); break; } case Bytecode.OpCodes.JMP: { ushort target = ReadU16(code, ref ip); Console.WriteLine($"JMP addr={target:0000}"); break; } case Bytecode.OpCodes.HALT: Console.WriteLine("HALT"); break; + case Bytecode.OpCodes.ARRAY_BOUNDS_CHECK: { + Console.WriteLine("ARRAY_BOUNDS_CHECK"); + // Skip the next byte as it's part of the array bounds check instruction + if (ip < code.Length) ip++; + break; + } default: Console.WriteLine($"{Bytecode.OpName(op)}"); break; } } diff --git a/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Common.dll index ea9b04b3d44abbe0f37aa1f839383d744c5a62c7..f181d402b828eec1ac139fd9db7252d2254c688d 100644 GIT binary patch literal 9728 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 diff --git a/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Common.pdb b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Common.pdb index 8486650aa59c9b41c284e3e24e16c2305b1712d3..ba33997a7716ed81407a5b08a68b3e2b3bd487e2 100644 GIT binary patch delta 708 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 L+I;h8L0&chhTAx! delta 194 zcmZoLXfT-2!6Kj8`*~we3A4cEx+9*hvpU=x#XtV7Q<=oES&-#DWSnT0Y?zp4ZjfqVWMOHNWVv}C_cK=iREA^* z6NVH9b0AJ;Fk&!cNCiS8hBP4G639zoNMbMmLSu$RAPYpA0o54-=`^4o1E5+1plS=C OS`(nW<>t?Vylen4l{iQM diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/refint/STCompiler.Disassembler.dll b/STCompiler.Disassembler/obj/Debug/net8.0/refint/STCompiler.Disassembler.dll index e7a465bb55b6928b08a0c7b88a9f3ad1ebaadcb5..c9bd32539718fa2b3bb2d6302493a67957f01372 100644 GIT binary patch delta 194 zcmZoLXfT-2!LqEe`r*c&5@rEy)oTfj-9G-i@87>SRXzCXW| zk{HYwj2X;<*pk7J!IZ%WD3$^w%@|UFEEBM}C73h?lF2}oNkEmxKs6=|iC}gTP&65+ L+I;h8L0&chhTAx! delta 194 zcmZoLXfT-2!6Kj8`*~we3A4cEx+9*hvpU=x#XtV7Q<=oES&-#DWSnT0Y?zp4ZjfqVWMOHNWVv}C_cK=iREA^* z6NVH9b0AJ;Fk&!cNCiS8hBP4G639zoNMbMmLSu$RAPYpA0o54-=`^4o1E5+1plS=C OS`(nW<>t?Vylen4l{iQM diff --git a/STCompiler.Simulator/Program.cs b/STCompiler.Simulator/Program.cs index 9b990ee..edb9a79 100644 --- a/STCompiler.Simulator/Program.cs +++ b/STCompiler.Simulator/Program.cs @@ -54,6 +54,42 @@ class Program { Console.WriteLine($"CodeLen: {codeLen} bytes"); var code = r.ReadBytes(codeLen); + // Initialize arrays for element type tracking + var arrayRanges = new Dictionary(); + Console.WriteLine("\nAnalyzing variable types:"); + for (int i = 0; i < nVars; i++) { + Console.WriteLine($" [{i}] = {(VarType)varTypes[i]}"); + } + + Console.WriteLine("\nDetecting arrays:"); + for (int i = 0; i < nVars; i++) { + if (varTypes[i] == (byte)VarType.ARRAY && i + 2 <= nVars) { + // An array consists of: + // - ARRAY marker at position i + // - ElementType at position i+1 + // - Array elements starting at position i+2 + int arrayStart = i; + VarType elementType = (VarType)varTypes[i + 1]; + int startOfElements = i + 2; + + // Count elements until we hit either end of vars or a different type + int length = 0; + for (int j = startOfElements; j < nVars; j++) { + if (varTypes[j] != (byte)elementType) break; + length++; + } + + arrayRanges[arrayStart] = (startOfElements, length, elementType); + Console.WriteLine($"Found array at index {arrayStart}:"); + Console.WriteLine($" - Element type: {elementType}"); + Console.WriteLine($" - Elements start at: {startOfElements}"); + Console.WriteLine($" - Length: {length}"); + + // Skip past the array definition (ARRAY marker + element type) + i = startOfElements - 1; + } + } + var stack = new Stack(); var vars = new object[nVars]; int ip = 0; @@ -61,7 +97,7 @@ class Program { while (ip < code.Length) { int addr = ip; byte op = code[ip++]; - Console.Write($"{addr:0000}: 0x{op:X2} {Bytecode.OpName(op)} "); + Console.Write($"{addr:0000}: 0x{op:X2} "); switch (op) { case Bytecode.OpCodes.NOP: Console.WriteLine("NOP"); break; case Bytecode.OpCodes.PUSH_CONST: { @@ -76,12 +112,103 @@ class Program { Console.WriteLine($"PUSH_REAL_CONST {ci} ({consts[ci]})"); stack.Push(consts[ci]); break; } - case Bytecode.OpCodes.LOAD_VAR: { ushort vi = (ushort)(code[ip++] | (code[ip++] << 8)); Console.WriteLine($"LOAD_VAR {vi}"); stack.Push(vars[vi]); break; } - case Bytecode.OpCodes.STORE_VAR: { ushort vi = (ushort)(code[ip++] | (code[ip++] << 8)); Console.WriteLine($"STORE_VAR {vi}"); vars[vi] = stack.Pop(); break; } - case Bytecode.OpCodes.JZ: { ushort target = (ushort)(code[ip++] | (code[ip++] << 8)); Console.WriteLine($"JZ addr={target}"); var cond = stack.Pop(); bool isFalse = cond is int ci ? ci == 0 : cond is long cl ? cl == 0L : cond is double cd ? cd == 0.0 : cond == null; if (isFalse) ip = target; break; } - case Bytecode.OpCodes.JMP: { ushort target = (ushort)(code[ip++] | (code[ip++] << 8)); Console.WriteLine($"JMP addr={target}"); ip = target; break; } - case Bytecode.OpCodes.HALT: Console.WriteLine("HALT"); ip = code.Length; break; - default: Console.WriteLine(); + case Bytecode.OpCodes.LOAD_VAR: { + ushort vi = (ushort)(code[ip++] | (code[ip++] << 8)); + Console.WriteLine($"LOAD_VAR {vi}"); + + // Check if the variable index is within bounds + if (vi >= vars.Length) { + throw new Exception($"Variable index {vi} is out of bounds (max: {vars.Length - 1})"); + } + + if (arrayRanges.ContainsKey(vi)) { + var (start, arrayLength, arrayElementType) = arrayRanges[vi]; + var arrayData = new object[arrayLength]; + Array.Copy(vars, start, arrayData, 0, arrayLength); + stack.Push(arrayData); + } else { + stack.Push(vars[vi]); + } + break; + } + case Bytecode.OpCodes.STORE_VAR: { + ushort vi = (ushort)(code[ip++] | (code[ip++] << 8)); + Console.WriteLine($"STORE_VAR {vi}"); + + // Check if the variable index is within bounds + if (vi >= vars.Length) { + throw new Exception($"Variable index {vi} is out of bounds (max: {vars.Length - 1})"); + } + + var value = stack.Pop(); + if (arrayRanges.ContainsKey(vi)) { + var (start, arrayLength, arrayElementType) = arrayRanges[vi]; + if (value is object[] arr) { + Array.Copy(arr, 0, vars, start, Math.Min(arr.Length, arrayLength)); + } else { + Console.WriteLine($"Warning: Attempting to store non-array value in array variable at index {vi}"); + vars[vi] = value; + } + } else { + vars[vi] = value; + } + break; + } + case Bytecode.OpCodes.JZ: { ushort target = (ushort)(code[ip++] | (code[ip++] << 8)); Console.WriteLine($"JZ addr={target:0000}"); var cond = stack.Pop(); bool isFalse = cond is int ci ? ci == 0 : cond is long cl ? cl == 0L : cond is double cd ? cd == 0.0 : cond == null; if (isFalse) ip = target; break; } + case Bytecode.OpCodes.JMP: { + ushort target = (ushort)(code[ip++] | (code[ip++] << 8)); + Console.WriteLine($"JMP addr={target:0000}"); + ip = target; + break; + } + case Bytecode.OpCodes.HALT: + Console.WriteLine("HALT"); + ip = code.Length; + break; + case Bytecode.OpCodes.ARRAY_BOUNDS_CHECK: + // Extract the array index from the instruction + byte arrayIndex = 0; + if (ip < code.Length) { + arrayIndex = code[ip]; + ip++; + } + + // Check if this variable is actually an array + if (!arrayRanges.ContainsKey(arrayIndex)) { + Console.WriteLine($"Warning: ARRAY_BOUNDS_CHECK instruction for non-array variable {arrayIndex}"); + continue; // Skip this instruction + } + + Console.WriteLine($"ARRAY_BOUNDS_CHECK for array at index {arrayIndex}"); + + if (stack.Count < 1) { + throw new Exception("Stack underflow during array bounds check"); + } + + // Convert index value safely + var indexObj = stack.Pop(); + int index = Convert.ToInt32(indexObj); + + // The arrayStart from the instruction should be the array marker directly + if (!arrayRanges.TryGetValue(arrayIndex, out var arrayInfo)) { + // This should not happen since we checked above + throw new Exception($"Array metadata missing for index {arrayIndex}"); + } + + var (elementsStart, length, elementType) = arrayInfo; + + // Adjust for IEC array indexing (1-based) + int adjustedIndex = index - 1; + if (adjustedIndex < 0 || adjustedIndex >= length) { + throw new Exception($"Array index {index} out of bounds [1..{length}]"); + } + + // Calculate the actual element address + stack.Push(elementsStart + adjustedIndex); + Console.WriteLine($"Accessing element {index} of array, mapped to variable index {elementsStart + adjustedIndex}"); + break; + default: +; // fallback handlers if (Bytecode.OpName(op).StartsWith("ADD_") || Bytecode.OpName(op).StartsWith("SUB_") || Bytecode.OpName(op).StartsWith("MUL_") || Bytecode.OpName(op).StartsWith("DIV_")) { dynamic b = stack.Pop(); dynamic a = stack.Pop(); if (Bytecode.OpName(op).StartsWith("ADD_")) stack.Push(a + b); else if (Bytecode.OpName(op).StartsWith("SUB_")) stack.Push(a - b); else if (Bytecode.OpName(op).StartsWith("MUL_")) stack.Push(a * b); else stack.Push(a / b); @@ -98,6 +225,47 @@ class Program { stack.Push(res ? 1 : 0); break; } + // Array operations + if (op == Bytecode.OpCodes.ARRAY_BOUNDS_CHECK) { + // Extract the array index from the instruction + byte arrayIndexInner = 0; + if (ip < code.Length) { + arrayIndexInner = code[ip]; + ip++; + } + + // Check if this variable is actually an array + if (!arrayRanges.ContainsKey(arrayIndexInner)) { + Console.WriteLine($"Warning: ARRAY_BOUNDS_CHECK instruction for non-array variable {arrayIndexInner}"); + continue; // Skip this instruction + } + + Console.WriteLine($"ARRAY_BOUNDS_CHECK for array at index {arrayIndexInner}"); + + if (stack.Count < 1) { + throw new Exception("Stack underflow during array bounds check"); + } + + // Convert index value safely + var indexObjInner = stack.Pop(); + int indexInner = Convert.ToInt32(indexObjInner); + + // The arrayStart from the instruction should be the array marker directly + if (!arrayRanges.TryGetValue(arrayIndexInner, out var arrayInfoInner)) { + // This should not happen since we checked above + throw new Exception($"Array metadata missing for index {arrayIndexInner}"); + } + + var (elementsStartInner, lengthInner, elementTypeInner) = arrayInfoInner; + if (indexInner < 0 || indexInner >= lengthInner) { + throw new Exception($"Array index {indexInner} out of bounds [0..{lengthInner-1}]"); + } + + // Calculate the actual element address + stack.Push(elementsStartInner + indexInner); + Console.WriteLine($"Accessing element {indexInner} of array, mapped to variable index {elementsStartInner + indexInner}"); + break; + } throw new Exception($"Unknown opcode 0x{op:X2}"); } } diff --git a/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Common.dll index ea9b04b3d44abbe0f37aa1f839383d744c5a62c7..f181d402b828eec1ac139fd9db7252d2254c688d 100644 GIT binary patch literal 9728 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 diff --git a/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Common.pdb b/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Common.pdb index 8486650aa59c9b41c284e3e24e16c2305b1712d3..ba33997a7716ed81407a5b08a68b3e2b3bd487e2 100644 GIT binary patch delta 708 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 P5<1rY+h_XkEGGIt9XKm6 literal 13312 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 E0#{T9;Q#;t delta 1401 zcmYk6Yiv_x7{~wbyI$E1$I7;DbJY&rr5jy025uyvt z!UH|z&pJ<3H~o_GpZw<43v-{h1#CSP%L1_Ma7ded1wap9`uM8SR+>^y$!X)%6Bc7@ zPk-&sE+W)%ssc@j?!@txI!WZQ_#9Q8@Q0{VPS)d$ze98CG-CSmXh1qm}5r%X7T_z z$KW#Z;thEhIhQwoJ%0;%g4}J?-%4JvB!EYZfSZB4t?ahJm1GmUxYgh)@)zVbUZj49 z9`ZyMuxNB-E%{O|Fl*F%$ydnZWc}yk6#N5b%;^E%JcmGpR;uTffqr@uj#AB-q+0MY z)rx~u8=_P@I;bnya3B+RQnN5Z%|;jXCNxv?aEh9*yaOlc3ss~@sZ(jO(nP5$D#I=o zxm0u9SWmwOz0}*3uTZ`cO^j42t;P(!ho=K-P)@B?m22Ur_o}A*R850gfa}y+Z$cZh z&1j`=#PigUGF#yA>{I%R(hrmZ+5vO9KQwrMAUqgEJP>|1 zh)5vz6naC5hcFlm^zK2pGZ02pmtKy6zF>Q>AE5{aA_(;LMG@N{3Hk%kJ;5mA!KgNC zDbc>QxMUn!y>+K{)Y|R(X{q(vGrwK=Bdwi#=l8j@x$!RNqlY?jlIh)!&bpP6Uai3P zr)%DOv3YNu?fg=7m4;`7W_9jFIzYto?=gw`Bcp8~f?-qw&oAC`MU~;m< z;aa|O4`#EQ9y5eIQ!2owI{BQKDL{J`GhUUk3f!S*Zbz(!nGQSOX>Wk5Wawvg*ep0r zEOzR}AOC6;S0Gl)lC4I@DbJK;^655OkYho)8TnFJF!Z+RIc=fgh1C*urv3F0rjS5k z4HqLZ~O~uO8oimLYGdUYgC9_#0ADz^rW+59*XQO??qtRJoN^h>H2yL`k zAL=I>QatpbuYc@Uj<6{EbNg{JfpZz;b!fkc&L`%fTaHXq(8q-l_nb&UIuIqN9y{@VR zx3gbyv2H5)=yW&HpROcQP{+NLN4Wb9uQjbI{T^CDD@c7LU30}-9&D^66NtGO#v(*D z74Z{l>ZH$l!SIqfiRX|!DS60M3{4ovnWfX|PAZYX2I?YGsIC=`7 zv4Xpn`md^Z%^RtRQ`r{ChbW>uY1t842T)nlx{Nwt7q~#LTs0^|{#=B4$7)apRvTyy z8LLo~2Th%|T@6@UE|xbgGY!;pYf%5afKiJ_MO|41BGC%J|YYy6_D~YO_V_KD{5hPM=kU3 z+}f^+d9L$p*BMK~CYG=o5>`J1(2-F2&Jtd6OIRI)71xYiSD7VYGfP+l32Pn#=tx-p z&JzB|En!UzKDt)IpTJ4Zkk&#%t!qf@D&ARwP)gw^Y8~gf#x%a4>Q=rppUrMQkr-y% zHJZjTd8!c|)uLKP$6B#=$B%x6ZNm=jK&>mZN8Q{4ON6!vJRE~3wO~YB7r&cCP^_~e z>!WpUwVjZ+yC)SAoV!2M#HT{vTX<6NJm#Xh|^D0hY^D!6N z<;{R7lWT<*%0d5-w#6n?w}qM@3Yszh10w zddhsoC91w_oMRJ?tG`^gqP;@YuRMmXDwfo^645q@4c$$$L%p_JDRx7-z_R0Nni2u1l=R{G#;h8n9CAj*~jKEUDUB~zsP?{7a zNKTJ~?hN#l*ELTMTI;~rv@tQ(=oJUGaMz>IW4FPcWC z+mP`a8Zr*H-C%3JkNabpL%fC_Ndvn9*of9F!dyqba6}wwMEGJ6yv$f$)_Jg-<@mF% zN5#>`4yxPZ8m>p(N;EH#l63tI*1Eb)E|N;0YXFua5#>e~)Wk_jJ0^}bmXmo8NbD(V zk4uYaiQ(iH(pp)=sx|{#gFISIh>6A)s$1_8_?a6Ew3)Wq6Mm~5%I#JtcZgQ(k)5J5 zvUQp06zy_FiYqnRUE;3BQL2l&7Nxh{LRyO}500^=U7@{*?sB1J)H&9Pt)laol@7~= zziyjL#x56?D9M;~qnX|jWf8`=Agdj zpx6s{i@Uq`W81}wXRQ{;9pHr1zbHt%N8Hnm9FQ(y%l0DW+8yO1v-!_pxZ)eYsj(jD zv+`kBtu#bxR>W|Y4}H9$CSpUeJ*dZSN3p;hB%6x~R3#+JFM%8L?TkdOXXh|+vD?e+ zdYK&)O6rS!%#N$#gg9>Wqh<`Cpso`T>6lb>ly*{_?0$|-LPGHyn#3F=8_OiF!X)^X z`EHBUZMj98m{O8kHgWY@n;wLrj!ngp)=r62mQBcyenXp>!zC^(n;3#k*cxn`R^Osc zOex7No49(dO`qk_K+^deYR()a8%uMpLUZJnw&vxxs5w(ga!YfrUaR?IFvl5<*PKb# zbkae6zla)gP(Lc7igWnwBC0rtuM|PotNhDq%((8mymL@!5bsr zKrW!j`B^eNwhuESwjad;_miD34x%a{N6DfoJE~k$sA$cOPq>1xXwZ%h7q)2AjxVv6 z_5xNiYvK|zPkUT8l+<$;lAF$arj+E?xNudZ#H5`0@uQcJxY>*=ZjmulN^*-aSKW+} ztk{ezZ;>%mUgE-H%#fQgHgubD^(``H%1c~Wj2Ut>#vX1nUVe*=neq}B7Gs9ojIk@( zjF;F2ZaR2Od5H^)F+)Yh#vKSmZ3>zARFfxyICt%+U5zplqpu^JkkjZw@BRS&h zpK%?_Zkz?(D^9<=ET|-9Q5MAXj{I1ZS1OtK#@p+JD>3YHE4KKxge0oQ`BL{0=BNpB69-$h$|1>Qa7E^Fti&RvP%O}t{< z$zhtuDJJ*fh9>_e^G)>93M*F?-)f7TV}-$geYo*s234_$~LM#)9*D!DTr# zK@{hpk33mx=f(LQ_guYt^|eT#F%U2gGM`udjRC(6Zb{(C%liTrcM9W6!CKr{739Tu zY>E^GF6P45tFd8bv;}Q@NAK9HaEgZu%M_jKXl`w8Z*6Zw*3K`^Gbq1^O>e^`qDJHf z3%ECo=FN0=CdWOV2GP&4Q*Ia^r6=*-1Ky?$`^E>6qtP>{{|q_JhP@eMk~`yqPRh}0 zHCTofhJLBE6FV3nj+*!`X4%0{)*VU`zGX<5ZQ_0qFQ1l;%e|K7ep=}%`26%0Zxyubd43A8pB_UQp)V^8 zKd&(7?|B$*mQp_F8S?w-wCwr!vV1`Hd`6Z}$)3lgZa-y+E&q9%A3&eh_tZ)D!7+|(y3NdR8l8!J@C0g@5RR} zgpsUyF>qz{yc(f8`Wnitgddgg*CqU23I9;SKb7z=C9Eh+rAW9^mSeK~16e*tud0Wl zti@%T^uDPo^q+RETK%!A(s3D=?^}5sT63Hz^gWETLJdk89rr2th{i3eP=@F>l$F#b z%WhdFWH~6y!?K)^WfG-AX_VD;R+e8y>6h?o`UQPYiIbvK`&+3@sr7dP{&U|>x}PSM z1U-nJtD)_2-%n_jB9xy4e$saZ@V|S!N||E#L(2VVtpxrJs#IPCyaJ`-t)v%eP+1N5 zC2s<=k0pW+K2eoZztW;yrYAhzDF2pvP~NZfqx`gTKv^Ms)}kx`9`N3$Y?K)0_OS8` z+N{RGt;hQz;D6|8L7#j4A4A#WeM+gNgY-1Y_kdF^JwwkZgUY@BXVLRn@0XOr%01qf z0Ppa}l?i2a+vfi>m940x&nte_ zPxI2Q^>l{*!Lym}rXP5kvAVsjHj_qIQLdqNz-*w+DC4A~Y^VEB?xYW(?4`$0-YM~; zC=+y%UiS1-ie5*_Jd?6aQI5XvxnH(EAu%sX_zejw3RA6DxPL;HNm<@6%O_;{qAcH# zWt936jT1^ndB5^CWsN$lo={Eo5%nXgcfne_5VrQU53$QDv~zt%{TDg+7USRuT-HkG z^!%VTQ=KZFpHbfgw`=)*aS48ZEonViSNG6*We;`YPT(HIeHiyR?ipnQ_z4Mr1kd%% zXV>nzlPB9+t*8BHYeUrl+HR%6{%m1ZH(?&LF&Y#*UX|~#e+O20h4HUAeQ|)vlnJMUF zg*k|Ar-UQ|z*6j`7tJY;bx@p$|W2%tRchiiX zKbaWq9UP?5`5Xi_4-V5*GM{v+y+$UZOHFdk`}C}Crc;!dnxe$qoSvN;FwEIxKCe&F z-ub+q!Vgd+!vlIQmz>dQFni88gGXOFH)rJ7ol?I(qaeXTHlLo=$L8ns{mJYU8u#gW zt__&Rtc_uxj$)%m<3JjPtz@r}%^9c;&mBz87O^81Lpo|=w1(1Io%%1#na~B!XTI>S zDW8@;I`x`*G7s|fY$3ydGtw3Z>NRHPAk>t0qkSroN7gV|K+isXvM@8l7L{-Z3z^Jf zOd^-lXD2iBW9huR<5<#!+XwJN9{s#wo+)u~`m?D=bd&YIzHu-+ExpbWmAPRrcxXC3 zQ!tYpc_k(z`t)dWTF=jqVDxh(yk)BFJfdfk7bN6rcQiX>B5qRo5}{)>VYuHp-OM{?jq$I|5~i7)=axK% zKX<3j@Z3BZb0-J0`q@H~gPeCZY8%H+oy1RhbbMlt(kOusvbI^kyJ#9v1})9#lc!1S z@_049e!#{?k)ayEN72tf?w+M7$%B^nlZihAH}j;jQT(26FLDQ3Gl*X2ATI+RQ)ru& zveV#9+7U=HAt?>YtVJn$CCt)u7A6n{)!pEE0?!`iUc*of9GPkc8LEw6W8tTOFF<#; zqu92}YMYi+NpLT=R9h`+@N!|}j2#E=3~qzYql`jlmdLtAanI8nBtV~vBe03>khWK_ zz7_^rYs{zAw}<;{Y~vJYhj80=gK82S^T6Op*cqY(TG(sz_{AOTHUmobqlsG5wywmP zWm7|l`asV-QYalNrZGV?FEyn2fbA7H#aQ zl5DnGX<52g4sGl&)`4kQhU~w}>2LX92KdufOK%9$_%8};(x6V_&Oz#|w0a)+7Ti|M z7N8UJv?7T0 zN3R&HzYVcp>M;TjBrs;z^wowynSib*G3p5#Vfs32{M{q9$ggeeXZ8(8D*MI2jN%Az zW)-)^u+G9+ zrSPx-?Ms(j&7L35q z1Wmxyy)b$l1Jj40VaM->1A6IBTR#ph6Z%@=&h}VKlZoez>{~p6lmk3u?<|cMJm%{5 z*7erY=qNNwLZ36}Yb}tx#97PEdElmiWeuze?dG<4@Kcx$JdMu~^(H{!Oj4eHEMW>a zKY2mrP~t_@;^}C*DBxDPc`Rz#eDff@o7%7$G-EQHz*3NaMk#3EmZx8{EYP46&L!&_ zrJhMdBrln~@L2J9eMBwNt&FD?Pb}V0#t{n)9RS3WkjnaK5L1q!L-1-29;3hzrU@{C zefD!mP8hE9#Gybx9hMXaQJ2s=+TUu~zv0@=z<@2hA@E{pFEN|@vC#0S@uYT^B;Hba zezJaSJKou~^DZ|Sn=3vcOTE19A zD$9ab27lx!BYO0IUu@`q{9^AX)D7={8v%J|wM4buS;P_2KU6BBD|1GVTTAr)XS zRG|hyh^rP2R(TB%MuR3?D<)Jw%&J;=5Xbwfg@<9|T3-+)Y=lv;3g!fSQB?^B{jG|k ztRqiI3BVEf0}#a! zB)~m^Rz-!#Fr;V{1eaPssz%Tmoyp^uw}PiyPCl6NRFLnWH;Q*S>e^bE055t;3DyRq zDhMkz1+}mb1FD9D1d7j!h0m9fTD9m9OTMawuZo42!qrs^FLN{g+29M6)m3Sw zx~kx*IxDrST}G&;p$KRqtbLb!SqTG@QCA15SJ$H}eHKJfLN>uPQVgYb&t zA)1f$ndCgb4hS+u6g^fcv|_0f9zGl>S*uoZtw1FPi>#T2UY{B6R0jg0nsqTiH|0-kQPGY$G zFX-|lJ)28m>~(o4m#tSDD0;h__Wud2%CU;$FddPp+!1WRBY*~F-hC3!gERn`uNS;;U9qCr;$^{v zH?7tM)-uNJs(kcGoVB4k=T+V`IUV9_BQe#OOr-b>=RP;c4)kg74>2he=)_4SZ`w1^ z$T|;~IDJL-an2X5)PbxW^A^SjGf_fenB~jBQd(PjTR*R>J#A5L&hEq(w zMkFssHlOKoNGez-E2ZZ|m#<)+=+AcZVZy|d6OEEZ z?^bp*(iWM7Kt>F2%N2R*osrzwA9L^%TQ-CAD33l-+;>UY!#18rf@M4Y;F{&tUq=UP zoDP9Er*78Kp=8yq`Sd+Fi7J>$ZeG`Vw&d41wPO?~X&au~ad*S#oj8-GpvP8VIdSZe z_-Tf;& zg$D8tG#>nbD_49hJe$VbuXjjsH z%^U@TY_6xiU}ksZQm6IVWUgt}d1=^`GG=!qbF$lGX*yQok P5<1rY+h_XkEGGIt9XKm6 literal 13312 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 E0#{T9;Q#;t delta 1401 zcmYk6Yiv_x7{~wbyI$E1$I7;DbJY&rr5jy025uyvt z!UH|z&pJ<3H~o_GpZw<43v-{h1#CSP%L1_Ma7ded1wap9`uM8SR+>^y$!X)%6Bc7@ zPk-&sE+W)%ssc@j?!@txI!WZQ_#9Q8@Q0{VPS)d$ze98CG-CSmXh1qm}5r%X7T_z z$KW#Z;thEhIhQwoJ%0;%g4}J?-%4JvB!EYZfSZB4t?ahJm1GmUxYgh)@)zVbUZj49 z9`ZyMuxNB-E%{O|Fl*F%$ydnZWc}yk6#N5b%;^E%JcmGpR;uTffqr@uj#AB-q+0MY z)rx~u8=_P@I;bnya3B+RQnN5Z%|;jXCNxv?aEh9*yaOlc3ss~@sZ(jO(nP5$D#I=o zxm0u9SWmwOz0}*3uTZ`cO^j42t;P(!ho=K-P)@B?m22Ur_o}A*R850gfa}y+Z$cZh z&1j`=#PigUGF#yA>{I%R(hrmZ+5vO9KQwrMAUqgEJP>|1 zh)5vz6naC5hcFlm^zK2pGZ02pmtKy6zF>Q>AE5{aA_(;LMG@N{3Hk%kJ;5mA!KgNC zDbc>QxMUn!y>+K{)Y|R(X{q(vGrwK=Bdwi#=l8j@x$!RNqlY?jlIh)!&bpP6Uai3P zr)%DOv3YNu?fg=7m4;`7W_9jFIzYto?=gw`Bcp8~f?-qw&oAC`MU~;m< z;aa|O4`#EQ9y5eIQ!2owI{BQKDL{J`GhUUk3f!S*Zbz(!nGQSOX>Wk5Wawvg*ep0r zEOzR}AOC6;S0Gl)lC4I@DbJK;^655OkYho)8TnFJF!Z+RIc=fgh1C*urv3F0rjS5k z4HqLZ~Oq)$#^%PBhNeczDMn_g$tK2@md2K*#>wVMmc}V2iAk18$;qkan>F|{SpAI|k{Oa1 z%ovOr%z@aF!H~g}!3Zdp0wm2CQh_WJu(&0dGzF5$K$S^AmBv6dCJc#Sb`nrD8K~NP J^L=4OHURuMGByAJ delta 194 zcmZoLX)u}4!E*P_^eY>CN|*&KE56KJeCmP6zSTch`)2Ov-z+HhfpHVt3pPxdA3Pk4 z8mY-9Dds83MrNt0MrkRQW+_Pq2F8g=#))RhhKXtB2B`){7M3PSmYX&BGFbgn8Il=H z7*ZI_fjF7Lh{22@6$p(O(tvzRATNa>iNOE}jTsVwED&i1RA&gJ(|~#mfNBkZsx5$O OO@Q*2o9_!NvH<`FIXZIy diff --git a/STCompiler.Simulator/obj/Debug/net8.0/refint/STCompiler.Simulator.dll b/STCompiler.Simulator/obj/Debug/net8.0/refint/STCompiler.Simulator.dll index 088f46af2d461a6405df6f555f1a9f3d66aef1ae..7d392da072fd9b42ff76f86afc7771ea92a8c534 100644 GIT binary patch delta 194 zcmZoLX)u}4!Ln3#{*H}3CCmaG2@5u+{b+FNEad0)OU=pOEGYJYaTD7MHcXixJRFP~ z#>q)$#^%PBhNeczDMn_g$tK2@md2K*#>wVMmc}V2iAk18$;qkan>F|{SpAI|k{Oa1 z%ovOr%z@aF!H~g}!3Zdp0wm2CQh_WJu(&0dGzF5$K$S^AmBv6dCJc#Sb`nrD8K~NP J^L=4OHURuMGByAJ delta 194 zcmZoLX)u}4!E*P_^eY>CN|*&KE56KJeCmP6zSTch`)2Ov-z+HhfpHVt3pPxdA3Pk4 z8mY-9Dds83MrNt0MrkRQW+_Pq2F8g=#))RhhKXtB2B`){7M3PSmYX&BGFbgn8Il=H z7*ZI_fjF7Lh{22@6$p(O(tvzRATNa>iNOE}jTsVwED&i1RA&gJ(|~#mfNBkZsx5$O OO@Q*2o9_!NvH<`FIXZIy