From bdee19419dc879274e82afdd621b54e1923e0940 Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 12 Oct 2025 19:06:28 +0200 Subject: [PATCH] Neue Architektur --- .vscode/launch.json | 42 + .vscode/settings.json | 4 + .vscode/tasks.json | 37 + STCompiler.Common/Bytecode.cs | 70 ++ STCompiler.Common/Class1.cs | 6 + STCompiler.Common/STCompiler.Common.csproj | 9 + STCompiler.Common/VarType.cs | 15 + .../Debug/net8.0/STCompiler.Common.deps.json | 23 + .../bin/Debug/net8.0/STCompiler.Common.dll | Bin 0 -> 8192 bytes .../bin/Debug/net8.0/STCompiler.Common.pdb | Bin 0 -> 10828 bytes ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../net8.0/STCompiler.Common.AssemblyInfo.cs | 22 + ...STCompiler.Common.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 13 + .../STCompiler.Common.GlobalUsings.g.cs | 8 + .../net8.0/STCompiler.Common.assets.cache | Bin 0 -> 150 bytes ...iler.Common.csproj.CoreCompileInputs.cache | 1 + ...ompiler.Common.csproj.FileListAbsolute.txt | 11 + .../obj/Debug/net8.0/STCompiler.Common.dll | Bin 0 -> 8192 bytes .../obj/Debug/net8.0/STCompiler.Common.pdb | Bin 0 -> 10828 bytes .../Debug/net8.0/ref/STCompiler.Common.dll | Bin 0 -> 6656 bytes .../Debug/net8.0/refint/STCompiler.Common.dll | Bin 0 -> 6656 bytes ...STCompiler.Common.csproj.nuget.dgspec.json | 67 ++ .../STCompiler.Common.csproj.nuget.g.props | 15 + .../STCompiler.Common.csproj.nuget.g.targets | 2 + STCompiler.Common/obj/project.assets.json | 72 ++ STCompiler.Common/obj/project.nuget.cache | 10 + STCompiler.Compiler/Program.cs | 877 ++++++++++++++++++ .../STCompiler.Compiler.csproj | 14 + .../bin/Debug/net8.0/STCompiler.Common.dll | Bin 0 -> 8192 bytes .../bin/Debug/net8.0/STCompiler.Common.pdb | Bin 0 -> 10828 bytes .../bin/Debug/net8.0/STCompiler.Compiler | Bin 0 -> 77288 bytes .../net8.0/STCompiler.Compiler.deps.json | 36 + .../bin/Debug/net8.0/STCompiler.Compiler.dll | Bin 0 -> 27136 bytes .../bin/Debug/net8.0/STCompiler.Compiler.pdb | Bin 0 -> 18520 bytes .../STCompiler.Compiler.runtimeconfig.json | 12 + STCompiler.Compiler/input.st | 16 + ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../STCompiler.Compiler.AssemblyInfo.cs | 22 + ...Compiler.Compiler.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 13 + .../STCompiler.Compiler.GlobalUsings.g.cs | 8 + .../net8.0/STCompiler.Compiler.assets.cache | Bin 0 -> 150 bytes ...er.Compiler.csproj.AssemblyReference.cache | Bin 0 -> 458 bytes .../STCompiler.Compiler.csproj.CopyComplete | 0 ...er.Compiler.csproj.CoreCompileInputs.cache | 1 + ...piler.Compiler.csproj.FileListAbsolute.txt | 18 + .../obj/Debug/net8.0/STCompiler.Compiler.dll | Bin 0 -> 27136 bytes ...STCompiler.Compiler.genruntimeconfig.cache | 1 + .../obj/Debug/net8.0/STCompiler.Compiler.pdb | Bin 0 -> 18520 bytes STCompiler.Compiler/obj/Debug/net8.0/apphost | Bin 0 -> 77288 bytes .../Debug/net8.0/ref/STCompiler.Compiler.dll | Bin 0 -> 9728 bytes .../net8.0/refint/STCompiler.Compiler.dll | Bin 0 -> 9728 bytes ...Compiler.Compiler.csproj.nuget.dgspec.json | 130 +++ .../STCompiler.Compiler.csproj.nuget.g.props | 15 + ...STCompiler.Compiler.csproj.nuget.g.targets | 2 + STCompiler.Compiler/obj/project.assets.json | 95 ++ STCompiler.Compiler/obj/project.nuget.cache | 10 + STCompiler.Compiler/output.bin | Bin 0 -> 149 bytes STCompiler.Disassembler/Program.cs | 76 ++ .../STCompiler.Disassembler.csproj | 14 + .../bin/Debug/net8.0/STCompiler.Common.dll | Bin 0 -> 8192 bytes .../bin/Debug/net8.0/STCompiler.Common.pdb | Bin 0 -> 10828 bytes .../bin/Debug/net8.0/STCompiler.Disassembler | Bin 0 -> 77288 bytes .../net8.0/STCompiler.Disassembler.deps.json | 36 + .../Debug/net8.0/STCompiler.Disassembler.dll | Bin 0 -> 8192 bytes .../Debug/net8.0/STCompiler.Disassembler.pdb | Bin 0 -> 12036 bytes ...STCompiler.Disassembler.runtimeconfig.json | 12 + ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../STCompiler.Disassembler.AssemblyInfo.cs | 22 + ...iler.Disassembler.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 13 + .../STCompiler.Disassembler.GlobalUsings.g.cs | 8 + .../STCompiler.Disassembler.assets.cache | Bin 0 -> 150 bytes ...isassembler.csproj.AssemblyReference.cache | Bin 0 -> 458 bytes ...TCompiler.Disassembler.csproj.CopyComplete | 0 ...isassembler.csproj.CoreCompileInputs.cache | 1 + ...r.Disassembler.csproj.FileListAbsolute.txt | 18 + .../Debug/net8.0/STCompiler.Disassembler.dll | Bin 0 -> 8192 bytes ...mpiler.Disassembler.genruntimeconfig.cache | 1 + .../Debug/net8.0/STCompiler.Disassembler.pdb | Bin 0 -> 12036 bytes .../obj/Debug/net8.0/apphost | Bin 0 -> 77288 bytes .../net8.0/ref/STCompiler.Disassembler.dll | Bin 0 -> 5632 bytes .../net8.0/refint/STCompiler.Disassembler.dll | Bin 0 -> 5632 bytes ...iler.Disassembler.csproj.nuget.dgspec.json | 130 +++ ...Compiler.Disassembler.csproj.nuget.g.props | 15 + ...mpiler.Disassembler.csproj.nuget.g.targets | 2 + .../obj/project.assets.json | 95 ++ .../obj/project.nuget.cache | 10 + STCompiler.Simulator/Program.cs | 123 +++ .../STCompiler.Simulator.csproj | 11 + .../bin/Debug/net8.0/STCompiler.Common.dll | Bin 0 -> 8192 bytes .../bin/Debug/net8.0/STCompiler.Common.pdb | Bin 0 -> 10828 bytes .../bin/Debug/net8.0/STCompiler.Simulator | Bin 0 -> 77288 bytes .../net8.0/STCompiler.Simulator.deps.json | 36 + .../bin/Debug/net8.0/STCompiler.Simulator.dll | Bin 0 -> 10752 bytes .../bin/Debug/net8.0/STCompiler.Simulator.pdb | Bin 0 -> 12380 bytes .../STCompiler.Simulator.runtimeconfig.json | 12 + ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../STCompiler.Simulator.AssemblyInfo.cs | 22 + ...ompiler.Simulator.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 13 + .../STCompiler.Simulator.GlobalUsings.g.cs | 8 + .../net8.0/STCompiler.Simulator.assets.cache | Bin 0 -> 150 bytes ...r.Simulator.csproj.AssemblyReference.cache | Bin 0 -> 458 bytes .../STCompiler.Simulator.csproj.CopyComplete | 0 ...r.Simulator.csproj.CoreCompileInputs.cache | 1 + ...iler.Simulator.csproj.FileListAbsolute.txt | 18 + .../obj/Debug/net8.0/STCompiler.Simulator.dll | Bin 0 -> 10752 bytes ...TCompiler.Simulator.genruntimeconfig.cache | 1 + .../obj/Debug/net8.0/STCompiler.Simulator.pdb | Bin 0 -> 12380 bytes STCompiler.Simulator/obj/Debug/net8.0/apphost | Bin 0 -> 77288 bytes .../Debug/net8.0/ref/STCompiler.Simulator.dll | Bin 0 -> 6144 bytes .../net8.0/refint/STCompiler.Simulator.dll | Bin 0 -> 6144 bytes ...ompiler.Simulator.csproj.nuget.dgspec.json | 130 +++ .../STCompiler.Simulator.csproj.nuget.g.props | 15 + ...TCompiler.Simulator.csproj.nuget.g.targets | 2 + STCompiler.Simulator/obj/project.assets.json | 95 ++ STCompiler.Simulator/obj/project.nuget.cache | 10 + STCompiler.sln | 39 + 120 files changed, 2706 insertions(+) create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 STCompiler.Common/Bytecode.cs create mode 100644 STCompiler.Common/Class1.cs create mode 100644 STCompiler.Common/STCompiler.Common.csproj create mode 100644 STCompiler.Common/VarType.cs create mode 100644 STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.deps.json create mode 100644 STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.dll create mode 100644 STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.pdb create mode 100644 STCompiler.Common/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfo.cs create mode 100644 STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfoInputs.cache create mode 100644 STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.GlobalUsings.g.cs create mode 100644 STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.assets.cache create mode 100644 STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.csproj.CoreCompileInputs.cache create mode 100644 STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.csproj.FileListAbsolute.txt create mode 100644 STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.dll create mode 100644 STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.pdb create mode 100644 STCompiler.Common/obj/Debug/net8.0/ref/STCompiler.Common.dll create mode 100644 STCompiler.Common/obj/Debug/net8.0/refint/STCompiler.Common.dll create mode 100644 STCompiler.Common/obj/STCompiler.Common.csproj.nuget.dgspec.json create mode 100644 STCompiler.Common/obj/STCompiler.Common.csproj.nuget.g.props create mode 100644 STCompiler.Common/obj/STCompiler.Common.csproj.nuget.g.targets create mode 100644 STCompiler.Common/obj/project.assets.json create mode 100644 STCompiler.Common/obj/project.nuget.cache create mode 100644 STCompiler.Compiler/Program.cs create mode 100644 STCompiler.Compiler/STCompiler.Compiler.csproj create mode 100644 STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Common.dll create mode 100644 STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Common.pdb create mode 100755 STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler create mode 100644 STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.deps.json create mode 100644 STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.dll create mode 100644 STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.pdb create mode 100644 STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.runtimeconfig.json create mode 100644 STCompiler.Compiler/input.st create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfo.cs create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfoInputs.cache create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.GlobalUsings.g.cs create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.assets.cache create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.csproj.AssemblyReference.cache create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.csproj.CopyComplete create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.csproj.CoreCompileInputs.cache create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.csproj.FileListAbsolute.txt create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.dll create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.genruntimeconfig.cache create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.pdb create mode 100755 STCompiler.Compiler/obj/Debug/net8.0/apphost create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/ref/STCompiler.Compiler.dll create mode 100644 STCompiler.Compiler/obj/Debug/net8.0/refint/STCompiler.Compiler.dll create mode 100644 STCompiler.Compiler/obj/STCompiler.Compiler.csproj.nuget.dgspec.json create mode 100644 STCompiler.Compiler/obj/STCompiler.Compiler.csproj.nuget.g.props create mode 100644 STCompiler.Compiler/obj/STCompiler.Compiler.csproj.nuget.g.targets create mode 100644 STCompiler.Compiler/obj/project.assets.json create mode 100644 STCompiler.Compiler/obj/project.nuget.cache create mode 100644 STCompiler.Compiler/output.bin create mode 100644 STCompiler.Disassembler/Program.cs create mode 100644 STCompiler.Disassembler/STCompiler.Disassembler.csproj create mode 100644 STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Common.dll create mode 100644 STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Common.pdb create mode 100755 STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler create mode 100644 STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.deps.json create mode 100644 STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.dll create mode 100644 STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.pdb create mode 100644 STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.runtimeconfig.json create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfo.cs create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfoInputs.cache create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.GlobalUsings.g.cs create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.assets.cache create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.csproj.AssemblyReference.cache create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.csproj.CopyComplete create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.csproj.CoreCompileInputs.cache create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.csproj.FileListAbsolute.txt create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.dll create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.genruntimeconfig.cache create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.pdb create mode 100755 STCompiler.Disassembler/obj/Debug/net8.0/apphost create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/ref/STCompiler.Disassembler.dll create mode 100644 STCompiler.Disassembler/obj/Debug/net8.0/refint/STCompiler.Disassembler.dll create mode 100644 STCompiler.Disassembler/obj/STCompiler.Disassembler.csproj.nuget.dgspec.json create mode 100644 STCompiler.Disassembler/obj/STCompiler.Disassembler.csproj.nuget.g.props create mode 100644 STCompiler.Disassembler/obj/STCompiler.Disassembler.csproj.nuget.g.targets create mode 100644 STCompiler.Disassembler/obj/project.assets.json create mode 100644 STCompiler.Disassembler/obj/project.nuget.cache create mode 100644 STCompiler.Simulator/Program.cs create mode 100644 STCompiler.Simulator/STCompiler.Simulator.csproj create mode 100644 STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Common.dll create mode 100644 STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Common.pdb create mode 100755 STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator create mode 100644 STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator.deps.json create mode 100644 STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator.dll create mode 100644 STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator.pdb create mode 100644 STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator.runtimeconfig.json create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfo.cs create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfoInputs.cache create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.GlobalUsings.g.cs create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.assets.cache create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.csproj.AssemblyReference.cache create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.csproj.CopyComplete create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.csproj.CoreCompileInputs.cache create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.csproj.FileListAbsolute.txt create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.dll create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.genruntimeconfig.cache create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.pdb create mode 100755 STCompiler.Simulator/obj/Debug/net8.0/apphost create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/ref/STCompiler.Simulator.dll create mode 100644 STCompiler.Simulator/obj/Debug/net8.0/refint/STCompiler.Simulator.dll create mode 100644 STCompiler.Simulator/obj/STCompiler.Simulator.csproj.nuget.dgspec.json create mode 100644 STCompiler.Simulator/obj/STCompiler.Simulator.csproj.nuget.g.props create mode 100644 STCompiler.Simulator/obj/STCompiler.Simulator.csproj.nuget.g.targets create mode 100644 STCompiler.Simulator/obj/project.assets.json create mode 100644 STCompiler.Simulator/obj/project.nuget.cache create mode 100644 STCompiler.sln diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..8754e4d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,42 @@ +{ + "version": "0.2.0", + "configurations": [ + + { + "name": "Launch STCompiler.Compiler", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + "program": "${workspaceFolder}/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler", + "args": ["${workspaceFolder}/STCompiler.Compiler/input.st", "${workspaceFolder}/STCompiler.Compiler/output.bin"], + "cwd": "${workspaceFolder}/STCompiler.Compiler", + "console": "integratedTerminal" + }, + { + "name": "Launch STCompiler.Disassembler", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + "program": "${workspaceFolder}/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler", + "args": ["${workspaceFolder}/STCompiler.Compiler/output.bin"], + "cwd": "${workspaceFolder}/STCompiler.Disassembler", + "console": "integratedTerminal" + }, + { + "name": "Launch STCompiler.Simulator", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + "program": "${workspaceFolder}/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator", + "args": ["${workspaceFolder}/STCompiler.Compiler/output.bin"], + "cwd": "${workspaceFolder}/STCompiler.Simulator", + "console": "integratedTerminal" + }, + { + "name": "Attach to .NET", + "type": "coreclr", + "request": "attach", + "processId": "${command:pickProcess}" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d640f0e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "csharp.suppressDotnetRestoreNotification": true, + "dotnet.defaultSolution": "${workspaceFolder}/STCompiler.sln" +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..02c4082 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,37 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": ["build", "${workspaceFolder}/STCompiler.sln"], + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": ["$msCompile"] + }, + { + "label": "run:compiler", + "type": "process", + "command": "dotnet", + "args": ["run", "--project", "${workspaceFolder}/STCompiler.Compiler/STCompiler.Compiler.csproj", "--", "${workspaceFolder}/STCompiler.Compiler/input.st", "${workspaceFolder}/STCompiler.Compiler/output.bin"], + "presentation": { "reveal": "always", "panel": "shared" } + }, + { + "label": "run:disassembler", + "type": "process", + "command": "dotnet", + "args": ["run", "--project", "${workspaceFolder}/STCompiler.Disassembler/STCompiler.Disassembler.csproj", "--", "${workspaceFolder}/STCompiler.Compiler/output.bin"], + "presentation": { "reveal": "always", "panel": "shared" } + }, + { + "label": "run:simulator", + "type": "process", + "command": "dotnet", + "args": ["run", "--project", "${workspaceFolder}/STCompiler.Simulator/STCompiler.Simulator.csproj", "--", "${workspaceFolder}/STCompiler.Compiler/output.bin"], + "presentation": { "reveal": "always", "panel": "shared" } + } + ] +} diff --git a/STCompiler.Common/Bytecode.cs b/STCompiler.Common/Bytecode.cs new file mode 100644 index 0000000..993aeb1 --- /dev/null +++ b/STCompiler.Common/Bytecode.cs @@ -0,0 +1,70 @@ +namespace STCompiler.Common; + +using System.Collections.Generic; + +public static class Bytecode { + public const string Magic = "STBC"; + public const ushort Version = 2; + + public static class OpCodes { + public const byte NOP = 0x00; + public const byte PUSH_CONST = 0x01; // integer/long + public const byte PUSH_REAL_CONST = 0x02; // float/double + public const byte LOAD_VAR = 0x03; + public const byte STORE_VAR = 0x04; + + // Signed integer arithmetic (SINT, INT, DINT, LINT) + public const byte ADD_SINT = 0x10; public const byte SUB_SINT = 0x11; public const byte MUL_SINT = 0x12; public const byte DIV_SINT = 0x13; + public const byte ADD_INT = 0x14; public const byte SUB_INT = 0x15; public const byte MUL_INT = 0x16; public const byte DIV_INT = 0x17; + public const byte ADD_DINT = 0x18; public const byte SUB_DINT = 0x19; public const byte MUL_DINT = 0x1A; public const byte DIV_DINT = 0x1B; + public const byte ADD_LINT = 0x1C; public const byte SUB_LINT = 0x1D; public const byte MUL_LINT = 0x1E; public const byte DIV_LINT = 0x1F; + + // Unsigned integer arithmetic (USINT, UINT, UDINT, ULINT) - moved to avoid conflicts + public const byte ADD_USINT = 0x22; public const byte SUB_USINT = 0x23; public const byte MUL_USINT = 0x24; public const byte DIV_USINT = 0x25; + public const byte ADD_UINT = 0x26; public const byte SUB_UINT = 0x27; public const byte MUL_UINT = 0x28; public const byte DIV_UINT = 0x29; + public const byte ADD_UDINT = 0x2A; public const byte SUB_UDINT = 0x2B; public const byte MUL_UDINT = 0x2C; public const byte DIV_UDINT = 0x2D; + public const byte ADD_ULINT = 0x2E; public const byte SUB_ULINT = 0x2F; public const byte MUL_ULINT = 0x30; public const byte DIV_ULINT = 0x31; + + // Floating point arithmetic + public const byte ADD_REAL = 0x40; public const byte SUB_REAL = 0x41; public const byte MUL_REAL = 0x42; public const byte DIV_REAL = 0x43; + public const byte ADD_LREAL = 0x44; public const byte SUB_LREAL = 0x45; public const byte MUL_LREAL = 0x46; public const byte DIV_LREAL = 0x47; + + // Comparisons signed + public const byte LT_S = 0x50; public const byte GT_S = 0x51; public const byte LE_S = 0x52; public const byte GE_S = 0x53; public const byte EQ_S = 0x54; public const byte NEQ_S = 0x55; + // Comparisons unsigned + public const byte LT_U = 0x56; public const byte GT_U = 0x57; public const byte LE_U = 0x58; public const byte GE_U = 0x59; public const byte EQ_U = 0x5A; public const byte NEQ_U = 0x5B; + // Comparisons floating + public const byte LT_F = 0x5C; public const byte GT_F = 0x5D; public const byte LE_F = 0x5E; public const byte GE_F = 0x5F; public const byte EQ_F = 0x60; public const byte NEQ_F = 0x61; + + // Control flow + public const byte JZ = 0x70; + public const byte JMP = 0x71; + + public const byte HALT = 0xF0; + } + + static readonly Dictionary names = new() { + { OpCodes.NOP, "NOP" }, + { OpCodes.PUSH_CONST, "PUSH_CONST" }, + { OpCodes.PUSH_REAL_CONST, "PUSH_REAL_CONST" }, + { OpCodes.LOAD_VAR, "LOAD_VAR" }, + { OpCodes.STORE_VAR, "STORE_VAR" }, + { OpCodes.ADD_SINT, "ADD_SINT" }, { OpCodes.SUB_SINT, "SUB_SINT" }, { OpCodes.MUL_SINT, "MUL_SINT" }, { OpCodes.DIV_SINT, "DIV_SINT" }, + { OpCodes.ADD_INT, "ADD_INT" }, { OpCodes.SUB_INT, "SUB_INT" }, { OpCodes.MUL_INT, "MUL_INT" }, { OpCodes.DIV_INT, "DIV_INT" }, + { OpCodes.ADD_DINT, "ADD_DINT" }, { OpCodes.SUB_DINT, "SUB_DINT" }, { OpCodes.MUL_DINT, "MUL_DINT" }, { OpCodes.DIV_DINT, "DIV_DINT" }, + { OpCodes.ADD_LINT, "ADD_LINT" }, { OpCodes.SUB_LINT, "SUB_LINT" }, { OpCodes.MUL_LINT, "MUL_LINT" }, { OpCodes.DIV_LINT, "DIV_LINT" }, + { OpCodes.ADD_USINT, "ADD_USINT" }, { OpCodes.SUB_USINT, "SUB_USINT" }, { OpCodes.MUL_USINT, "MUL_USINT" }, { OpCodes.DIV_USINT, "DIV_USINT" }, + { OpCodes.ADD_UINT, "ADD_UINT" }, { OpCodes.SUB_UINT, "SUB_UINT" }, { OpCodes.MUL_UINT, "MUL_UINT" }, { OpCodes.DIV_UINT, "DIV_UINT" }, + { OpCodes.ADD_UDINT, "ADD_UDINT" }, { OpCodes.SUB_UDINT, "SUB_UDINT" }, { OpCodes.MUL_UDINT, "MUL_UDINT" }, { OpCodes.DIV_UDINT, "DIV_UDINT" }, + { OpCodes.ADD_ULINT, "ADD_ULINT" }, { OpCodes.SUB_ULINT, "SUB_ULINT" }, { OpCodes.MUL_ULINT, "MUL_ULINT" }, { OpCodes.DIV_ULINT, "DIV_ULINT" }, + { OpCodes.ADD_REAL, "ADD_REAL" }, { OpCodes.SUB_REAL, "SUB_REAL" }, { OpCodes.MUL_REAL, "MUL_REAL" }, { OpCodes.DIV_REAL, "DIV_REAL" }, + { OpCodes.ADD_LREAL, "ADD_LREAL" }, { OpCodes.SUB_LREAL, "SUB_LREAL" }, { OpCodes.MUL_LREAL, "MUL_LREAL" }, { OpCodes.DIV_LREAL, "DIV_LREAL" }, + { OpCodes.LT_S, "LT_S" }, { OpCodes.GT_S, "GT_S" }, { OpCodes.LE_S, "LE_S" }, { OpCodes.GE_S, "GE_S" }, { OpCodes.EQ_S, "EQ_S" }, { OpCodes.NEQ_S, "NEQ_S" }, + { 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.HALT, "HALT" } + }; + + public static string OpName(byte op) => names.TryGetValue(op, out var s) ? s : ($"0x{op:X2}"); +} diff --git a/STCompiler.Common/Class1.cs b/STCompiler.Common/Class1.cs new file mode 100644 index 0000000..fb69ae9 --- /dev/null +++ b/STCompiler.Common/Class1.cs @@ -0,0 +1,6 @@ +namespace STCompiler.Common; + +public class Class1 +{ + +} diff --git a/STCompiler.Common/STCompiler.Common.csproj b/STCompiler.Common/STCompiler.Common.csproj new file mode 100644 index 0000000..fa71b7a --- /dev/null +++ b/STCompiler.Common/STCompiler.Common.csproj @@ -0,0 +1,9 @@ + + + + net8.0 + enable + enable + + + diff --git a/STCompiler.Common/VarType.cs b/STCompiler.Common/VarType.cs new file mode 100644 index 0000000..bee44f0 --- /dev/null +++ b/STCompiler.Common/VarType.cs @@ -0,0 +1,15 @@ +namespace STCompiler.Common; + +// Gemeinsame Variable types für Compiler, Disassembler und Simulator +public enum VarType { + // Boolean + BOOL = 1, + // Unsigned integers + BYTE = 2, WORD = 3, DWORD = 4, LWORD = 5, + // Signed integers + SINT = 6, INT = 7, DINT = 8, LINT = 9, + // Unsigned integers (alternative names) + USINT = 10, UINT = 11, UDINT = 12, ULINT = 13, + // Floating point + REAL = 14, LREAL = 15 +} diff --git a/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.deps.json b/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.deps.json new file mode 100644 index 0000000..bd6fa94 --- /dev/null +++ b/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.deps.json @@ -0,0 +1,23 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "STCompiler.Common/1.0.0": { + "runtime": { + "STCompiler.Common.dll": {} + } + } + } + }, + "libraries": { + "STCompiler.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..14398bb1a24eea5f311470744245c02259be73e3 GIT binary patch literal 8192 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 Yk6MAQ26&~RHWmJ&a+D@T3qg?o13gW^hyVZp literal 0 HcmV?d00001 diff --git a/STCompiler.Common/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/STCompiler.Common/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/STCompiler.Common/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfo.cs b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfo.cs new file mode 100644 index 0000000..6fdd837 --- /dev/null +++ b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("STCompiler.Common")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("STCompiler.Common")] +[assembly: System.Reflection.AssemblyTitleAttribute("STCompiler.Common")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfoInputs.cache b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfoInputs.cache new file mode 100644 index 0000000..dc208ce --- /dev/null +++ b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +47f7f9783b0890c01839d6f882aac21cc3b1825ebf07d1532f3ffeb6d47e1764 diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.GeneratedMSBuildEditorConfig.editorconfig b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..d99edfe --- /dev/null +++ b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = STCompiler.Common +build_property.ProjectDir = /home/martin/Projects/STCompiler/STCompiler.Common/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.GlobalUsings.g.cs b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.assets.cache b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..4c96e865301337de7fbb08eb99d77920f3a8f783 GIT binary patch literal 150 zcmWIWc6a1qU|_ghz4LYlYvuu)C8wH=uLVacC7N$AewD0R<k literal 0 HcmV?d00001 diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.csproj.CoreCompileInputs.cache b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..669064f --- /dev/null +++ b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +1c21a086cd38f15730e5b6283c22981505869f5cda3497f26cde2d0f5d493189 diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.csproj.FileListAbsolute.txt b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..3957222 --- /dev/null +++ b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.csproj.FileListAbsolute.txt @@ -0,0 +1,11 @@ +/home/martin/Projects/STCompiler/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.deps.json +/home/martin/Projects/STCompiler/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.dll +/home/martin/Projects/STCompiler/STCompiler.Common/bin/Debug/net8.0/STCompiler.Common.pdb +/home/martin/Projects/STCompiler/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.GeneratedMSBuildEditorConfig.editorconfig +/home/martin/Projects/STCompiler/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfoInputs.cache +/home/martin/Projects/STCompiler/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.AssemblyInfo.cs +/home/martin/Projects/STCompiler/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.csproj.CoreCompileInputs.cache +/home/martin/Projects/STCompiler/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.dll +/home/martin/Projects/STCompiler/STCompiler.Common/obj/Debug/net8.0/refint/STCompiler.Common.dll +/home/martin/Projects/STCompiler/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.pdb +/home/martin/Projects/STCompiler/STCompiler.Common/obj/Debug/net8.0/ref/STCompiler.Common.dll diff --git a/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Common/obj/Debug/net8.0/STCompiler.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..14398bb1a24eea5f311470744245c02259be73e3 GIT binary patch literal 8192 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 Yk6MAQ26&~RHWmJ&a+D@T3qg?o13gW^hyVZp literal 0 HcmV?d00001 diff --git a/STCompiler.Common/obj/Debug/net8.0/ref/STCompiler.Common.dll b/STCompiler.Common/obj/Debug/net8.0/ref/STCompiler.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..7718b6bb248b333a90bae87182e7705a76009046 GIT binary patch literal 6656 zcmeI04UAM*701t+of(z|mff}=e?QT zWoxS@O`4{6_x;|v=bm@&x#zui=ib+`bw5=Qkr&6cYeXk-mJ(9FGe*!{z2MnuIzIV@ zn@@1;g_{#Q(}h6Z&JEf|CXh0+*<3NuZwBn4Y#^NtM7rXEOm2r6oHnhh(RJM&C5o|^ zwl$tPS?cXPEeuTIW;lnY($PNNfpZ8)00&Wxo;^<7qLBEt90uJ=1#SPVn9Bd?*{zBS zB?P}+B5WtJBoWt_5u&NkHNtN0^=EOS<9W`&_@<{!AI1vmnea`>;UGfhIr9VX9o*n zaiPkYz8aEox(He3$cA;v_6W{bQ9p;^8d|MfzZj!n3gb=lh$hQic7>PGEGPb2RM8D3 z92<>Dep2E%rsI$?mJXuVDx5Le;Cu!inbhL!Egjmj-bLzxDd z?gMAiu(BGDZ39ihbK8WYhL(bLv>dF5$4ab^)_?(O0~;};RMHaa0Gp@>Y^F`%a@q#2 zAOl=Q17L{m1tXLP*V7Q**cd$kcGDg(L3_c?Gy-m;ec*O_7~DaRfII0?(4xi z(wD&9v>)6; zZ-Pg0_R(?rE_ebpADyIQ;E$p6(NF0I;PYtl(J$y(@GRPWbdG)mz62{Dy-cUU^RV^N zEA$+A0ay6wBAo#*;W{6^NxuXy<7yvWrC)=@=Rhz27Odo#z^VLuu!dg->-djgJ)Z~X z@}I!~zXCS$U%(}N0c_&ez-GP(F6Y<56?_R?#s2_9{3aOTe}U`yG8p44U^ic-#gwAw zIY?7z1~>yf1nDMP2{z#F2kACk7o=sFm4dXA4uNfS1pEYj4~(n+Zmk3Eudc!>wPjvM}RYDYTi6X91#3c&U1?$7Hgocugw09;n6i1Ry97%d{BnhQ# zrh-_hAVw;PO)^&YrIPwmNqwoL!!MbYt;$Aan`FFX< zP3j!7tnr#~pHwvIMy&>*n?(qEjGO7{W<&IQ4b~iwQ0-jHSIz=mz~(yo*l^9 z8Ka0s!}^a_ZMp0~dT_{AyHO`S=0MySFpI-Icq0m<`nFsqpSIMv$Fz*yDvfC`Mb>TO zT}l;4FDwlj{mHg-v;jStwwXYg#D8@z+71oAofA1t(9uE zz*l+nuD%Cre^d4G$~b=2S}{|4Jebzu$14+@S3W*?F$a=Y)~xv11||t)QpE2$fVD4q zrwC+O?UhdgURls$g(|ZtGkds#y%bp3(5K$GAPhWI=`#?u6*plGS(Q5_2G!mZ>1;I$7Clvi&Ge*19-9L$HpU5GR zCYI7Z%W3Ju&?1)AVWhK^DWot?Q=f8ay><(HT;I(^hwq6-b{_gUXk@&5O$=6WSWJy8 znkwBpZr+Z4nmod8si{~FsTXU2J}`oK-OP+@pA$cCRZ)_*2^X0e*gsad0LuM%iApe>-?z`8Jv)~xI1s5cL%jF^hB zN<%;RHlAW?(~NODf6J*~a)7n!4Y;-q{xVo~N*}`*k%5}2{^k8HwK~z+SSvZ2j2lHv zeUze);K~BlS`tfsT&(|%uV%boT#mmNzHE3K9d8SIZ!RDB-ii$}YsQLdn?>x_m=U~t zpFym@E&LHy_}HPsqlpZP7a3(9`H+zeVtp?2WB^A(`|NV{l5w#vjbCa`_WqZ?o%_%Y zpE<-cg!~o9j6(ML?|vVev9HGtYMhVjGdP+*!p=o<9Y%f&7;^?sgoV)t@HCFk`sg*1 X`}c7PIp2a0tbQNI_+e=8SqA}=e?QT zWoxS@O`4{6_x;|v=bm@&x#zui=ib+`bw5=Qkr&6cYeXk-mJ(9FGe*!{z2MnuIzIV@ zn@@1;g_{#Q(}h6Z&JEf|CXh0+*<3NuZwBn4Y#^NtM7rXEOm2r6oHnhh(RJM&C5o|^ zwl$tPS?cXPEeuTIW;lnY($PNNfpZ8)00&Wxo;^<7qLBEt90uJ=1#SPVn9Bd?*{zBS zB?P}+B5WtJBoWt_5u&NkHNtN0^=EOS<9W`&_@<{!AI1vmnea`>;UGfhIr9VX9o*n zaiPkYz8aEox(He3$cA;v_6W{bQ9p;^8d|MfzZj!n3gb=lh$hQic7>PGEGPb2RM8D3 z92<>Dep2E%rsI$?mJXuVDx5Le;Cu!inbhL!Egjmj-bLzxDd z?gMAiu(BGDZ39ihbK8WYhL(bLv>dF5$4ab^)_?(O0~;};RMHaa0Gp@>Y^F`%a@q#2 zAOl=Q17L{m1tXLP*V7Q**cd$kcGDg(L3_c?Gy-m;ec*O_7~DaRfII0?(4xi z(wD&9v>)6; zZ-Pg0_R(?rE_ebpADyIQ;E$p6(NF0I;PYtl(J$y(@GRPWbdG)mz62{Dy-cUU^RV^N zEA$+A0ay6wBAo#*;W{6^NxuXy<7yvWrC)=@=Rhz27Odo#z^VLuu!dg->-djgJ)Z~X z@}I!~zXCS$U%(}N0c_&ez-GP(F6Y<56?_R?#s2_9{3aOTe}U`yG8p44U^ic-#gwAw zIY?7z1~>yf1nDMP2{z#F2kACk7o=sFm4dXA4uNfS1pEYj4~(n+Zmk3Eudc!>wPjvM}RYDYTi6X91#3c&U1?$7Hgocugw09;n6i1Ry97%d{BnhQ# zrh-_hAVw;PO)^&YrIPwmNqwoL!!MbYt;$Aan`FFX< zP3j!7tnr#~pHwvIMy&>*n?(qEjGO7{W<&IQ4b~iwQ0-jHSIz=mz~(yo*l^9 z8Ka0s!}^a_ZMp0~dT_{AyHO`S=0MySFpI-Icq0m<`nFsqpSIMv$Fz*yDvfC`Mb>TO zT}l;4FDwlj{mHg-v;jStwwXYg#D8@z+71oAofA1t(9uE zz*l+nuD%Cre^d4G$~b=2S}{|4Jebzu$14+@S3W*?F$a=Y)~xv11||t)QpE2$fVD4q zrwC+O?UhdgURls$g(|ZtGkds#y%bp3(5K$GAPhWI=`#?u6*plGS(Q5_2G!mZ>1;I$7Clvi&Ge*19-9L$HpU5GR zCYI7Z%W3Ju&?1)AVWhK^DWot?Q=f8ay><(HT;I(^hwq6-b{_gUXk@&5O$=6WSWJy8 znkwBpZr+Z4nmod8si{~FsTXU2J}`oK-OP+@pA$cCRZ)_*2^X0e*gsad0LuM%iApe>-?z`8Jv)~xI1s5cL%jF^hB zN<%;RHlAW?(~NODf6J*~a)7n!4Y;-q{xVo~N*}`*k%5}2{^k8HwK~z+SSvZ2j2lHv zeUze);K~BlS`tfsT&(|%uV%boT#mmNzHE3K9d8SIZ!RDB-ii$}YsQLdn?>x_m=U~t zpFym@E&LHy_}HPsqlpZP7a3(9`H+zeVtp?2WB^A(`|NV{l5w#vjbCa`_WqZ?o%_%Y zpE<-cg!~o9j6(ML?|vVev9HGtYMhVjGdP+*!p=o<9Y%f&7;^?sgoV)t@HCFk`sg*1 X`}c7PIp2a0tbQNI_+e=8SqA + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + /home/martin/.nuget/packages/ + /home/martin/.nuget/packages/ + PackageReference + 6.8.1 + + + + + \ No newline at end of file diff --git a/STCompiler.Common/obj/STCompiler.Common.csproj.nuget.g.targets b/STCompiler.Common/obj/STCompiler.Common.csproj.nuget.g.targets new file mode 100644 index 0000000..3dc06ef --- /dev/null +++ b/STCompiler.Common/obj/STCompiler.Common.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/STCompiler.Common/obj/project.assets.json b/STCompiler.Common/obj/project.assets.json new file mode 100644 index 0000000..12d34a8 --- /dev/null +++ b/STCompiler.Common/obj/project.assets.json @@ -0,0 +1,72 @@ +{ + "version": 3, + "targets": { + "net8.0": {} + }, + "libraries": {}, + "projectFileDependencyGroups": { + "net8.0": [] + }, + "packageFolders": { + "/home/martin/.nuget/packages/": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj", + "projectName": "STCompiler.Common", + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj", + "packagesPath": "/home/martin/.nuget/packages/", + "outputPath": "/home/martin/Projects/STCompiler/STCompiler.Common/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/home/martin/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.20, 8.0.20]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/8.0.120/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/STCompiler.Common/obj/project.nuget.cache b/STCompiler.Common/obj/project.nuget.cache new file mode 100644 index 0000000..a2b432f --- /dev/null +++ b/STCompiler.Common/obj/project.nuget.cache @@ -0,0 +1,10 @@ +{ + "version": 2, + "dgSpecHash": "jt2HMehc3BneQxy6gmHmXdh6VZS/3dtjkNjH2GR4yNPSBFcEqtHnBMxfL4LgGBL/hoFiIYvAdg6xhIGGboFt/w==", + "success": true, + "projectFilePath": "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj", + "expectedPackageFiles": [ + "/home/martin/.nuget/packages/microsoft.aspnetcore.app.ref/8.0.20/microsoft.aspnetcore.app.ref.8.0.20.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/STCompiler.Compiler/Program.cs b/STCompiler.Compiler/Program.cs new file mode 100644 index 0000000..2b53f9a --- /dev/null +++ b/STCompiler.Compiler/Program.cs @@ -0,0 +1,877 @@ +namespace STCompiler.Compiler; + +using System; +using System.IO; +using System.Text; +using System.Collections.Generic; +using STCompiler.Common; + +// === ENTRY POINT === +class Program { + static int Main(string[] args) { + if (args.Length < 2) { + Console.WriteLine("Usage: StEmitter "); + return 1; + } + + var input = File.ReadAllText(args[0]); + var parser = new StParser(input); + var prog = parser.ParseProgram(); + + if (parser.HasErrors) { + Console.WriteLine($"Compilation failed with {parser.Errors.Count} errors:"); + foreach (var error in parser.Errors) { + Console.WriteLine($"Error at line {error.Line}: {error.Message}"); + } + return 1; + } + + if (prog == null) { + Console.WriteLine("Compilation failed: invalid program structure"); + return 1; + } + + try { + var emitter = new BytecodeEmitter(); + emitter.Compile(prog); + File.WriteAllBytes(args[1], emitter.BuildBinary()); + Console.WriteLine($"Wrote {args[1]}: consts={emitter.ConstantsCount}, vars={emitter.VarCount}, code={emitter.CodeLength}"); + return 0; + } catch (Exception ex) { + Console.WriteLine($"Internal compiler error: {ex.Message}"); + return 1; + } + } +} + +// === AST === +public enum VarType { + // Boolean + BOOL=1, + // Unsigned integers + BYTE=2, WORD=3, DWORD=4, LWORD=5, + // Signed integers + SINT=6, INT=7, DINT=8, LINT=9, + // Unsigned integers (alternative names) + USINT=10, UINT=11, UDINT=12, ULINT=13, + // Floating point + REAL=14, LREAL=15 +} +public abstract class StNode{} +public class ProgramNode:StNode{ public List Vars=new(); public List Stmts=new(); } +public class VarDecl:StNode{ + required public string Name; + public VarType Type; + public Expr? Init; +} + +public abstract class Stmt:StNode{} +public class AssignStmt:Stmt{ + required public string Target; + required public Expr Expr; +} +public class IfStmt:Stmt{ + required public Expr Cond; + public List ThenStmts=new(); + public List ElseStmts=new(); +} +public class WhileStmt:Stmt{ + required public Expr Cond; + public List Body=new(); +} +public class ForStmt:Stmt{ + required public string Var; + required public Expr Start; + required public Expr End; + public Expr Step = new IntExpr(1); + public List Body=new(); +} + +public abstract class Expr:StNode { + public VarType Type; // Speichert den Typ des Ausdrucks +} +public class IntExpr:Expr { + public long Value; + public IntExpr(long v, VarType type = VarType.DINT) { + Value = v; + Type = type; + } +} +public class RealExpr:Expr { + public double Value; + public RealExpr(double v, VarType type = VarType.REAL) { + Value = v; + Type = type; + } +} +public class VarExpr:Expr { + public string Name; + public VarExpr(string n, VarType type) { + Name = n; + Type = type; + } +} +public class BinaryExpr:Expr { + public Expr L; + public Expr R; + public TokType Op; + public BinaryExpr(Expr l, TokType op, Expr r) { + L = l; + Op = op; + R = r; + Type = DetermineResultType(l.Type, r.Type); + } + + private static VarType DetermineResultType(VarType left, VarType right) { + // Wenn einer der Operanden LREAL ist, ist das Ergebnis LREAL + if (left == VarType.LREAL || right == VarType.LREAL) + return VarType.LREAL; + // Wenn einer der Operanden REAL ist, ist das Ergebnis REAL + if (left == VarType.REAL || right == VarType.REAL) + return VarType.REAL; + // Bei gemischten Integer-Typen nehmen wir den größeren + if ((int)left > (int)right) + return left; + return right; + } +} + +// === TOKENIZER === +public enum TokType { + IDENT, INT, REAL, ASSIGN, SEMI, LPAREN, RPAREN, + PLUS, MINUS, MUL, DIV, + LT, GT, LE, GE, EQ, NEQ, + IF, THEN, ELSE, END_IF, + WHILE, DO, END_WHILE, + FOR, TO, BY, END_FOR, + PROGRAM, VAR, END_VAR, END_PROGRAM, + EOF +} +public class Token{ + public TokType Type; + public string Text; + public int Line; + public Token(TokType t, string s, int line) { Type=t; Text=s; Line=line; } +} + +public class CompileError { + public int Line; + public string Message; + public CompileError(int line, string msg) { Line=line; Message=msg; } +} + +public class StLexer { + private readonly string src; + private int i; + private int currentLine = 1; + public List Errors = new(); + public StLexer(string s){src=s;} + char Peek()=> i= src.Length) return '\0'; + char c = src[i++]; + if (c == '\n') currentLine++; + return c; + } + + void AddError(string msg) => Errors.Add(new CompileError(currentLine, msg)); + + public Token NextToken() { + while (char.IsWhiteSpace(Peek())) Next(); + if (Peek()=='\0') return new Token(TokType.EOF,"", currentLine); + + if (char.IsLetter(Peek())||Peek()=='_'){ + var sb=new StringBuilder(); + int startLine = currentLine; + while (char.IsLetterOrDigit(Peek())||Peek()=='_') sb.Append(Next()); + var s=sb.ToString().ToUpperInvariant(); + return s switch { + "PROGRAM"=>new Token(TokType.PROGRAM,s,startLine), + "VAR"=>new Token(TokType.VAR,s,startLine), + "END_VAR"=>new Token(TokType.END_VAR,s,startLine), + "END_PROGRAM"=>new Token(TokType.END_PROGRAM,s,startLine), + "IF"=>new Token(TokType.IF,s,startLine), + "THEN"=>new Token(TokType.THEN,s,startLine), + "ELSE"=>new Token(TokType.ELSE,s,startLine), + "END_IF"=>new Token(TokType.END_IF,s,startLine), + "WHILE"=>new Token(TokType.WHILE,s,startLine), + "DO"=>new Token(TokType.DO,s,startLine), + "END_WHILE"=>new Token(TokType.END_WHILE,s,startLine), + "FOR"=>new Token(TokType.FOR,s,startLine), + "TO"=>new Token(TokType.TO,s,startLine), + "BY"=>new Token(TokType.BY,s,startLine), + "END_FOR"=>new Token(TokType.END_FOR,s,startLine), + _=>new Token(TokType.IDENT,s,startLine) + }; + } + + if (char.IsDigit(Peek())) { + var sb = new StringBuilder(); + int startLine = currentLine; + bool isFloat = false; + + // Ganze Zahl vor dem Dezimalpunkt + while(char.IsDigit(Peek())) + sb.Append(Next()); + + // Optional: Dezimalpunkt und Nachkommastellen + if (Peek() == '.') { + isFloat = true; + sb.Append(Next()); + while(char.IsDigit(Peek())) + sb.Append(Next()); + } + + // Optional: Exponentialdarstellung + if (Peek() == 'E' || Peek() == 'e') { + isFloat = true; + sb.Append(Next()); + if (Peek() == '+' || Peek() == '-') + sb.Append(Next()); + if (!char.IsDigit(Peek())) { + AddError("Expected digits after exponent"); + return new Token(TokType.EOF, "", startLine); + } + while(char.IsDigit(Peek())) + sb.Append(Next()); + } + + return new Token(isFloat ? TokType.REAL : TokType.INT, sb.ToString(), startLine); + } + + int tokenLine = currentLine; + if (Peek()==':'){ + Next(); + if(Peek()=='='){ + Next(); + return new Token(TokType.ASSIGN,":=",tokenLine); + } + AddError("Expected '=' after ':' for assignment"); + // Bei einem einzelnen ':' geben wir EOF zurück und stoppen das Parsen + i--; // Gehen einen Schritt zurück, damit der fehlerhafte ':' Token beim nächsten Mal neu gelesen wird + return new Token(TokType.EOF,"",tokenLine); + } + if (Peek()=='<'){ + Next(); + if (Peek()=='='){Next(); return new Token(TokType.LE,"<=",tokenLine);} + if (Peek()=='>'){Next(); return new Token(TokType.NEQ,"<>",tokenLine);} + return new Token(TokType.LT,"<",tokenLine); + } + if (Peek()=='>'){ + Next(); + if (Peek()=='='){Next(); return new Token(TokType.GE,">=",tokenLine);} + return new Token(TokType.GT,">",tokenLine); + } + if (Peek()=='='){Next();return new Token(TokType.EQ,"=",tokenLine);} + + char c=Next(); + 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.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); + + AddError($"Unexpected character '{c}'"); + return new Token(TokType.EOF,"",tokenLine); // Skip invalid character + } +} + +// === PARSER === +public record Symbol { + required public string Name; + public VarType Type; + public int Index; +} + +public class StParser { + StLexer lex; + Token cur; + Dictionary syms = new(); + public List Errors => lex.Errors; + public bool HasErrors => Errors.Count > 0; + + public StParser(string s){ + lex=new StLexer(s); + cur=lex.NextToken(); + } + + void Next()=>cur=lex.NextToken(); + + void AddError(string msg) => lex.Errors.Add(new CompileError(cur.Line, msg)); + + bool Expect(TokType t){ + if(cur.Type!=t) { + AddError($"Expected {t}, got {cur.Type}"); + return false; + } + Next(); + return true; + } + + public ProgramNode? ParseProgram(){ + var p=new ProgramNode(); + if (!Expect(TokType.PROGRAM)) return null; + + if(cur.Type==TokType.IDENT) Next(); + + if(cur.Type==TokType.VAR){ + Next(); + while(cur.Type==TokType.IDENT) { + var varDecl = ParseVarDecl(); + if (varDecl == null) return null; + p.Vars.Add(varDecl); + } + if (!Expect(TokType.END_VAR)) return null; + } + + while(cur.Type!=TokType.END_PROGRAM && cur.Type!=TokType.EOF) { + var stmt = ParseStmt(); + if (stmt == null) return null; + p.Stmts.Add(stmt); + } + + if (!Expect(TokType.END_PROGRAM)) return null; + return p; + } + + VarDecl? ParseVarDecl(){ + if (cur.Type != TokType.IDENT) { + AddError("Expected identifier for variable declaration"); + return null; + } + 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 { + // Boolean + "bool" => VarType.BOOL, + // Unsigned integers + "byte" => VarType.BYTE, + "word" => VarType.WORD, + "dword" => VarType.DWORD, + "lword" => VarType.LWORD, + // Signed integers + "sint" => VarType.SINT, + "int" => VarType.INT, + "dint" => VarType.DINT, + "lint" => VarType.LINT, + // Unsigned integers (alternative names) + "usint" => VarType.USINT, + "uint" => VarType.UINT, + "udint" => VarType.UDINT, + "ulint" => VarType.ULINT, + // Floating point + "real" => VarType.REAL, + "lreal" => VarType.LREAL, + _ => null + }; + + if (vt == null) { + AddError($"Unknown type '{tname}'"); + return null; + } + + Expr? init=null; + if(cur.Type==TokType.ASSIGN){ + Next(); // consume := + init=ParseExpr(); + if (init == null) { + AddError($"Expected expression after ':=' in variable declaration"); + return null; + } + } + + if (!Expect(TokType.SEMI)) return null; + + // Füge Variable zur Symboltabelle hinzu + syms[name] = new Symbol { Name = name, Type = vt.Value }; + + return new VarDecl{Name=name,Type=vt.Value,Init=init}; + } + + Stmt? ParseAssign() { + // Der Aufrufer hat bereits geprüft, dass wir bei einem IDENT sind + string target = cur.Text.ToUpperInvariant(); // Variablennamen in Großbuchstaben + Next(); // consume identifier + if (cur.Type != TokType.ASSIGN) { + AddError($"Expected ':=' after identifier '{target}'"); + return null; + } + Next(); // consume := + var e = ParseExpr(); + if (e == null) return null; + if (!Expect(TokType.SEMI)) return null; + return new AssignStmt{Target=target, Expr=e}; + } + + Stmt? ParseStmt(){ + switch(cur.Type) { + case TokType.IF: return ParseIf(); + case TokType.WHILE: return ParseWhile(); + case TokType.FOR: return ParseFor(); + case TokType.IDENT: + return ParseAssign(); + default: + AddError($"Unexpected token {cur.Type} in statement"); + return null; + } + } + + IfStmt? ParseIf(){ + Next(); // IF + var cond=ParseExpr(); + if (cond == null) return null; + if (!Expect(TokType.THEN)) return null; + + var node=new IfStmt{Cond=cond}; + while(cur.Type!=TokType.ELSE && cur.Type!=TokType.END_IF && cur.Type!=TokType.EOF) { + var stmt = ParseStmt(); + if (stmt == null) return null; + node.ThenStmts.Add(stmt); + } + + if(cur.Type==TokType.ELSE){ + Next(); + while(cur.Type!=TokType.END_IF && cur.Type!=TokType.EOF) { + var stmt = ParseStmt(); + if (stmt == null) return null; + node.ElseStmts.Add(stmt); + } + } + + if (!Expect(TokType.END_IF)) return null; + if (!Expect(TokType.SEMI)) return null; + return node; + } + + WhileStmt? ParseWhile(){ + Next(); // WHILE + var cond=ParseExpr(); + if (cond == null) return null; + if (!Expect(TokType.DO)) return null; + + var ws=new WhileStmt{Cond=cond}; + while(cur.Type!=TokType.END_WHILE && cur.Type!=TokType.EOF) { + var stmt = ParseStmt(); + if (stmt == null) return null; + ws.Body.Add(stmt); + } + + if (!Expect(TokType.END_WHILE)) return null; + if (!Expect(TokType.SEMI)) return null; + return ws; + } + + ForStmt? ParseFor(){ + Next(); // FOR + if (cur.Type != TokType.IDENT) { + AddError("Expected identifier for FOR loop variable"); + return null; + } + string varName = cur.Text.ToUpperInvariant(); // Variablennamen in Großbuchstaben + Next(); // consume identifier + + if (cur.Type != TokType.ASSIGN) { + AddError($"Expected ':=' after identifier '{varName}'"); + return null; + } + Next(); // consume := + var start = ParseExpr(); + if (start == null) return null; + + if (!Expect(TokType.TO)) return null; + var end = ParseExpr(); + if (end == null) return null; + + Expr step = new IntExpr(1); + if(cur.Type==TokType.BY){ + Next(); + step = ParseExpr() ?? step; + } + + if (!Expect(TokType.DO)) return null; + + var fs = new ForStmt{Var=varName, Start=start, End=end, Step=step}; + while(cur.Type!=TokType.END_FOR && cur.Type!=TokType.EOF) { + var stmt = ParseStmt(); + if (stmt == null) return null; + fs.Body.Add(stmt); + } + + if (!Expect(TokType.END_FOR)) return null; + if (!Expect(TokType.SEMI)) return null; + return fs; + } + + Expr? ParseExpr() => ParseCompare(); + + Expr? ParseCompare(){ + var l = ParseAddSub(); + if (l == null) return null; + + while(cur.Type is TokType.LT or TokType.GT or TokType.LE or TokType.GE or TokType.EQ or TokType.NEQ){ + var op=cur.Type; + Next(); + var r=ParseAddSub(); + if (r == null) return null; + l=new BinaryExpr(l,op,r); + } + return l; + } + + Expr? ParseAddSub(){ + var l=ParseMulDiv(); + if (l == null) return null; + + while(cur.Type==TokType.PLUS||cur.Type==TokType.MINUS){ + var op=cur.Type; + Next(); + var r=ParseMulDiv(); + if (r == null) return null; + l=new BinaryExpr(l,op,r); + } + return l; + } + + Expr? ParseMulDiv(){ + var l=ParsePrimary(); + if (l == null) return null; + + while(cur.Type==TokType.MUL||cur.Type==TokType.DIV){ + var op=cur.Type; + Next(); + var r=ParsePrimary(); + if (r == null) return null; + l=new BinaryExpr(l,op,r); + } + return l; + } + + Expr? ParsePrimary(){ + int startLine = cur.Line; + switch(cur.Type) { + case TokType.INT: + if (!long.TryParse(cur.Text, out var v)) { + AddError($"Invalid integer literal '{cur.Text}'"); + return null; + } + Next(); + return new IntExpr(v, VarType.DINT); + + case TokType.REAL: + if (!double.TryParse(cur.Text, out var d)) { + AddError($"Invalid floating point literal '{cur.Text}'"); + return null; + } + Next(); + return new RealExpr(d); + + case TokType.IDENT: + string n = cur.Text.ToUpperInvariant(); // Variablennamen in Großbuchstaben + Next(); + Symbol? sym; + if (!syms.TryGetValue(n, out sym)) { + AddError($"Undeclared variable '{n}'"); + return null; + } + return new VarExpr(n, sym.Type); + + case TokType.LPAREN: + Next(); + var e = ParseExpr(); + if (e == null) return null; + if (!Expect(TokType.RPAREN)) return null; + return e; + + default: + AddError($"Unexpected token {cur.Type} in expression"); + return null; + } + } + } + + +// === BYTECODE === +public class BytecodeEmitter { + List consts = new(); // Kann nun int, long, float oder double speichern + Dictionary syms = new(); + List code = new(); + + class Symbol { + required public string Name; + public VarType Type; + public int Index; + } + + public int ConstantsCount => consts.Count; + public int VarCount => syms.Count; + public int CodeLength => code.Count; + + 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) + if(v.Init!=null){EmitExpr(v.Init);EmitByte(0x03);EmitU16((ushort)syms[v.Name].Index);} + + foreach(var s in p.Stmts) + EmitStmt(s); + + EmitByte(0xF0); // Program End + } + + // Operationscodes für verschiedene Datentypen + Dictionary<(TokType, VarType), byte> opCodes = new() { + // Signed integer arithmetic + {(TokType.PLUS, VarType.SINT), Bytecode.OpCodes.ADD_SINT}, {(TokType.MINUS, VarType.SINT), Bytecode.OpCodes.SUB_SINT}, + {(TokType.MUL, VarType.SINT), Bytecode.OpCodes.MUL_SINT}, {(TokType.DIV, VarType.SINT), Bytecode.OpCodes.DIV_SINT}, + {(TokType.PLUS, VarType.INT), Bytecode.OpCodes.ADD_INT}, {(TokType.MINUS, VarType.INT), Bytecode.OpCodes.SUB_INT}, + {(TokType.MUL, VarType.INT), Bytecode.OpCodes.MUL_INT}, {(TokType.DIV, VarType.INT), Bytecode.OpCodes.DIV_INT}, + {(TokType.PLUS, VarType.DINT), Bytecode.OpCodes.ADD_DINT}, {(TokType.MINUS, VarType.DINT), Bytecode.OpCodes.SUB_DINT}, + {(TokType.MUL, VarType.DINT), Bytecode.OpCodes.MUL_DINT}, {(TokType.DIV, VarType.DINT), Bytecode.OpCodes.DIV_DINT}, + {(TokType.PLUS, VarType.LINT), Bytecode.OpCodes.ADD_LINT}, {(TokType.MINUS, VarType.LINT), Bytecode.OpCodes.SUB_LINT}, + {(TokType.MUL, VarType.LINT), Bytecode.OpCodes.MUL_LINT}, {(TokType.DIV, VarType.LINT), Bytecode.OpCodes.DIV_LINT}, + + // Unsigned integer arithmetic + {(TokType.PLUS, VarType.USINT), Bytecode.OpCodes.ADD_USINT}, {(TokType.MINUS, VarType.USINT), Bytecode.OpCodes.SUB_USINT}, + {(TokType.MUL, VarType.USINT), Bytecode.OpCodes.MUL_USINT}, {(TokType.DIV, VarType.USINT), Bytecode.OpCodes.DIV_USINT}, + {(TokType.PLUS, VarType.UINT), Bytecode.OpCodes.ADD_UINT}, {(TokType.MINUS, VarType.UINT), Bytecode.OpCodes.SUB_UINT}, + {(TokType.MUL, VarType.UINT), Bytecode.OpCodes.MUL_UINT}, {(TokType.DIV, VarType.UINT), Bytecode.OpCodes.DIV_UINT}, + {(TokType.PLUS, VarType.UDINT), Bytecode.OpCodes.ADD_UDINT}, {(TokType.MINUS, VarType.UDINT), Bytecode.OpCodes.SUB_UDINT}, + {(TokType.MUL, VarType.UDINT), Bytecode.OpCodes.MUL_UDINT}, {(TokType.DIV, VarType.UDINT), Bytecode.OpCodes.DIV_UDINT}, + {(TokType.PLUS, VarType.ULINT), Bytecode.OpCodes.ADD_ULINT}, {(TokType.MINUS, VarType.ULINT), Bytecode.OpCodes.SUB_ULINT}, + {(TokType.MUL, VarType.ULINT), Bytecode.OpCodes.MUL_ULINT}, {(TokType.DIV, VarType.ULINT), Bytecode.OpCodes.DIV_ULINT}, + + // Floating point arithmetic + {(TokType.PLUS, VarType.REAL), Bytecode.OpCodes.ADD_REAL}, {(TokType.MINUS, VarType.REAL), Bytecode.OpCodes.SUB_REAL}, + {(TokType.MUL, VarType.REAL), Bytecode.OpCodes.MUL_REAL}, {(TokType.DIV, VarType.REAL), Bytecode.OpCodes.DIV_REAL}, + {(TokType.PLUS, VarType.LREAL), Bytecode.OpCodes.ADD_LREAL}, {(TokType.MINUS, VarType.LREAL), Bytecode.OpCodes.SUB_LREAL}, + {(TokType.MUL, VarType.LREAL), Bytecode.OpCodes.MUL_LREAL}, {(TokType.DIV, VarType.LREAL), Bytecode.OpCodes.DIV_LREAL}, + + // Comparisons signed + {(TokType.LT, VarType.SINT), Bytecode.OpCodes.LT_S}, {(TokType.GT, VarType.SINT), Bytecode.OpCodes.GT_S}, + {(TokType.LE, VarType.SINT), Bytecode.OpCodes.LE_S}, {(TokType.GE, VarType.SINT), Bytecode.OpCodes.GE_S}, + {(TokType.EQ, VarType.SINT), Bytecode.OpCodes.EQ_S}, {(TokType.NEQ, VarType.SINT), Bytecode.OpCodes.NEQ_S}, + {(TokType.LT, VarType.INT), Bytecode.OpCodes.LT_S}, {(TokType.GT, VarType.INT), Bytecode.OpCodes.GT_S}, + {(TokType.LE, VarType.INT), Bytecode.OpCodes.LE_S}, {(TokType.GE, VarType.INT), Bytecode.OpCodes.GE_S}, + {(TokType.EQ, VarType.INT), Bytecode.OpCodes.EQ_S}, {(TokType.NEQ, VarType.INT), Bytecode.OpCodes.NEQ_S}, + {(TokType.LT, VarType.DINT), Bytecode.OpCodes.LT_S}, {(TokType.GT, VarType.DINT), Bytecode.OpCodes.GT_S}, + {(TokType.LE, VarType.DINT), Bytecode.OpCodes.LE_S}, {(TokType.GE, VarType.DINT), Bytecode.OpCodes.GE_S}, + {(TokType.EQ, VarType.DINT), Bytecode.OpCodes.EQ_S}, {(TokType.NEQ, VarType.DINT), Bytecode.OpCodes.NEQ_S}, + {(TokType.LT, VarType.LINT), Bytecode.OpCodes.LT_S}, {(TokType.GT, VarType.LINT), Bytecode.OpCodes.GT_S}, + {(TokType.LE, VarType.LINT), Bytecode.OpCodes.LE_S}, {(TokType.GE, VarType.LINT), Bytecode.OpCodes.GE_S}, + {(TokType.EQ, VarType.LINT), Bytecode.OpCodes.EQ_S}, {(TokType.NEQ, VarType.LINT), Bytecode.OpCodes.NEQ_S}, + + // Comparisons unsigned + {(TokType.LT, VarType.USINT), Bytecode.OpCodes.LT_U}, {(TokType.GT, VarType.USINT), Bytecode.OpCodes.GT_U}, + {(TokType.LE, VarType.USINT), Bytecode.OpCodes.LE_U}, {(TokType.GE, VarType.USINT), Bytecode.OpCodes.GE_U}, + {(TokType.EQ, VarType.USINT), Bytecode.OpCodes.EQ_U}, {(TokType.NEQ, VarType.USINT), Bytecode.OpCodes.NEQ_U}, + {(TokType.LT, VarType.UINT), Bytecode.OpCodes.LT_U}, {(TokType.GT, VarType.UINT), Bytecode.OpCodes.GT_U}, + {(TokType.LE, VarType.UINT), Bytecode.OpCodes.LE_U}, {(TokType.GE, VarType.UINT), Bytecode.OpCodes.GE_U}, + {(TokType.EQ, VarType.UINT), Bytecode.OpCodes.EQ_U}, {(TokType.NEQ, VarType.UINT), Bytecode.OpCodes.NEQ_U}, + {(TokType.LT, VarType.UDINT), Bytecode.OpCodes.LT_U}, {(TokType.GT, VarType.UDINT), Bytecode.OpCodes.GT_U}, + {(TokType.LE, VarType.UDINT), Bytecode.OpCodes.LE_U}, {(TokType.GE, VarType.UDINT), Bytecode.OpCodes.GE_U}, + {(TokType.EQ, VarType.UDINT), Bytecode.OpCodes.EQ_U}, {(TokType.NEQ, VarType.UDINT), Bytecode.OpCodes.NEQ_U}, + {(TokType.LT, VarType.ULINT), Bytecode.OpCodes.LT_U}, {(TokType.GT, VarType.ULINT), Bytecode.OpCodes.GT_U}, + {(TokType.LE, VarType.ULINT), Bytecode.OpCodes.LE_U}, {(TokType.GE, VarType.ULINT), Bytecode.OpCodes.GE_U}, + {(TokType.EQ, VarType.ULINT), Bytecode.OpCodes.EQ_U}, {(TokType.NEQ, VarType.ULINT), Bytecode.OpCodes.NEQ_U}, + + // Comparisons floating + {(TokType.LT, VarType.REAL), Bytecode.OpCodes.LT_F}, {(TokType.GT, VarType.REAL), Bytecode.OpCodes.GT_F}, + {(TokType.LE, VarType.REAL), Bytecode.OpCodes.LE_F}, {(TokType.GE, VarType.REAL), Bytecode.OpCodes.GE_F}, + {(TokType.EQ, VarType.REAL), Bytecode.OpCodes.EQ_F}, {(TokType.NEQ, VarType.REAL), Bytecode.OpCodes.NEQ_F}, + {(TokType.LT, VarType.LREAL), Bytecode.OpCodes.LT_F}, {(TokType.GT, VarType.LREAL), Bytecode.OpCodes.GT_F}, + {(TokType.LE, VarType.LREAL), Bytecode.OpCodes.LE_F}, {(TokType.GE, VarType.LREAL), Bytecode.OpCodes.GE_F}, + {(TokType.EQ, VarType.LREAL), Bytecode.OpCodes.EQ_F}, {(TokType.NEQ, VarType.LREAL), Bytecode.OpCodes.NEQ_F} + }; + + void EmitStmt(Stmt s){ + switch(s){ + case AssignStmt a: + Symbol? symbol = null; + 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); + break; + + case IfStmt iff: + EmitExpr(iff.Cond); + EmitByte(Bytecode.OpCodes.JZ); int jz=code.Count; EmitU16(0); + foreach(var st in iff.ThenStmts) EmitStmt(st); + if(iff.ElseStmts.Count>0){ + EmitByte(Bytecode.OpCodes.JMP); int jmp=code.Count; EmitU16(0); + PatchJump(jz,code.Count); + foreach(var st in iff.ElseStmts) EmitStmt(st); + PatchJump(jmp,code.Count); + } else PatchJump(jz,code.Count); + break; + + case WhileStmt w: + int loopStart=code.Count; + EmitExpr(w.Cond); + EmitByte(Bytecode.OpCodes.JZ); int jzpos=code.Count; EmitU16(0); + foreach(var st in w.Body) EmitStmt(st); + EmitByte(Bytecode.OpCodes.JMP); EmitU16((ushort)loopStart); + PatchJump(jzpos,code.Count); + break; + + case ForStmt f: + Symbol? forSymbol = null; + if (!syms.TryGetValue(f.Var, out forSymbol)) { + throw new Exception($"Undeclared variable '{f.Var}'"); + } + // Initialisierung: var := start + EmitExpr(f.Start); + EmitByte(Bytecode.OpCodes.STORE_VAR); EmitU16((ushort)forSymbol.Index); + + int cmpPos = code.Count; // Position des Vergleichs + EmitExpr(new VarExpr(f.Var, forSymbol.Type)); + EmitExpr(f.End); + var key = (TokType.LE, forSymbol.Type); + if (!opCodes.ContainsKey(key)) { + throw new Exception($"Comparison not supported for type {forSymbol.Type}"); + } + EmitByte(opCodes[key]); + EmitByte(Bytecode.OpCodes.JZ); int jzFor = code.Count; EmitU16(0); // Jump zum Ende + + // Body + foreach(var st in f.Body) EmitStmt(st); + + // Inkrement: i := i + step + EmitExpr(new VarExpr(f.Var, forSymbol.Type)); + EmitExpr(f.Step); + var addKey = (TokType.PLUS, forSymbol.Type); + if (!opCodes.ContainsKey(addKey)) { + throw new Exception($"Addition not supported for type {forSymbol.Type}"); + } + EmitByte(opCodes[addKey]); + EmitByte(Bytecode.OpCodes.STORE_VAR); EmitU16((ushort)forSymbol.Index); + + // Vergleich erneut, aber wir merken uns den Sprung zum Vergleich + EmitByte(Bytecode.OpCodes.JMP); EmitU16((ushort)cmpPos); + + // Patch Jump: Ende der Schleife springt hierhin + PatchJump(jzFor, code.Count); + + // Korrektur: Schleifenvariable auf Endwert, falls sie überläuft + EmitExpr(f.End); + EmitByte(Bytecode.OpCodes.STORE_VAR); EmitU16((ushort)syms[f.Var].Index); + break; + } + } + + void PatchJump(int pos,int target){code[pos]=(byte)(target&0xFF);code[pos+1]=(byte)(target>>8);} + void EmitExpr(Expr e){ + switch(e){ + case IntExpr ie: + int ci = AddConst(ie.Value); + EmitByte(Bytecode.OpCodes.PUSH_CONST); // PUSH_CONST + EmitU16((ushort)ci); + EmitByte((byte)ie.Type); // Typ der Konstante + break; + + case RealExpr re: + int cri = AddConst(re.Value); + EmitByte(Bytecode.OpCodes.PUSH_REAL_CONST); // PUSH_REAL_CONST + EmitU16((ushort)cri); + EmitByte((byte)re.Type); // REAL oder LREAL + break; + + case VarExpr ve: + Symbol? symbol = null; + if (!syms.TryGetValue(ve.Name, out symbol)) { + throw new Exception($"Undeclared variable '{ve.Name}'"); + } + EmitByte(Bytecode.OpCodes.LOAD_VAR); // LOAD_VAR + EmitU16((ushort)symbol.Index); + break; + + case BinaryExpr be: + EmitExpr(be.L); + EmitExpr(be.R); + + var key = (be.Op, be.Type); + if (!opCodes.ContainsKey(key)) { + throw new Exception($"Unknown operator '{be.Op}' for type {be.Type}"); + } + + // Wenn nötig, Typenkonvertierung vor der Operation + 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; + } + } + + int AddConst(object v) { + int i = consts.FindIndex(c => c.Equals(v)); + if (i >= 0) return i; + consts.Add(v); + return consts.Count - 1; + } + + void EmitByte(byte b) => code.Add(b); + void EmitU16(ushort v) {code.Add((byte)(v&0xFF));code.Add((byte)(v>>8));} + + public byte[] BuildBinary() { + using var ms = new MemoryStream(); + var w = new BinaryWriter(ms); + + // Header + w.Write(Encoding.ASCII.GetBytes(Bytecode.Magic)); + w.Write(Bytecode.Version); + + // Konstanten + w.Write((ushort)consts.Count); + foreach(var c in consts) { + if (c is long l) { + w.Write((byte)1); // Long type marker + w.Write(l); + } + else if (c is double d) { + w.Write((byte)2); // Double type marker + w.Write(d); + } + else if (c is float f) { + w.Write((byte)3); // Float type marker + w.Write(f); + } + else if (c is int i) { + w.Write((byte)4); // Int type marker + w.Write(i); + } + else { + throw new Exception($"Unsupported constant type: {c.GetType()}"); + } + } + + // 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; + foreach(var b in types) + w.Write(b); + + // Code + w.Write((ushort)code.Count); + w.Write(code.ToArray()); + + return ms.ToArray(); + } +} diff --git a/STCompiler.Compiler/STCompiler.Compiler.csproj b/STCompiler.Compiler/STCompiler.Compiler.csproj new file mode 100644 index 0000000..bd28452 --- /dev/null +++ b/STCompiler.Compiler/STCompiler.Compiler.csproj @@ -0,0 +1,14 @@ + + + + + + + + Exe + net8.0 + enable + enable + + + diff --git a/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..14398bb1a24eea5f311470744245c02259be73e3 GIT binary patch literal 8192 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 Yk6MAQ26&~RHWmJ&a+D@T3qg?o13gW^hyVZp literal 0 HcmV?d00001 diff --git a/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler b/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler new file mode 100755 index 0000000000000000000000000000000000000000..1ad29a8c320a6f9451f404fc8090e5b5ce001f3b GIT binary patch literal 77288 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%0Djj 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≫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 A1poj5 literal 0 HcmV?d00001 diff --git a/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.runtimeconfig.json b/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.runtimeconfig.json new file mode 100644 index 0000000..becfaea --- /dev/null +++ b/STCompiler.Compiler/bin/Debug/net8.0/STCompiler.Compiler.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/STCompiler.Compiler/input.st b/STCompiler.Compiler/input.st new file mode 100644 index 0000000..6e95f8d --- /dev/null +++ b/STCompiler.Compiler/input.st @@ -0,0 +1,16 @@ +PROGRAM Demo +VAR + a UINT := 0; + b UINT := 0; + i UINT := 0; +END_VAR + +WHILE a < 5 DO + a := a + 1; +END_WHILE; + +FOR i := 1 TO 10 DO + b := b + i; +END_FOR; + +END_PROGRAM diff --git a/STCompiler.Compiler/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/STCompiler.Compiler/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/STCompiler.Compiler/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfo.cs b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfo.cs new file mode 100644 index 0000000..96b3af7 --- /dev/null +++ b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +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")] +[assembly: System.Reflection.AssemblyProductAttribute("STCompiler.Compiler")] +[assembly: System.Reflection.AssemblyTitleAttribute("STCompiler.Compiler")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfoInputs.cache b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfoInputs.cache new file mode 100644 index 0000000..2f2f6fc --- /dev/null +++ b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +62e0a705d77d04812d8911688545c821288c02824251ca71c994335e8a831b77 diff --git a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.GeneratedMSBuildEditorConfig.editorconfig b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..f525be0 --- /dev/null +++ b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = STCompiler.Compiler +build_property.ProjectDir = /home/martin/Projects/STCompiler/STCompiler.Compiler/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.GlobalUsings.g.cs b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.assets.cache b/STCompiler.Compiler/obj/Debug/net8.0/STCompiler.Compiler.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..e10a7223dccc8ccd4517ea80c44d6c496e0a57a1 GIT binary patch literal 150 zcmWIWc6a1qU|?A6RDMKfrAzaZFCklhJ1*1Rb~NDcsT1qcI~RnVUbk!a$w@#p!~#a3 mLRtNc{M=Oi+{B`i%shR)ywdd468(b2NY!>w1* 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%0Djj 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≫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 A1poj5 literal 0 HcmV?d00001 diff --git a/STCompiler.Compiler/obj/Debug/net8.0/apphost b/STCompiler.Compiler/obj/Debug/net8.0/apphost new file mode 100755 index 0000000000000000000000000000000000000000..1ad29a8c320a6f9451f404fc8090e5b5ce001f3b GIT binary patch literal 77288 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 literal 0 HcmV?d00001 diff --git a/STCompiler.Compiler/obj/Debug/net8.0/refint/STCompiler.Compiler.dll b/STCompiler.Compiler/obj/Debug/net8.0/refint/STCompiler.Compiler.dll new file mode 100644 index 0000000000000000000000000000000000000000..ac5a523086a7875b41542186d0b2ce173c299b07 GIT binary patch literal 9728 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 literal 0 HcmV?d00001 diff --git a/STCompiler.Compiler/obj/STCompiler.Compiler.csproj.nuget.dgspec.json b/STCompiler.Compiler/obj/STCompiler.Compiler.csproj.nuget.dgspec.json new file mode 100644 index 0000000..e8d4364 --- /dev/null +++ b/STCompiler.Compiler/obj/STCompiler.Compiler.csproj.nuget.dgspec.json @@ -0,0 +1,130 @@ +{ + "format": 1, + "restore": { + "/home/martin/Projects/STCompiler/STCompiler.Compiler/STCompiler.Compiler.csproj": {} + }, + "projects": { + "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj", + "projectName": "STCompiler.Common", + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj", + "packagesPath": "/home/martin/.nuget/packages/", + "outputPath": "/home/martin/Projects/STCompiler/STCompiler.Common/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/home/martin/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.20, 8.0.20]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/8.0.120/PortableRuntimeIdentifierGraph.json" + } + } + }, + "/home/martin/Projects/STCompiler/STCompiler.Compiler/STCompiler.Compiler.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/martin/Projects/STCompiler/STCompiler.Compiler/STCompiler.Compiler.csproj", + "projectName": "STCompiler.Compiler", + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Compiler/STCompiler.Compiler.csproj", + "packagesPath": "/home/martin/.nuget/packages/", + "outputPath": "/home/martin/Projects/STCompiler/STCompiler.Compiler/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/home/martin/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj": { + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.20, 8.0.20]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/8.0.120/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/STCompiler.Compiler/obj/STCompiler.Compiler.csproj.nuget.g.props b/STCompiler.Compiler/obj/STCompiler.Compiler.csproj.nuget.g.props new file mode 100644 index 0000000..857a355 --- /dev/null +++ b/STCompiler.Compiler/obj/STCompiler.Compiler.csproj.nuget.g.props @@ -0,0 +1,15 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + /home/martin/.nuget/packages/ + /home/martin/.nuget/packages/ + PackageReference + 6.8.1 + + + + + \ No newline at end of file diff --git a/STCompiler.Compiler/obj/STCompiler.Compiler.csproj.nuget.g.targets b/STCompiler.Compiler/obj/STCompiler.Compiler.csproj.nuget.g.targets new file mode 100644 index 0000000..3dc06ef --- /dev/null +++ b/STCompiler.Compiler/obj/STCompiler.Compiler.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/STCompiler.Compiler/obj/project.assets.json b/STCompiler.Compiler/obj/project.assets.json new file mode 100644 index 0000000..51ea79e --- /dev/null +++ b/STCompiler.Compiler/obj/project.assets.json @@ -0,0 +1,95 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "STCompiler.Common/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "compile": { + "bin/placeholder/STCompiler.Common.dll": {} + }, + "runtime": { + "bin/placeholder/STCompiler.Common.dll": {} + } + } + } + }, + "libraries": { + "STCompiler.Common/1.0.0": { + "type": "project", + "path": "../STCompiler.Common/STCompiler.Common.csproj", + "msbuildProject": "../STCompiler.Common/STCompiler.Common.csproj" + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "STCompiler.Common >= 1.0.0" + ] + }, + "packageFolders": { + "/home/martin/.nuget/packages/": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/martin/Projects/STCompiler/STCompiler.Compiler/STCompiler.Compiler.csproj", + "projectName": "STCompiler.Compiler", + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Compiler/STCompiler.Compiler.csproj", + "packagesPath": "/home/martin/.nuget/packages/", + "outputPath": "/home/martin/Projects/STCompiler/STCompiler.Compiler/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/home/martin/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj": { + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.20, 8.0.20]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/8.0.120/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/STCompiler.Compiler/obj/project.nuget.cache b/STCompiler.Compiler/obj/project.nuget.cache new file mode 100644 index 0000000..a48f04f --- /dev/null +++ b/STCompiler.Compiler/obj/project.nuget.cache @@ -0,0 +1,10 @@ +{ + "version": 2, + "dgSpecHash": "pOc/XBic+bS/nY5zfA5/C00qF5czDCXpa+QmG0s/xXRdiSa+OYPNVVz01R8yAbKlACRDVmGtIdQwJXDTjGwwYg==", + "success": true, + "projectFilePath": "/home/martin/Projects/STCompiler/STCompiler.Compiler/STCompiler.Compiler.csproj", + "expectedPackageFiles": [ + "/home/martin/.nuget/packages/microsoft.aspnetcore.app.ref/8.0.20/microsoft.aspnetcore.app.ref.8.0.20.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/STCompiler.Compiler/output.bin b/STCompiler.Compiler/output.bin new file mode 100644 index 0000000000000000000000000000000000000000..a480aa0f8cb6e0a77f34fe7c2ec2c6f7510dd6e0 GIT binary patch literal 149 zcmXwvyA6Oa3`Eb4ks?yFLTWmC7y*P3bWD(J&Is7~xOvZaw;$`q5D?nY(4|K-w!|TX t@Y>WnR8R%O0)l_eG#6*}C_tV->Y@t"); + return 1; + } + var path = args[0]; + if (!File.Exists(path)) { Console.WriteLine("File not found: " + path); return 2; } + var data = File.ReadAllBytes(path); + try { Disasm(data); } catch(Exception ex) { Console.WriteLine("Error: " + ex.Message); return 3; } + return 0; + } + + static void Disasm(byte[] data) { + using var ms = new MemoryStream(data); + using var r = new BinaryReader(ms); + + string magic = Encoding.ASCII.GetString(r.ReadBytes(4)); + Console.WriteLine($"Magic: {magic}"); + ushort ver = r.ReadUInt16(); + Console.WriteLine($"Version: {ver}"); + ushort nConsts = r.ReadUInt16(); + Console.WriteLine($"Consts: {nConsts}"); + var consts = new List(); + for (int i = 0; i < nConsts; i++) { + byte t = r.ReadByte(); + switch(t) { + case 1: { long v = r.ReadInt64(); consts.Add(v); Console.WriteLine($" [{i}] (long) = {v}"); break; } + case 2: { double v = r.ReadDouble(); consts.Add(v); Console.WriteLine($" [{i}] (double) = {v}"); break; } + case 3: { float v = r.ReadSingle(); consts.Add(v); Console.WriteLine($" [{i}] (float) = {v}"); break; } + case 4: { int v = r.ReadInt32(); consts.Add(v); Console.WriteLine($" [{i}] (int) = {v}"); break; } + default: { Console.WriteLine($" [{i}] Unknown const type {t}"); break; } + } + } + + ushort nVars = r.ReadUInt16(); + Console.WriteLine($"Vars: {nVars}"); + var varTypes = new byte[nVars]; + for (int i = 0; i < nVars; i++) { varTypes[i] = r.ReadByte(); Console.WriteLine($" Var[{i}] type = {varTypes[i]}"); } + + ushort codeLen = r.ReadUInt16(); + Console.WriteLine($"CodeLen: {codeLen} bytes"); + var code = r.ReadBytes(codeLen); + + Console.WriteLine("\n--- Disassembly ---"); + int ip = 0; + while (ip < code.Length) { + int addr = ip; + byte op = code[ip++]; + Console.Write($"{addr:0000}: 0x{op:X2} {Bytecode.OpName(op)} "); + switch (op) { + case Bytecode.OpCodes.NOP: Console.WriteLine("NOP"); break; + case Bytecode.OpCodes.PUSH_CONST: { ushort ci = ReadU16(code, ref ip); Console.WriteLine($"PUSH_CONST {ci} ({consts[ci]})"); break; } + case Bytecode.OpCodes.PUSH_REAL_CONST: { ushort ci = ReadU16(code, ref ip); Console.WriteLine($"PUSH_REAL_CONST {ci} ({consts[ci]})"); break; } + case Bytecode.OpCodes.LOAD_VAR: { ushort vi = ReadU16(code, ref ip); Console.WriteLine($"LOAD_VAR {vi}"); break; } + case Bytecode.OpCodes.STORE_VAR: { ushort vi = ReadU16(code, ref ip); Console.WriteLine($"STORE_VAR {vi}"); break; } + case Bytecode.OpCodes.JZ: { ushort target = ReadU16(code, ref ip); Console.WriteLine($"JZ addr={target}"); break; } + case Bytecode.OpCodes.JMP: { ushort target = ReadU16(code, ref ip); Console.WriteLine($"JMP addr={target}"); break; } + case Bytecode.OpCodes.HALT: Console.WriteLine("HALT"); break; + default: Console.WriteLine($"{Bytecode.OpName(op)}"); break; + } + } + } + + static ushort ReadU16(byte[] a, ref int ip) { + ushort v = (ushort)(a[ip] | (a[ip+1] << 8)); + ip += 2; + return v; + } +} \ No newline at end of file diff --git a/STCompiler.Disassembler/STCompiler.Disassembler.csproj b/STCompiler.Disassembler/STCompiler.Disassembler.csproj new file mode 100644 index 0000000..bd28452 --- /dev/null +++ b/STCompiler.Disassembler/STCompiler.Disassembler.csproj @@ -0,0 +1,14 @@ + + + + + + + + Exe + net8.0 + enable + enable + + + diff --git a/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..14398bb1a24eea5f311470744245c02259be73e3 GIT binary patch literal 8192 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 Yk6MAQ26&~RHWmJ&a+D@T3qg?o13gW^hyVZp literal 0 HcmV?d00001 diff --git a/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler new file mode 100755 index 0000000000000000000000000000000000000000..fa509f36785671440ea4d9499bea8b2db03bb287 GIT binary patch literal 77288 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 literal 0 HcmV?d00001 diff --git a/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.deps.json b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.deps.json new file mode 100644 index 0000000..9296989 --- /dev/null +++ b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.deps.json @@ -0,0 +1,36 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "STCompiler.Disassembler/1.0.0": { + "dependencies": { + "STCompiler.Common": "1.0.0" + }, + "runtime": { + "STCompiler.Disassembler.dll": {} + } + }, + "STCompiler.Common/1.0.0": { + "runtime": { + "STCompiler.Common.dll": {} + } + } + } + }, + "libraries": { + "STCompiler.Disassembler/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "STCompiler.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.dll b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.dll new file mode 100644 index 0000000000000000000000000000000000000000..3605db327937889f2d1548be6a06d004630a71d2 GIT binary patch literal 8192 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 PDtjkl{-5XnW(58la1<@1 literal 0 HcmV?d00001 diff --git a/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.pdb b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.pdb new file mode 100644 index 0000000000000000000000000000000000000000..9984f44ee47c5433a7cdf7ee09448a16c31035dd GIT binary patch literal 12036 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 literal 0 HcmV?d00001 diff --git a/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.runtimeconfig.json b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.runtimeconfig.json new file mode 100644 index 0000000..becfaea --- /dev/null +++ b/STCompiler.Disassembler/bin/Debug/net8.0/STCompiler.Disassembler.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/STCompiler.Disassembler/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/STCompiler.Disassembler/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfo.cs b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfo.cs new file mode 100644 index 0000000..7884c82 --- /dev/null +++ b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("STCompiler.Disassembler")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("STCompiler.Disassembler")] +[assembly: System.Reflection.AssemblyTitleAttribute("STCompiler.Disassembler")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfoInputs.cache b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfoInputs.cache new file mode 100644 index 0000000..8c30dea --- /dev/null +++ b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +dc637a389172b7c1d98556c8fdb0f7e6b7d0182cadc40b75d2a802cc3145ba46 diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.GeneratedMSBuildEditorConfig.editorconfig b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..abdd67e --- /dev/null +++ b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = STCompiler.Disassembler +build_property.ProjectDir = /home/martin/Projects/STCompiler/STCompiler.Disassembler/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.GlobalUsings.g.cs b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.assets.cache b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..3d2264056cb38b6ad0e3cff49408f402441797c7 GIT binary patch literal 150 zcmWIWc6a1qU|>+V`?=HBIhT8u!}_L=JTu$xn{&3MH!xm{wut{R>%bDmNkBEk0!E-h lS^bRs+*JMC#G;bSJbk^q()834{er~g?8NlcVtqm;0RTu&8*~5w literal 0 HcmV?d00001 diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.csproj.AssemblyReference.cache b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.csproj.AssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..9b81881e4712ae8294656871dc2ebcab9a89e435 GIT binary patch literal 458 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 PDtjkl{-5XnW(58la1<@1 literal 0 HcmV?d00001 diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.genruntimeconfig.cache b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.genruntimeconfig.cache new file mode 100644 index 0000000..d779528 --- /dev/null +++ b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.genruntimeconfig.cache @@ -0,0 +1 @@ +0f919aa6f48480752187acc6336f3dd954d81be64b7f977f5e7455370c6b0417 diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.pdb b/STCompiler.Disassembler/obj/Debug/net8.0/STCompiler.Disassembler.pdb new file mode 100644 index 0000000000000000000000000000000000000000..9984f44ee47c5433a7cdf7ee09448a16c31035dd GIT binary patch literal 12036 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 literal 0 HcmV?d00001 diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/apphost b/STCompiler.Disassembler/obj/Debug/net8.0/apphost new file mode 100755 index 0000000000000000000000000000000000000000..fa509f36785671440ea4d9499bea8b2db03bb287 GIT binary patch literal 77288 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 literal 0 HcmV?d00001 diff --git a/STCompiler.Disassembler/obj/Debug/net8.0/ref/STCompiler.Disassembler.dll b/STCompiler.Disassembler/obj/Debug/net8.0/ref/STCompiler.Disassembler.dll new file mode 100644 index 0000000000000000000000000000000000000000..18f403390b018cfe535aa979cf245c0dd53155f2 GIT binary patch literal 5632 zcmeHLO>7%Q6n^XckUBIpqAj6Buyu+6(QF(NP=DgYNt~3>{1LmMElACJJ$9DvkGs2e zV-AoDhyzHyaqS5%JyfU?6$tgf1qmuaCBy|pC3-x2(Hz*|AHG zYRZ~wS+*zVne0?7S-0fOTvj&i0#mkckM9da&rc9dOUJ~yz#p!MlF;}6CKArC~@K@T72glG?sm7ObR6Md!{<5B$a{W zK>tB5u!Ri3^H9+9Chj5JKht=6vYw+`C6{v?$NkN(@SbB?dJO}9NA?^!HkCnd0RNTa zV}_ka&l{FYM{tL2kK}d&0C$G&ExuDh3;-Y|ZtUsVr11Pd6E5SiVv!sd^Ob4YtS}SGTR(C#S5U?U<^EN!8ep zYuvVqda2?FzJ`zmR?MnJ=G7M9mD`|?+h$oe1oHwj)DvE_XB){~S@`)phAe-eS1$h9)Q47%X)y#Iv| z@m-usI&cR%XIhPL`a_?8`L-!>uIUGSc%EBA{zo6S>83#p7m;~R0Zz~YMpO7gn*}}v zIO%__(dW%K|BPnyFe8lwf>0*lWnbTT{UAZAN)F`cs6!ZJT2w?v=WQSHRXNP6pt_h> z$pfDa%x@Q)FQ77zV3P+f9rV&2B)uzmk`(?1DUUIaXBXCvL!L=xp`!+mRA7GDorUgj z*0;_<4$eT23oaKw2Hw1|+kw2}LSE=e2D2`*J-4g8&hC4ao5X!7)%{w8TnCaHap;Ft z$@;_X=mtNJq$hYSSZhQ)yEpv`6|kDuh)<(>lV}<;OF|-#O&N6!_pn6E&_*QVSrYo^ z0y^Inu0M7%Q6n^XckUBIpqAj6Buyu+6(QF(NP=DgYNt~3>{1LmMElACJJ$9DvkGs2e zV-AoDhyzHyaqS5%JyfU?6$tgf1qmuaCBy|pC3-x2(Hz*|AHG zYRZ~wS+*zVne0?7S-0fOTvj&i0#mkckM9da&rc9dOUJ~yz#p!MlF;}6CKArC~@K@T72glG?sm7ObR6Md!{<5B$a{W zK>tB5u!Ri3^H9+9Chj5JKht=6vYw+`C6{v?$NkN(@SbB?dJO}9NA?^!HkCnd0RNTa zV}_ka&l{FYM{tL2kK}d&0C$G&ExuDh3;-Y|ZtUsVr11Pd6E5SiVv!sd^Ob4YtS}SGTR(C#S5U?U<^EN!8ep zYuvVqda2?FzJ`zmR?MnJ=G7M9mD`|?+h$oe1oHwj)DvE_XB){~S@`)phAe-eS1$h9)Q47%X)y#Iv| z@m-usI&cR%XIhPL`a_?8`L-!>uIUGSc%EBA{zo6S>83#p7m;~R0Zz~YMpO7gn*}}v zIO%__(dW%K|BPnyFe8lwf>0*lWnbTT{UAZAN)F`cs6!ZJT2w?v=WQSHRXNP6pt_h> z$pfDa%x@Q)FQ77zV3P+f9rV&2B)uzmk`(?1DUUIaXBXCvL!L=xp`!+mRA7GDorUgj z*0;_<4$eT23oaKw2Hw1|+kw2}LSE=e2D2`*J-4g8&hC4ao5X!7)%{w8TnCaHap;Ft z$@;_X=mtNJq$hYSSZhQ)yEpv`6|kDuh)<(>lV}<;OF|-#O&N6!_pn6E&_*QVSrYo^ z0y^Inu0M + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + /home/martin/.nuget/packages/ + /home/martin/.nuget/packages/ + PackageReference + 6.8.1 + + + + + \ No newline at end of file diff --git a/STCompiler.Disassembler/obj/STCompiler.Disassembler.csproj.nuget.g.targets b/STCompiler.Disassembler/obj/STCompiler.Disassembler.csproj.nuget.g.targets new file mode 100644 index 0000000..3dc06ef --- /dev/null +++ b/STCompiler.Disassembler/obj/STCompiler.Disassembler.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/STCompiler.Disassembler/obj/project.assets.json b/STCompiler.Disassembler/obj/project.assets.json new file mode 100644 index 0000000..8fdd3db --- /dev/null +++ b/STCompiler.Disassembler/obj/project.assets.json @@ -0,0 +1,95 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "STCompiler.Common/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "compile": { + "bin/placeholder/STCompiler.Common.dll": {} + }, + "runtime": { + "bin/placeholder/STCompiler.Common.dll": {} + } + } + } + }, + "libraries": { + "STCompiler.Common/1.0.0": { + "type": "project", + "path": "../STCompiler.Common/STCompiler.Common.csproj", + "msbuildProject": "../STCompiler.Common/STCompiler.Common.csproj" + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "STCompiler.Common >= 1.0.0" + ] + }, + "packageFolders": { + "/home/martin/.nuget/packages/": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/martin/Projects/STCompiler/STCompiler.Disassembler/STCompiler.Disassembler.csproj", + "projectName": "STCompiler.Disassembler", + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Disassembler/STCompiler.Disassembler.csproj", + "packagesPath": "/home/martin/.nuget/packages/", + "outputPath": "/home/martin/Projects/STCompiler/STCompiler.Disassembler/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/home/martin/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj": { + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.20, 8.0.20]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/8.0.120/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/STCompiler.Disassembler/obj/project.nuget.cache b/STCompiler.Disassembler/obj/project.nuget.cache new file mode 100644 index 0000000..fce9dab --- /dev/null +++ b/STCompiler.Disassembler/obj/project.nuget.cache @@ -0,0 +1,10 @@ +{ + "version": 2, + "dgSpecHash": "s0tj8ngaSHf4PEU0x7K1E9bEHGayTmYwySGUMOEav8+YNokCEe1HNBdMoO+cEMLuxPCm3+TQcBxCGTSvXq6UBQ==", + "success": true, + "projectFilePath": "/home/martin/Projects/STCompiler/STCompiler.Disassembler/STCompiler.Disassembler.csproj", + "expectedPackageFiles": [ + "/home/martin/.nuget/packages/microsoft.aspnetcore.app.ref/8.0.20/microsoft.aspnetcore.app.ref.8.0.20.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/STCompiler.Simulator/Program.cs b/STCompiler.Simulator/Program.cs new file mode 100644 index 0000000..7fe13a2 --- /dev/null +++ b/STCompiler.Simulator/Program.cs @@ -0,0 +1,123 @@ +using System; +using System.IO; +using STCompiler.Common; +using System.Collections.Generic; + +class Program { + static int Main(string[] args) { + if (args.Length < 1) { + Console.WriteLine("Usage: StSim "); + return 1; + } + var path = args[0]; + if (!File.Exists(path)) { Console.WriteLine("File not found: " + path); return 2; } + var data = File.ReadAllBytes(path); + try { Simulate(data); } catch(Exception ex) { Console.WriteLine("Error: " + ex.Message); return 3; } + return 0; + } + + static void Simulate(byte[] data) { + using var ms = new MemoryStream(data); + using var r = new BinaryReader(ms); + + string magic = System.Text.Encoding.ASCII.GetString(r.ReadBytes(4)); + if (magic != Bytecode.Magic) throw new Exception("Invalid magic"); + ushort ver = r.ReadUInt16(); + if (ver != Bytecode.Version) throw new Exception($"Unsupported version {ver}"); + + ushort nConsts = r.ReadUInt16(); + var consts = new List(); + for (int i = 0; i < nConsts; i++) { + byte t = r.ReadByte(); + switch(t) { + case 1: consts.Add(r.ReadInt64()); break; + case 2: consts.Add(r.ReadDouble()); break; + case 3: consts.Add(r.ReadSingle()); break; + case 4: consts.Add(r.ReadInt32()); break; + default: throw new Exception($"Unknown const type {t}"); + } + } + + ushort nVars = r.ReadUInt16(); + var varTypes = new VarType[nVars]; + for (int i = 0; i < nVars; i++) varTypes[i] = (VarType)r.ReadByte(); + + ushort codeLen = r.ReadUInt16(); + var code = r.ReadBytes(codeLen); + + var stack = new Stack(); + var vars = new object[nVars]; + int ip = 0; + while (ip < code.Length) { + byte op = code[ip++]; + switch(op) { + case Bytecode.OpCodes.NOP: break; + case Bytecode.OpCodes.PUSH_CONST: { + ushort ci = (ushort)(code[ip++] | (code[ip++] << 8)); + stack.Push(consts[ci]); + break; + } + case Bytecode.OpCodes.PUSH_REAL_CONST: { + ushort ci = (ushort)(code[ip++] | (code[ip++] << 8)); + stack.Push(consts[ci]); + break; + } + case Bytecode.OpCodes.LOAD_VAR: { + ushort vi = (ushort)(code[ip++] | (code[ip++] << 8)); + stack.Push(vars[vi]); + break; + } + case Bytecode.OpCodes.STORE_VAR: { + ushort vi = (ushort)(code[ip++] | (code[ip++] << 8)); + vars[vi] = stack.Pop(); + break; + } + case Bytecode.OpCodes.JZ: { + ushort target = (ushort)(code[ip++] | (code[ip++] << 8)); + 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)); + ip = target; + break; + } + case Bytecode.OpCodes.HALT: + Console.WriteLine("HALT"); + return; + default: + // Simple arithmetic handlers for some opcodes + if (Bytecode.OpName(op).StartsWith("ADD_")) { + dynamic b = stack.Pop(); dynamic a = stack.Pop(); stack.Push(a + b); break; + } + if (Bytecode.OpName(op).StartsWith("SUB_")) { + dynamic b = stack.Pop(); dynamic a = stack.Pop(); stack.Push(a - b); break; + } + if (Bytecode.OpName(op).StartsWith("MUL_")) { + dynamic b = stack.Pop(); dynamic a = stack.Pop(); stack.Push(a * b); break; + } + if (Bytecode.OpName(op).StartsWith("DIV_")) { + dynamic b = stack.Pop(); dynamic a = stack.Pop(); stack.Push(a / b); break; + } + if (Bytecode.OpName(op).StartsWith("LT_") || Bytecode.OpName(op).StartsWith("GT_") || Bytecode.OpName(op).StartsWith("LE_") || Bytecode.OpName(op).StartsWith("GE_") || Bytecode.OpName(op).StartsWith("EQ_") || Bytecode.OpName(op).StartsWith("NEQ_")) { + // comparisons: pop r, pop l, push int 0/1 + dynamic rVal = stack.Pop(); dynamic lVal = stack.Pop(); + bool res = Bytecode.OpName(op).StartsWith("LT_") ? (lVal < rVal) : + Bytecode.OpName(op).StartsWith("GT_") ? (lVal > rVal) : + Bytecode.OpName(op).StartsWith("LE_") ? (lVal <= rVal) : + Bytecode.OpName(op).StartsWith("GE_") ? (lVal >= rVal) : + Bytecode.OpName(op).StartsWith("EQ_") ? (lVal == rVal) : + (lVal != rVal); + stack.Push(res ? 1 : 0); + break; + } + throw new Exception($"Unknown opcode 0x{op:X2}"); + } + } + + Console.WriteLine("Execution finished"); + for (int i = 0; i < vars.Length; i++) Console.WriteLine($"Var[{i}] = {vars[i]}"); + } +} diff --git a/STCompiler.Simulator/STCompiler.Simulator.csproj b/STCompiler.Simulator/STCompiler.Simulator.csproj new file mode 100644 index 0000000..ce13ae5 --- /dev/null +++ b/STCompiler.Simulator/STCompiler.Simulator.csproj @@ -0,0 +1,11 @@ + + + Exe + net8.0 + enable + enable + + + + + diff --git a/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Common.dll b/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..14398bb1a24eea5f311470744245c02259be73e3 GIT binary patch literal 8192 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 Yk6MAQ26&~RHWmJ&a+D@T3qg?o13gW^hyVZp literal 0 HcmV?d00001 diff --git a/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator b/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator new file mode 100755 index 0000000000000000000000000000000000000000..01d99cff4b02147559db7fbfb8f9fad5c4a283aa GIT binary patch literal 77288 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 Pxp|D#W-LFRkuUu}q>^o5 literal 0 HcmV?d00001 diff --git a/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator.runtimeconfig.json b/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator.runtimeconfig.json new file mode 100644 index 0000000..becfaea --- /dev/null +++ b/STCompiler.Simulator/bin/Debug/net8.0/STCompiler.Simulator.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/STCompiler.Simulator/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/STCompiler.Simulator/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/STCompiler.Simulator/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfo.cs b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfo.cs new file mode 100644 index 0000000..6bf35d1 --- /dev/null +++ b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("STCompiler.Simulator")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("STCompiler.Simulator")] +[assembly: System.Reflection.AssemblyTitleAttribute("STCompiler.Simulator")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfoInputs.cache b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfoInputs.cache new file mode 100644 index 0000000..89c0bcf --- /dev/null +++ b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +e68c3397a6969111aabee6432e0447cb372a6ba9ca289ded0d01796be53dbb16 diff --git a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.GeneratedMSBuildEditorConfig.editorconfig b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..f31f6f3 --- /dev/null +++ b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = STCompiler.Simulator +build_property.ProjectDir = /home/martin/Projects/STCompiler/STCompiler.Simulator/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.GlobalUsings.g.cs b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.assets.cache b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..91010169ad7e149d9e8384c6a29fa609d6a684f3 GIT binary patch literal 150 zcmWIWc6a1qU|`r0V#lSQ_%W(t{_m9F#G)?d$SJSie+d8f?ESB$FCQv=o&;1wEMNpG ll-1A3&rQ|OO)M(O%+uG)D@{)=(Jx3$&Q45EE!HPw5&--^A3Oj6 literal 0 HcmV?d00001 diff --git a/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.csproj.AssemblyReference.cache b/STCompiler.Simulator/obj/Debug/net8.0/STCompiler.Simulator.csproj.AssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..9b81881e4712ae8294656871dc2ebcab9a89e435 GIT binary patch literal 458 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 Pxp|D#W-LFRkuUu}q>^o5 literal 0 HcmV?d00001 diff --git a/STCompiler.Simulator/obj/Debug/net8.0/apphost b/STCompiler.Simulator/obj/Debug/net8.0/apphost new file mode 100755 index 0000000000000000000000000000000000000000..01d99cff4b02147559db7fbfb8f9fad5c4a283aa GIT binary patch literal 77288 zcmeFadwf*Y)jmEE0s+N|S5Q%+f2Q@PZ*G;ZlL5$qb-~1d>rs zr}LUxvDns1y`rr(-zpfb(BWbdTQ31yrCKFks(Tz%w3eGne$TV^nVB;a##j5k??1m! z!-qMu*WPFCwbxpE?X}mw%u2U+@-Z11j@Vxh$Hfk&_T_6xv6V6ZyhNE|M}foXD0ZCX zIMdM!`91MJRxb5v^gt&5V$Up{bP&wSHE}AddA*624KFo z&U$a1^&4hJ_Fk#=-rz5Efz;=8 zBE?_qX(b(3;yudY+x}T<=9p^Lm#%$bQ9_3!_SD?dJRuHdPq}=C`E?ltKzwE+g1!FE8GkQc_ z^@ve|hqz++@bz2$^#&tPJW9zMAjqS^-|BO8cq{Ona1=a`q`~t8==ss`PfA12r@(!* z@{gr~j{_r)R=zw9{qxe)drg}1W}5O95bDwDod`VV9ECskr@_;l2L4GJditj+|7@D_ zucU!bPQ%a2H1M<1)Vm@L{_m$L|MxWda84RLe@&xT(KPtyp|c-NKQB*H{-reV_B8a2 zPD9V5Y4Ge!qbEDllpmO;-l=Ke{xtYkr@_A@4W1`qu#TqBKS)!4SQJ0%UB_oTtIJPrJF=*iLA>w;lE8azJ@p6WDo-jzl!Ytxi(OasqO1HUB={=sSB zzet0p58y}ZFGteIcYGQ=ucd+CnTF4!)0F=@4WA!NS3ZqCRHu>SRcY{_k_JyC&G?d$ z2G8|r;G@#u-D~)~5PE&7l8vfHq$-)2Bzt7Xyw|COueb zq>;_nr#bp)c zzKZ!!>&k_t>@6T~OiVsElvg6V&S!PX?`ki~r@60)n~86uW}~ZN7TC|oBk9;z0I;aK zl06&dEHBox%PDytUDOaHduM<)bdR_*8r2G@fv?IvRdg5ajCYV~Kg~s1 zZTaGPRb_J*v4h;qhJAO1Wi^ZZG?EE*ojyIGi*vuBn`q|8#}YeHAjo3$cWt-UMRuHj zlW_%TQB^I>{CBcs|AR4MY(@2=n(|u6DKYrPwfY;_H%VI=@VYS8u@+X(!+4t*jb|)g z%Hd{eRUPc0V=jzHoujVGw*>asF_)cU%xFjD!t%<>T1VxA+PRg`cno+IH=g=eg-j8b1*UAC|qc6UKF8qC%q1B^g>D~1neFmDW#i{jtrRe(oK z#E6;0e|_YWxjM}0|N# z7{_t)sc~y~Z$M)BdI%Q2!GHbaz2mLANP~W_2V$#Egz? zCvLk|~qQ3yh!v-G|1LC>c z2G6mTn#i!O;;Ce-|e3lXtPdEE}A4$NsWy@R-gqZ-5OB#f|^v*x;5bOWsf$934IW zmurI`7l%3=1vWT3Ui`1v20uOy#k#5u?zF*6ZE$;>Zk7#hk5|sI!B4W`nQw!0{VDcW zV}qX(1LC>N20zsXueZVb+u&<#@Bub>lMQ~F4Zh9>KivjjZ-bv^VS}G*gYUM%2ixGCHuw-5T-o5~+2H$Z@bhi(gEsh3 z8{9D>q5s2d@GKkrdp3Bs4L;lkA7FzsHWvHKvB58l0r4DagO9Mmb8YaEHh6&zo@;{_ z+u(UNxM72jvcXGj@QZBlSvL4+8+?upZf$*#-1#=RHRK4q#s;^x00?}U4PIcwUvGmK z+Td$!@bBB;O*Z&A8+@G&KHdgjZ-W=v;2Ui4i*4{`8~hR*yu}7Dw!y z1|ML9Uv7iv*x*;#;6rWjQX4$i2A^t!7uev_Z17?me7X&8*x)m4@KPK6DjR&34L-{T zpJRhxZG+FZ!LPBwYi#gqZSZ9__;ogTy$wFw247=?UvGmq+2Cb1_&OW>1{-|64PIe` zZ?M5DZSZCryvhb|vBBrs;Q#sh9}fJ71OMT`e>m_T4*Z7$|KY%YIPf11{QrRi|8$;p z*l5_BWdt+d!5$$a5cVC@)nPR3$l5N=>&k!ZD~F?N$ZzrK98`>NOwVUtq_YcuL+)pq z!G%bNq<_vdLv@j`r0-<92h+`x{t?p*T}IYRdNtDw)kT^leKXSx(M9SdUCT75ZIK#D z|A1+RM5kGtH1# zq(jm_XPTj~NLbQ$GJP)7&655R(+qt@)=PRd(+qhLp#vG(%jG8cF|v zX@<5Ub0mEO(+p`vN+o>_(+p)riX}ajX@;;Oxstw=X@;&MIg*~hG(%RAY)OBgX@;sI z4oQz6G+2Ofw`E>5%m4OfwV}2}}A!rWt~YG)uZK(+oXD)=T;r zrWtaIG)emKVWb&qiquQ`bEX+$iquH@Bc>Tzip-JpyG%2r6e*ST8%%$n>0(LmVtO3Y zxsv`9)8m=Wk@PmE88V7wOZr)+87hi6B>j7)86t}8`%>i3bTQMNlD?m5hJ+#=lKwf< z6PON5`c9@NGTkicA2H34P-MNNS2N8}P^3xHH#5x;P^4bcwM;Yg6RDB(513}iCo)IU zH!#gmPoz}R*D%cxPo!AVQ<-LHCz31aOPOX!Cz2!S2~3wToh|9_GtJOW#3AWXOf#et z*>_mv&oo0hkxogU!}OI*cS!nlrWw+Sge83<(+uTAnkC(rX@+nj>m_{*(+u52nk0Sr z5Yi0UMCv8|Iny(lu95UdOfz&7nIq|UnZBCoQc1tT^fgQuOL`a6*D{@pH0^!f#~yR% z^@jPb(eVDh(&_HJaNY|>sHprt82VHGfZ|`w9pN0*h*vNmgo-{p!bj#ud=wt^or0m_ zcPPZ6qEA<+b5K3YZMU8%zg5cTKg-9kBZj%p*!syO#@2&9jEq)e=Mmq@K(N9>kk!>W z*EtB<5PP5W)fcV6yAJzd+s^U|MS7b1735#*F3Ba+~#n& zo@=Og)HjBGWnQyOZG?j0`!swv%(vBkB;9%MH-`N#Pq05^+Vu$O$s@8Dw|mSTp5P_k!cYBYc!C!j z<5qO|bBy5fEPQMC5Am8GssK!n>O9odW##)i)h?uBg?w+S?MSlZwJ4bon8<5dDVZ3& z#0YfxGS!dJ7QAN|p^3AM!ZtwGXiQ+@!~zXj62slFeE@wQqi~O}_qDSl*8_g-?Cplx zrs%;~`l8wnfV!#p(E8!Jijpg>G=e>c3`H>rMtMX2-Con*ZnU{OLhEXws{tbAo6t98rBjHxz1wh;_n()mB z$&?lC-ogWD*b_)4s2Jx~{(Q8i^jg>Tv$sc&iGr~0iNdS970xouJ?dB(J@p#$bibtj zi++lBCbe-l+SraZwxEq+-NtrD@XSBKo(0}?29AeM*qm`&Cevus5O-czG`oqA7C>BG zZ2)Gw4zzWFvwkJ=jJ|`edFj8{NYI+O2IbKB`498qZ&6{br1@w=3v{dka5bI`fF&Y& zh$(OXvvfW4UVw_J(tlA!hPZ$xn#JmSxSr1NhN?Dr&8l@Edc7uk11lMzD_N(mMJ49e z7AUTx@daNW)U{46y&AC0&tNl{^cH>yUQdMhTQm0pMj^Gh8@qfb0#D>2kR0d+EpgDZE1A)n*4mW(Ue?VqmYbDi!NkWchXew?5sWmUC%KdV}$t6Bk^l=XH1 z?XuqO7x8(av8q2Rv+S|R5Bj-kZzm}=Hx7j@G|aX1g$*-QfQQ!%&{OuBAp;Ne`TPW4 zXmUf*frB`AxZ?T*6q@A>yiI(ob`Y&7m~&Ww4!CnzXpTJA*2rUay>nPqlXKXj_0D1b zX6LXKZIN-x-XB)&&7qh%?L#qxMuGjZb_No^(*6Qq$Np+JXJ0^=Vl0h3DFjb{=}DhY#8&Ca3j zuydGuJ-&nW?s}9A=XK@nH_SKG8~^O;a+y22!p=1pgM4qrK{xE=c^n1q`vL~nY;A?{ z54`U?l^pA8^Mq#NO;v~2qCLQM;HpQC*Tm5NhWatU6wCYjMJyxP%}%$Czsze#Ubp`K zDtH@xN1BE%%s%XFtQWBy=;~-FYQQ@V-#BluXf?hW!OV+31Fho<{Kr)q4daLK6^Cyi zD14u4cl8YUu5Ap3C>g! zbe~-Z(p3fWtnsCxC?IvL4bR^GztMlk0$b1jv;O08qF7`y}`w z{dYBTZT)u~;PL+ZHu&6{IS(a{+JBwMK3e~^*+cf-|K23}hW&fi?OR#2NB=1t8BB}j zWPe!)KsSCofVK!f`hG&~yqGMZJsS?VCpboH=*ypxA2acOGC%ys*)6p?u#dV{k5bzI z4HfZhdgyV@U~{w5CbgZX?yu7P(K6|$&aFvq#Fwl_PQhz zw7(iRx|N2hO(~~Bjlibqi|5bYF8*}F|I0PZS3Tzbgw?}<1cwS5uDMCGVLhPh+>ATz$x+?n_hCq$N z4qs1C@bYX=;VZQRTrFrJ{3!YYdAssnP);-guX#dOWK3x7SuoOLUYKI@u8=%t#%4#xVF*)}N47ok;MV~kc zElbWCjjS`6wFWq~q%F4G-mR=iIvbo&Zz3;Y0k!_i{4O_v9bR#Keis~MX*~oF<+8NC z9byebtZz|~IfoCmIU`=@s)~Q zvm@J8+`loHo(Mi8-!Kmv!IhYBzaFmun9q|6`Z4O-_(F*j{OeI*413+xwKG1^?w(-e4WC*z4E^P4|ZS{TYwOT~Y@O4Xb&@R!x)HVFa(rg1}O_ zK&#a6EWwd^K5>M>h^G5_$x?f!gu0y9#a3XlHBJ3?>NaS`v z6NHR&clyT|CUleiOq^h?DOTyLyOoyS@-BF+9!Fj`d2_swSQdtg)FvAZw`Mt|@!rNEyU7MOg2&RjCkyL%Ei6RTL|AI*hwMs;@jEeIXM1Q^lavnZ5eYnqWHf zE5_<}kw7aZR!I_AMQ~TECwK+q|FU=3e&_0qL}G43u%%?!7oNf|yv~UqcnkM|J0HZ@ z)nhCb)a#t|0i1*mPs3MQHXT|vo2j4FWH`ak;=?+U1hq*t=@V zKZKJ&K`rmbvEBZ$nq%4Vf#1&1-TnbEt!wTUestmCH9tqNZ7R5`UION$>bH*8g1=uJ zmA}4~h)r&x{faSlB3s&Uu*=zaC!pR?O-4!Zmcd!x!h_C+Ve}L%Jsx(Tq{ryN&@J!^ zJ_2>i;?++;P!g|z3uAdj1X!&`=Lz;4oXoeRmOC4Ng|d-X6EBnmM-TP{ zrw^v(>4^6vivnki0%XN3kB7Zzj3uq{2`zr|y>FI@@BC<4tS{_W0bA)L3Nfb^%al%Z za50Nsx=Tbi391aydCfzR-dzx!a=xD|Jd>j;FJdT`_GJCk!a_=?~*I=Oy6ku5zTXL@e+Ey z^|$19jr5;pbiMqnw36h=)4Evyf#7i*4SOtCbW7DT73d*K|l$e zbq!q9^)PPE#$TdBt$?&YmI5-a(&}y+NlLu*$3r(}d(Gi7liE5l+u;c<&7dPV5F$!A zo<gYc}h&h9Nxb`Q*l+C)}h3Is<#hVj@seW+0e-U=pWM+tdYC zQU3?vRF*XYCWcg%*?_R)#@uf^ zGvY4s&{UV0i!YP$W^(B)+Mrj^E!EGFmtZ0Ne*>x;D!TEW?gO1|x!v@hBR zp5HjYp3DGY=js=B(Y#x8$xK!G_v990DN&3QVkcZogsDP(v319>-3kjk!cZm^L|%d& z-TLP;i745aiODY__L&TZW~sN2aIK;>HYP(*Es!h5mM{jLm7GYdL6YMkqejhdh+-p# z;&0K$=mZ!e=E^9c=71D$5Qci(@@(H^4<=e3PPD4<0;f_K%VRSKjDcM+4TI1C6hU^A z$DFBWTBF!k2cfSXHyG~xUK z7Z7EfGqFSysObXDZSHzD%LvJGkJ^CUFy7!sW;J3}#7l(1z%rIJ1M~6l6t+4W^8v;L za((p7BzxJ=n&Ta}k)@oC$FhjIqNyZ!o;5kbz zA=b`QWA;ALvR!`@ZsQG%t{73t2{pTtYU#h#8>|4EE3$o;dP0*1gU>w&dxMMMI?Pyy z8rEnM;3DHCx)z%t8J0o*8jm@Bux9o5NJ4**P~rfq2ZGHg-lPtliuK%qF+x639*Yo< zISFnnc?`|O&FYX*l4Es`Kz}^nI&7)ZzbS6bqbfYRewLGtqaV=kUW?<|VB# zDxd8JLoF4^XHB-zJyX4k+$3^zyym($(ZcglUAOVo2oCZh>ftT?(l-plZ1i}s-$uiB zI5uDUPBMby_?x8hKg>7qX|C@*6y!#;Np?rM_y0n6()c&1m1eyn}P#qtWX^QQQpE89ljfa#|B>T6*n9@$A596Du%iz!mvL9 z3e{y0U*4O^ndhZUsV14{y3AfrW+avJy`f$K%adUKy+AvQXdC~E;bok|-vjTWNIc%S z+y4R;{dv?H_ZMvXk>UaDHY#A;`?bA9Z6CcA{s2UMK)o&v?)Mi=WL+)CApv0Ce(>mJ zG~99szN4Q$81$y~)3HVYcSt<*g(#QYWXx&lm3Lb-NW4?f?H$pdtsqwY7e470IrpO9}Uf(XHjE1rrgQOT?hlSrT;W z3)|VtwWjCb=<%?%)->vLYF1FZr&zGW8?4KsB^>Gvj>EPu`*MB$+aZS(j zJzYCW3P13FlpveBHvF5X=vba9Du*al4O*d=qxu9xy7>bJJoOX{(h(c}VKU(1A)?~u zt&fgBF2jfV19WtaJN(BnO#Ds~TmLwkiC;@%8}uvKzz(#cSu2xh67`p(Cx=H-r5&Dz z9k7h=(EODE#5rHddLuY1D|#+JjnFhqL!d(+l$f7#92gA;St{`>~)G_j;T|F^B_z_eoNMI?F7&DcxH1W+l2-x zHQno@lfVzWy3g782%0HFD#FueU`);MXG7qaLqOaZ0nM)H05u$BLfpVN8EY}e>p3tm zwYk^fZAWWwjx#{V5vUqvL8I6FL=DDXQFCi^M&k>9?K_0}O+|>w)p9IelJ2Nnkfc?5 z{~_r$aVyZ_FGiO!Y~v)fI2zPWqm3y?b|&|>4n3&d4$NvQh_Uw9aet)jKg0Nv8d1jj z<4W|JOR(EfPrb2Gl4FQrzNW6g@|Pz#nS2Zzq0w*-T6@u1dxWxh4n6??R*GvB4?JLr z%efjm#xM~?P<)SC{)&YIo6N2R1M6?ez>?S$BiMtzMpnfTtMK*k1f8D3mt%`!c#{JY z7sU>vGL-g&F6W|H?nut$kjA1Iu0p{maMm57oGlWOh(!zC(n%3nD(o2%2J)Ro#WJ$n*Rs%&IKv?N&F#YjPt1Go!B**V+cU#aabW~lKgesY29 zA-dC`66!W!j$%BqM~p0aeV8n-4!_7N6D?A6gbk4PhrYk7X{psiUQYn_ei|-$q{8%M5uvLQVb_@>+?-LC6bowB&X33QJ!7DX%%mj>+r&J*o0K2Sg={<6FsV z!L7jj8Zdt+dCfqJRP&3Z!IIYlNF-Gcd36Ey-^i=LF#jxF>~oL#RpNa(9*7b{k3Yo# zh#A}lRq+*g!|@EmQ{gKZHL17~;B56_0P7QV+99!VZAOd7#HuD%!|{}HZ5YNiXnaXH zT3k~2FK1(+%yuy!?>44k@I%2ijA=84@owO>EzA0l`Glper1@mVpZ;>7Z>9f8T zJ{ephv4-O2q@h?+AlWc4!q5RzON-5&m6zE`c7tS3;ak>XCPN6_NX9S>o^cp{@K3BW zwh${zRMNd;=0uaM8OS~A@1s0Npdc(v(HYAnq_YoRSVAP+8!-^0EY@t}-5;ZDWItxQ z9Bm&|*=Tlb|6s%3niR9iEe!3n%@IUr`8)wCjF8fhxPuL!n2V^0xK(TSayJYjB5wYU z=#A({8<5+se#5np(26xkY*4?FgdZ`1J?c(=4>AMs0r9P~g$MTS>qlOYGN=dhM3l)< zdjW}_#yYU+BttDi(reZ+L?_$m?ajv?5go#IT8$M9>UgRfWzqKXOEz@EI}86mOhKihy9By=3io% zrDr;`GyB|xfYS-Z+4%Yi+-BzqVB2L`tv$1_ITdk|2Y|^{e+lAg*kFRSnMs5HWfV@# za^Bt>jyA@rPP`NMD;Bg;CS7VLo<t$ z2O6n$zk2C;bQ_d9q)YYH^~_*By{vj3vxtRsW zMa%6$Z1;KycpV+uRyWQk$cC;1zA@@0;kmrME;_Qr`~*?87EfpfrzWT~ti}r$KPoZ* zMd}1`=Ci~@nb=wCTs@i1LTm5YA)U~g1Kh|OI7q&WfQ-?wqQ&8#3Z({(?xr^PddAsF zT2CSEL6BC`+?F9wOj=;a(Wn{Nk=BE@Aa|4_QUN$F__6<{4)@Ry`v#e_ZPv#X}f(6l2YgiskrDMDppmfFeST5 zXa9}alT)+(eh8W*tKr?Uu0hrV%*sYqbVwA@&mC+%yk>uPbU^eZofhi*sxMinhk&?Z zhxSCeVZ_qnhpM&>=BWs6wHuJc`bsIxyEPTUS+RlbP{zD^#|FtH|*lG zSwN-_S+RAJP|?FcrA~s360-%&f6*$U{0*d^XhCBBFY~)^8xOe()uxGuP=Coy8bb+k z$R?a`h==qQW%_RMkX{hO|0o`Er4KBcgI1^;QGE(OoSQP;TOE$^RsLSHBY!@RV?S5l z>LHxCykq0V(1g}9IE0m0x*WlIP?`78Wm}A4+l>}2KM1fP3_HEu*|-3LmN4WV&(^L? z#)?W#=!%!?VQmKRZ2d5khJK9*8PT~51{fLWRACH>Jx`;f7{pej670~0OBY)#JsoBU zZpEhC!n=-Oemax43_8-?9j9`h}9 z8g9*XHr^s?IXf)-2trGD1a+2v~Og_WY` zb3CERISkJudIhEQol{~i!fTWFVI{@?9ADJo9eB6<)uAwY;SJhKg*ke^8>SNT1%(Q3$v4cPBsFa@Coc-R-gZoU1txx3v~cBCgeyQ5o2kWgfaOKC^272aqK$GvF6O4<`r4uDukBic+I8RCBYm|uvEkp+o#IO zu_dW7(ph7YI#m{c22xOcVhcdW$JSduP=5pA*e4REq~H(^fK-aT=8d@}!Sg+O19-cv z@8ozx%X4)dTuj>~eU^)9R0gQu^HL3#9H0-VrsrVS8n;7sfooq~)sREF65BRwvgi9? zF}A-kcQZT=tdfUH)~lT| z&4K$NvAv&e5xQkDJW~abN?_*>(5v-eY1{tE7yZz7SwQy>NiP094%2&}x9a;g#BZt# zQW5)JQ)>YG-)|p~c6B|=k7xLy-o=Cz#9GaL5Yu~$bPTC?Bb7}5zth}(e?&Ex*$}^} zic%4yx%U7Tw@=hB)f=L*HZCXhtu#T9=~lsBg}t4DMidNA?pZjcr~ekjEeoe)`F%#i z$^mf9xoc1iIreW3aQJ>;G_=8>wq_f_{$B1`y)?t^++<|@fkXJDf*1VfyW}Kn;|tD4 zZttrHI-}#9_rW@cLp|N(Ea;2} zb}{EFK@HHAQkih&g@qg(#E9;80gZ1Ld_`D=Lzt*btoCId68sq$zzHL)E0b%GY;!*d zstCoL%>SU;@jl|s+u>kZP)xV{>(%cF{aen~`a>E1{s@NWg~ydV*wE3{(4G+;k{6DY zgS@Qm^k*P{AujjDkDlfBXmTkOvgiVvjDi5jPG566DlM zPULu`qF4ifL5WWneS@NtlV^dlu?i?;+M2wvO8G~yZ)}GasI!36j^}lC93Tn7@-apjqU*oWF7);gY|5O{&Th$=!v=M(vJ+1Tai{(F})4z(Pf2Py-SZP^rik(+U z9V{>xSs(1>GM{&C{df=#kGKx}eUj7YbZwy`xf;IeTRY3Og?@R<)%~B|Imvv7+p`k( zv*A$1k`b#8eTb>kk_%QH%0A!Ws6F5Oli_@#!`S-Kg|3Fyo~sVscUy+T+`05sq`r>! z!RHYi#pcco1YmF;hQ6A$+nQSgr-a6ngWS<^MEKXE)p4OG<9QHMSzF7uv83}pC$!jK z??RMd5{?@!2oDNGuQax*Avf-;oMe7D?0|FA=$o9IZn-JLwdR&na0|ibt~I_>(4y8O zu2o+-K_?o!G~95oZ|!+z*a#ixFmVaSDL*FOP2LmmR!Ig1r3ul#K#x*&ZycA)0ZKLu zF?`>%z=1G6_mk+OG2`4Dd>Gwud?(lk+tU%kSf8{SppVGx)h&u0kwHUas{uG7<3iv6 zCP`eLED5&%f5!jrF>PVKj##UDSXVkbHukTu*k6UYu*B#8r~Eg>jHA!3q$F}}k~oG{ zBuV0A3ff-2t|KNB`f2WFODOSqqmi*smUDaz16YCe-)w~U0@9E-z3TD$&&ov>QCP+&t{AtDe|ndB5StV`nBfU7fw9@6euFnrrr;=L@=zw1 zWo}0qyOBmjVFxRhiLO1~no@QNQ;7OLEh0OXJvbcxh zCo~m!n$~j_o~erhzP{>NRKx%R7v^w*$_BVQkEGV^$8_+3%7v1vFOio}x77K!?8f^d zWdR;xUwsxw{SFM4&9Rl9pqFO^{$vb$!@2q&Y}l~fp3tp`bzJP}F>o*hW;iF}I49<$ z+_1ncwD4XJ^G^D=R7T{B}OfH?R}w46sPu4YY6pC#BBUSM6;Kuc-GHcH-Pk zXGswIx*wV&r4Pz+o3r5%)f*wXQ3A*>r3_8n2@#ZwIxvB6;<1}E<=749dnMd$cRYB6 zeE?qbT^0F%eI8Qe)QfO=ly=94Oy0wa2636Y9qgMbqa1))p9THO?E{%=VOos>us(y138U z0_JR70`IGSGi8peCit7l64Ki49TtVS>k*WZ%{(9B2(Ri(@q{)KD}y!5fy0GHBoTEt z+JYNuoQ-db^A2&?sQMFN6b7QzjuLJYdRMg)Ct7B1^$vT7g2Argc5ld1tJqGWCSYY` zvK>l_RzTCV-4j!F|KLm;FHY7krsro6@yD z6}BaHEpDj9DjjAhiDT~USy&)>L*4N^wk}=IVjI+NvF4{$43RKPW6-~z$D57Vswuj4 zOTjS?-zd>B|8STQyOqMwbsZW)&uP^T8XsHK9?+z($jTm^Z}H95T)Z+T*Zm%tA6=7M@N~w*(r;jK?^5c7ku^S zV2@W)NA@2d+nj3|wCTW;M2!y7y@hJk2ISf2Z`{vs9t>Wdg&3T{5Gj_zu}3LXoa2Rw zz)Crm%tKe@7==51V@t663)uM#NGK`Z2MOqoISx|QY@~UuSbU(=09;(6V8D;_qPxW?+-v!Glse}TQAhynvG4m z1At9$2V0g4T8m?}B7}EUaT2X@h^93c2n#@C0iMNp7L(Q?pfwk?7Dv6H)mH{O#pUWo zXKo6e%YS2|(?VOCYtf0-jL8KSoz{ZyD{{@NVZIW5FLvH~S}7*EU^(cV2+FyfzLr>n zI7!m5JqIH?mNE1NZz}-D1#bz5C^f!n3p|Q1BZm%-6}y2dcqX;s;Dx?E4F`ui17D(> znC=H%oAHdVrN|hk{N%n2aLbShV-7POCcUzNYPNfaDd*}i(3W6-;V=xli0kzjj_5QF z4;QC%{A0e)d z+LXn3k?aWzm1dYPM+X3BR)x=k{VhYODr2NRymh|mMhdo%Jj9x=!1 zbJe^dEyo{XLCjb!j`R8rLvwr-o1bVu_;*zP&--Tn8!7xRNag?O!vB-WdXa%Tcc;bw ze%NwvalBtNn|tkr{a|+~+LLSpZ}{dJk$(cL^~kH)w)}_jfNh7VJ_M=7_DfK(z`XyF zRLq!L>`^PBvg%UQn&1cf=j_PCUjWt=>+g(j@rEMN+vL;koq1hq0g%IY)Z>y20%{CF zp;KI>DI^DNwp2m{@Pgp-DD^OgG#oqgn&SXbk%y>8t=8EaXp>B5Y(586ncLZ;`hb;Bk?8~EE}f#%S(L~rWq6?6 z>6kUa8$+~FENX()@%f7^3(NM@*%9u>PZY83&z1P%s=e!w?=oM}M=n$5ksTlro3F#_ zc8HXOjm4N7+DH!qlfrEPVmW%EH#Fpj7~o5SW7HE5z?aL$l`-(w;3wkE74Qe6UO4^g zr;-Q#IuV8CR++bvKb!g3v?WX~34Dy(YD~W)uWOR|?j-Y&%iQh8j@)%3&^EC)!@-+% zs5x1$&*m|yRXf-io4*9g`l2$4I;$sv#5x}-`$ps%i`kLAFf&KxPi+5k>fso@YZ*gH zE2P1T_Wp#1(HQ|RE|7aCK;c}#po;cud$v<`ko6nT5qTVhs#W)cTLqYMI2-R}`W>X> z$88W!Zp0m57hjmzlsnz*jXh7Lo% zH}v>=SNunrF}5;GaX9qLcN23VG$pvNnXt{05LcIWLs<%Bh~neSM;p+>P> zP#{|}DW9JRA0U^f;&P$0{U?Zxq6vikr>U2aK-2e42R6AN2|7NELsDpCv!L!$Hv?}V z>~gM!ugyJjuqSK^PooF#WucOwkD;19DhDOelc+_XTbDnrAPt%*z4>GzDzvi`^M_Gr z$|UIzWL8pt*cg_YgcjLI_B31=&O$e?2VN*Kyc1b&##{+UB{!2CM1r_uZ98i=0|F5( z3lSHmONBCB8UjV*tzg4xf+r_<2Qr<38DMpUA2Qg=Txy~e;mUlVg@}S7qSm@7^*T2V z(u>0;O4ffl5_ezF1u!3~Vez)W8a%*094`sf$G(Q{6{1YxqtP<5rnb6bWL*{N5O_<~ z!nq^ybJ%qNv}r7?+X*bKfmetG1K&nm%0=$qiE8PM1T`1nfM%*AU=xBb&c>5KigA=J z=0-@W=H6Q!PXZH3DCAEfWltWaOX^?j7W8u(-w_qC3g!QjgRjJ;dfZ2wo8jMr;CBn@ zIS~Nv)39knH7$nuY0}*iK?}1l0MkLyzVRz51g#b|+Nxflj!NBSkO%_;Qz-qQ(4dYL zxxmX1oxhhUShlH<54F@VGjJy_RRZNH2&=oP_fbo94DEVcJDq{+v91;22P=6O^v5cB z7!`7u(0!F2i!hVZ&$Ccm-Ho!5lkqJ{wf)zkYaJ>@SDcI5lCz4D^;>5BfrN~W_KNnz z^b&_RFlUrLj4AGVHUQI$@oEh4C%x|*tL`LyEFLGu|GjSS`gbI~#=~=a)EY2Jy@z_c z75D9o{?u;J^!`x{9`ywy{4wSa5RM4gzBmxZ?J_Tl=m1r!f0Xy85Uyc1B2# zw($Nt;QfcOd7>RH#O8?(^ueNcu0U(6EZ$++7wg!q>L0%#p)0~XJLWY%r9L0zc_IYwEd>Dux1tM_dX7Ta(sw%@P5Xd~Mz$3cA)huAqfN?YoM*wEyd1Ml= z`q2}tI{%qi`evrFDFgVN8ee~z6iJ;AXq3Hxl5Wt7@RnW_-Unz7DvnY1v@X>N*MajZ z*(kb4{g7>x-5zwwD}I@*(zp;o-=2uAO}0%UVeP=@cPlL;&KA_GOyni)htT@P&_vSF zV6_hgsj%npWR)s&S=X{Qbjpb!F7gbSc^V37KkKgWq^yI^zypA?Kh*H;_zjR4 z*nfu%@v_>~gUFK@u66w*uEC1kD8%a@H%cw`Y3BQMxDc352^%sxJBvI?oyqfB%}~+D zQ>8CL?WRGvv^{!QU&~jz`CJ{?+M9fUAi*bYv!d7a$Yp5qCQxtLGL6p-e92`+-YK^2EmpAq^{d@g!YzYYXtI!|z#rornbs#9YKmMNTo75loeJuwXVp{*TSNh{e9IkZ# zc?GXP-{xBV@sKVc<5{=c4TIcb*e_?gDI6jkEb zCc7gd)($mOmx~eB1E?UeD@mBu7yt3It}f2Q1w=D>cF()J z6&7&~0v+lj;_2wC7eZKn1G$ zxgP``=NCX{(RbJ~_*Y6NAYniIQV2UCPS|b8LIbhI(lLmFjUR&!SZeY4X+hy~-qjkR3Bwo>d06t#P(KEaq)Fv( zkpaGQQW-|xH%uybQUunOwODoh=1HZG{O>lY#LkXT(TiX%+!si$TKvq|yz>9y6|~FV zDR%p(rC#})oJ|Y&{A4icFQ8ppIO{gx3SdhvD_v$UI;MIWdA9hA-k#kEMx?IyHtb#I z>ULroQ%Zeexn*RPuVQ3nwa+l8WVcP}?^|5uV-GqOcv`2NfzXt7n{e!qm^%!UQ{-g( z;W1-1czzeCc>$3-XaH|P#_VU0di1AVh<6-NS0b=u==($rxG;BiFxl^mOZm23G~;SH z0X4~Sct3gx{Gs*mhnkFFE(EGCGuaQHK@O|vu^R-wv<~z~T zXzws{iUWL!rP75jikO+LSa1(xD2-u=F3Jecy}mc+jP zCt}ylaca5}1j)Tnz6we*{1f=MPbb}K(&22J3apVo<3p7KV-TxWXCP)K+iy-WY@x)} z@LgT4JqM@gN#lupKZp-K0&SWi@4y=Egf(Kd9#osGTa8>7h|FZ2UepPOP! zlC|WlBPCiNLPb;1Ds5wrg^yrKod>}))uq6Ixpq5w+9SEtAXeTvX5n9vu9y z6bAXBwnY~+s|1ZF6V{>=ia8eT(iQJSUNT0p$k#yVY6yr*^8dMizMH?9X2y311^_x< zYUPV!NxyHK6kP{eVL_~E&gCg2bjHS)nAfFVY^J*b)~N{)Deo@RFZ;JgAzelTEL1(Z zp_1187|Nq&BF{Fy$b1RyS%xW-EBSUMOlj@6D;aQ!C*cT-{yi&k9(TLNxqJ#@MDsCd zB%c;&4XlL8LGv*W4sGOj{-%lwXs@CYY+27SWk!f>pvRR7W3*ce zEZFl7ZO_k45p}0CFcdl>%SJHZGLfv`Oe_xnjp~jk(B*I+9&M`qELx?yi}W+25A)VIN@(X2;7>=P1ebtjs@#X{LcB+FXsF%UTelTmquAGnWJ z1QdJ6e<7sBGMFVnY*wTEGwnLq>A#Nbc?|+ndBP)o0O956S(db8ym%o7Ax7WtR1aM` zhSv9}`s~Na`rYY!P?eyR-C>NM|N1Waee)zszwdjYn||LCq+nx8xj2;s|B~cMzuNn_ zuvWd#Cq$KF1gB+5f9aQxYP3tCUCXl}`{)CD!InzzUmtxSsS7x|)h1oQ#CvKw^6dWc zG{&RMFV#X_f8loibR2$dBGhlo#8|Z$0^poK29`}K{3pU;$-#jX|7<$e%-{p#{MG^c zdh3>R&~0H|cc6Y*AexDvJHU1Ug!CDv$Kthf(@t1H3HDO*UKy}ETkEcw-();Flxt*PuLIH=3eia zRD_iP_d2ix;1GX07Q<@}A8mo5#3pSZoca9eSmZnSc;+hi)M=h8E{8c0cw3-9z-7RQ zSF`X{{QJNe_{LZFkr<5Je6$4=9vU^_@G**&5&UIlE{Au-ZyNvD2O9&I7dU)4@-uN_ z6kA&Ns9C}eY;xMOg>llZ(p=}34v0qDk4b^L9jfQf`xr~z1aTPP1}@y`Sd6{d6LG~C z;-LHy4|Tm*1B-FRYJX$q9K3LhGw?3fbzJ+O&+wmtm;`1BCGhX*guDbHiJQr_Mc4iv zxQP4*C~5>Z3M+ykwpSOu-zpmLNP*ccSmx>Lyln;=1n0CvxDW{Afdz_YEWiH?^P6Qz z%Hky5ALe05oeE9!7J)nD07f*UnAHs^r9>h(rSH7;BuXz@yORYt$NP^)WWhKQ(f zHnb_S4HAQ^1?$D%l&0gIUGXlT(r1Fbbf3X*Qi5CT zG3QBZ?L8)PfJAC@qh>bXJ50(DJI2uXp~k8(k)Inc{aD23vk@Cf;6 z2K1X!77OV_Cr5kJ{Lali?!*jzMpAGY*7^N1_W~EYb&8ka+4h#49o0a zRxE>#`QuFLI&R=FkX4GWFyrduReXx2K@Rp4U9JqXv7eO0CU2Bt`yo#QCPrOR4+Nn= z6B}j*>iJ03FL{&KE>pRrgtlX_@V|x~h`+X03Yu$)3!BuxNxuq7V^CW|bK@G;8j=QB zO>C1y?R+fWw*{tyE6$>E_*plPEWKI8i7K+T+gw>66eG(V%Yra8G?y`>oII2B5P0v zR-*-$+TySvm+f5YcxohfVpSphjmtez@Qy@5DZ>RP(MJ};VV#gLlm~ydIajx%k=T}u zpTF>*4DL!+FvK>qV_;*mB~v)d?|~|>`K1T3PY-Tu42n8HnJG{@y8U?yG-&AxZ=t%{I7NS0W42HRPUajtIMBkZN{1b z@_(tz|4^5IU@VJr<}j{1>L2Q&PoSt8*qzd;I=hM4U*7`HV>Pr!hf>#TZaV|z07Vw@ z!^MyB{J54MSMehYA3Bs8GiuI2fW#*x>kRxz04aiX2JX;c$~9(+uq`BTmj)+G*BS7m zrsSc=8Mqm+6xpl<2rjdF8)8?5XtJG>#wE}db*?~D$!Yu{^Lp#N6q*_rGA{}afr1pm z8aaE4@LpuixYTTe*__8jhepq{4hg0XKqsg>fIHe37@~_}WjZxq_VGc!Jf`{L_*&Ry z4L#1l6B?YO!PZ#g3~)+p>u}Bh7szeAz({ij+oR_q>eHK!+O{CaihnMbJX^Pd$HR;_ zkde&(##Mxm0%EmUzm-C61tc$SDV&W{2(8x8n6+>QE+$*~k+hzz z_Yd3&A;Qci|KeTzJf%K^5GuNMG(6<}s){W~SbQ9q&m~62IDbNzUIL9RF@AzJQLkPD zA&6WvsG8W|@W(-5u3C<2xh)FFI)Mea`)J($2cxgp_Tx@xgeW(4JrNe;4K&B#jq5JF zhbS2ko$KXxN?zHIA^tEtKZ~q)tsNILL6#eX+S)J#VcW6U57Z@gY^wD)TlWnn?&~#h z+(b6vSZ|rQa{+a;`P)#>QL10wz53nY#n*C3q{ zXB_(+jSWI>$)t~y4uGaccsu16isn1=o9n!ZE^s zrmOzelO4{+Ndmd`{ej<=eywS5e`Rk%aW~4+{MKmyZUv!H``M&zZ?m)c+LY5B3$aaUy_5QQn* zX$)T)ye9P$^|?Q8kMT>T%^8W`D@xr@nCRc~o1FfZ1bbz7SZ~~+wt;u3;V>3=Fnflz z8ZDjBB>b(E-(KPUX(jlni*Ipx+GQZ?^3Vmjmxc!B$`5YfCyg&P@f{{t{a2mt*(UDH zp~9a@RpF-GUFrdd7TrPLpC(tL$&nI-mT~wZm-=&5{=?{Ir_#JBF#lHL>+@JOg8Wq1ktvPXj+6kb}x<75hH{G9B@{N1a zMq&u79)f}J_qDl?Us@K!I9afQF>sT7! zgwe8a!431P>#$o45;R)yWm)ZrI^2xwex9>K2F6<5FTok-&J09T534XHu(F~g+W|6F zHmJm*UHrb{STv&Y0$E7A7Go<+5f>5m!8zn!o5AAwIOyEd3-E&@! z5-K`NztPT7O`7qcx(+n)#56{+8mNCs@PgRSL#{1FTDD?f_I^HGJm$k%6Ab-*kGg0r z8U(GfGwNmD9=}Sl%oLiryKkAu}b z0SN)>+Wo?a@mOSc00E-?`#3TLtpmxsosAcx^8!7=m|RLNL0RBn`N$aN%C)Ds9}jH$ z%{zEo(tRYo{C()u2Uv3kO>8Qrwpo9NVh2w}JgUiyElb{DNLYhabfGc-@L3}1yjxLW z=pl|~peh#+gdGa-5Lt>Rz=kqIZTy!IC*L1MW!w-D+MJCn*{;+22vKF;aW;8SWa?@z zg!J%(#xwY^eg@N3+O?4{DK|xmn=Fi=Ai+#12Vgy+y{QJ@EZ;;{_~&atDNE?{^SWRu z;8@O!US+XO&&lN^{qtDNL0sq{S*a2!HmH)!~paB(t zD4vXXpMVhhfNbmGwWzzK2&VFqzXPeH9`5q*^I zR4Oa{Lla!!ZlTmUSfCzgBWv-YCTntYK`xEzt5K{@5@8ImEqaLtlqT`e?}}cn;lc~N zd8ztxG3c2XU6G7nm3j~GZZ!B#SAS;tlcL8E*0}pif}YRy{A4Wu}3;=}DIVUM4V&VFO_xkJJ5p(8x0J)2Kl-81@8)S$_CW z_cW(_pUTDrA3G3`)2wr73Jm7#zfpuOX~ZfCmRQr zY4sTLBBw}>^mS$aj-|MvLfe7`XcUJfxg`OwC#tJXQ{7C!F>vL;iVE|CxtxK9ik1(R zE~UV@$mb#}%evs^j)wn7(zURHQZW}^Hp2$$eIzUOyVt=z!cq^k2wavcY7E;ztBtm8 ztPP+z%_gTHGU5g>9p*BsewD7!TI!mb1h`y-qV+&7if#gzaSIB6NHQP_8O%i^{ytb5 z@hZlvD27kox8EDIVThSmyhQ#|(raDs~_eysUih1-F z{u4jWg=22w0)PF3lwRcwkdb;f75k3OjETRdf4}XYzLU6{G5-5)n}8M)gs>d;p$G785}K);>WOY>{jc>OIrY(iJvjVuhCu2kLmig>!4n$0x#IkAL;$jFsruxy!`0A~OO0Xd^ch!3E)Q3TzLSA84LSMV76`%*QXS@&}sJ{n|^P1#E&`ClrR% zm%|zml{x{Q8Pd0&Yo#+Jjf{gIiy=4{3+cF*VZ}PUjQb^b^L`HZI&ZKFgBI_=bZ>~_ zHWpl0fOto!s9mesb99c~EEL;8%e`W^L7%Z{c0HR0?=B3%!@FxI9aw1JuO2=urUo{8 zoeoYvj~9?awHz#;M#^rRcl#IWZ9An@AK7H3Ej-`$qZ`YM{)>{|DPZL3I4G=|XT$zx zY!|E4^^&?QwJu+~dIT_={b%e8*Nz-UtGiB-p7bOixU1;a9l|+`PwZwL!rA;ck!fy6 zXgM35TXu$J;Ytp<^Vk-TIeI+Hiw&XPP|@VM^m)3}#d9flY|+;a5KjyJ0@96bSZ9$l zP=w5old0HSY2B$o&Ec`s3#hkAo7DI75;4xXoSXW+UFD$5ic|dgui`7hJ)Cy6v)0tT z>J2Nx#kE&aHU8y~5N)pboEN|68c&8vXh(c-_%I zO23ccnA;79SgTJVXZ0-d5)<~={-LAqN5i40C|1bny$0DoacB)Z&bpT($=rD=b))Fd zIie!dK}<|)Si*qkiZ!qQV#~yBjqksMy0=#)x3JSc7KLJ4Fm*%FlVf`j@99=t8gmXC z^D*)gjj`JwYktVxiru$ecBltGWgCvRKOb|30}-mZv+>X9#%Ogjg0z({Xb@xcAPqeo z1}AAAmwu0xbwQLKsM{n^2P|0dqSXa9aa7f=uV5pdTU+m_XVr&$upY^g(hh!o@Q-DrjDIk>>}uxD@!i{3h0bZ@WaDC%Qj zBPx?6gLR}Z7Af`ZQ)H!WIO|rG?>sKt`p7Eb< zOZK{8TXc}RsDe$?<9yQZzi*Z@*l7i1!bbk|jsP(^lYv@hBo*?$%w{3NCe;I8fZBp( z7)IW+!GQjn0l&ad6NNQf(F7^q+NPx}i%!_if+{#7soPeP7;A}_hb127c!&bxpXrvjvZ!m zQzx&mns>rlr08I#S|Pyr%n$qKU`5nCKqKejTMXx^Vmfw+6efw>jwS`RBF16-;v_pt zPY41YmXM6OK0=*h`~bmlSwkG1Yn zkc?D4^%o_pC~lBS#3lSwkYFs;e~sP2>F}3vYB?23s~(??<|P~2Eoz+r<4W#(M%|_% z5|@1{dYpC{B=xZR0rHa2`+luj0YeC3lC@u&_bqYnxEg`c&ud=PIx)+kws9ncIB*j4 zSOdSx+y`vv+KH?TIVfxMkL~LZLyzWMJOat8&mk@x>#H>wg*;^)+cl#Z>hSx4()oAd zfu285db@oR`q=;1-q(OfRh{duJu^ur$z%uu5(Ij8J^X2tVJ0(~Bp8&C1QHDpLqHHP zOlJ0wDU-}}W&*)dOAm@r5xG_=7F4Pf@f0mqM7`32)#A_1wVob|oE}ae`~zz7rxhtG z?Y{4~_F6MLV?gh7``qW=`>>xUdG}i1&-&K4{=T)d_Rd0@YR}yAjfQon5gPwn0llB} zzI^_D?H#^9AqWn1873+vl1z z(!_~NVy>=8FcC|}!YNlU)-^G_9J-fIyoP>9LX*qgey_LE&FW^gHZ;zf-PYdLT3gq^ z+7f{vnV@wCpf{vWA)WnsrZqJ;us~L3J6`XbI%{@Q+k7^Mi>j%Z8jEY)>KBD4lN(|Q zmHdgaSTNAt9ZRXfgce9?YBCj?G-;U@Oo1aBNG#D3sA-^E?F#g^CnGm&6RsfV1!D;< z7^R~otgcfFF6CYht98h(Yi?EJfmEle^+uAZ*lnam!QJy=o3^wxMoIAG=&CTrbW@%v86q6A|pQ> zh$b~w9|@^cwQ!_6q>>$KC<41twG}+c+@5l;ufkthRV~YFoiz)eaF=!>!CWCNo^*XP z8S7@QL{E1r(xnAs-QmcR0rNuIG9$m$U{wuXGAkHfLaqk~Al*>{O9QU1Bzs~_a$ce{;eqU5$iAXZI4C$n|+TF`~tNbjP ziuFX<*yJR&y*(aFsuPxXMuMH((>M2Apz1RL9=P zXaGzYo4i7ddNtBbeFL=#cD9GnZP*gL8oWF-K{8At@-#j}Q2(Oo139HCpMN;91>+sV zl7>$JeJW(`U~(QxuITEBMY9AmT6?;=UcqfvPD8bQYHLGneO>FE8B=GoR#b`)rEH4P zd+XDknYxYI0Uv~diJq>Gq|w=FHYB$u<61Bhj=*l1&8J6rCdEj|B!h}aqaA_ZQqv&$ zg5E%?ziLC<)O5+1KFAb4)sjg|}^sG9j^9QV9 zQcEn0@cA*@jsdDjwx}fTa%YwtyJ0*rDI>3Bc$$WomM1Bpye%{0g#0oFtS`%)>KqzetT=f^rqQu4Xq9JMxC0m4pZ0Xb0n4)#7{x^S1S`^G$^Z-uC-xwx?b6J zVrGrm#4Ooq6#OAXTY`~-_$?&M%DB()UB9-eZcV)@Gw^ z@f`{A^#~@vs6bz3$OICu%f~Z}L_Tku)}E}T1>a}pmb-Y6X5usENxtByV?(BHn2`vh zL!|!KM7kh-ehK*nY4P1?HulPR8Gh8US1u?^EbmRm7vYvCC%Mb217%@K)5=)D=!I1m zqjysAJ}RR(Pgl5@NuSoMWv%C00$<+1tj~jJtfajOK2^9}E-__l1ID&7}jOJw9`C^AYhqG=!Wzj%Scd)a}m_G^%>SN1|c!wO!m5TP8R4_I<4gyqiI-tc2IzQHfdA}=AvMP zZy3Y9a+``;GMx5TGAu5=}S0X+P%wlP6e2d(#G$HYYMn+K66A#h; z^TN%Y38UpUJWTrsK9XW#K8k}qi3CM4rgHfhNIP~msu0!6rqN1?zJw$sJs(k8VG5VRCn*#Ue?sTOstBgo<+QT2XH8VG4Fj zfkdhYb80xo8fj!w{U#YLSkE_#=A2s8!Nf3?S4V9`S4QkOD;&mdnPj7(MZAs!^_X;| zknD+5G^bMV3Lo)k0#3o={}pRsHk~~Bl}f{kiuoGPRH!*ZqCGEI<}%Nh*F_FG8YWsV z_CPeM&@-_4kH;e2DHkg%qvt+o84#%LOcUTD3T-9vr@Xw}Tkb2bDEF6FmRFTmd);1- zx7_RX`n(lhzqis`<*oL)eI8%A&+GH~DtvxlrLW3YUE!|qRFqeED|{6d75<9KimHlg zzuWKem;1ebpTENI_gDI>{MD82N>62ZrMJ>oSyAb)tgNi6tgdobd8*2*yj8xciYk9q zWmQ#Gbu~<^M)B29T@A5nWKo4y9@KRoe*PeEKald$mBmf9+gBM1LDcW>@CK`@gWf<# zRXFVNR+hW9ssJc(g2xvOXkmBI7cQ^#X%*Gw!SZkbwF~(I+5Fl1%w^GiwtTjJ;!#Fg zuWGU3kS6ZWU4_3&u--C4YI$a-yBV;RqHNZZcBnknK&d~Msz;nP| zz~))Heu(J6v%pip64DD)3!(3NU2g%NYlZ!UvvvJN&}-Us{T*O4&}N67z%jtBzs!G`=aMJjJQ1D8 zZv$>!f%c*_UYF?uJ&G5I&H~p1pF#fm@1Q=#kiP|e7#RJouI~gkuhR7+z?$!&AAqkJ zXvb%UqpQ&$2BCalDR4co8MqY~1?~c_2kryC*oSy~Kx?p&0a^ z0&YeA`c1GK>8-#+NN@ci=$F91z%js4I5<&Hcpr}00BeAyIC$FkBlrcl^+EJAACN8uwjsUpr|>Uu*W=)$^v~cg;QA-fe@c+X%O!T4_UZ$c0*^ike<9!Tg09a) zx)j(8+y&fD=@)ShiPFGxz*#%rrbl@(eqb~!IUJ2|2 zt_Pk1?gKhduRh=r@b$e4f8f1{($_%;Mh~GsUWW8x@FBet*o*Y2Bj^vnQ@~R|$D61( zuo-J>gC8G$;+3c;<_G31 zp5`pMc2MDR`zm(LWmjG49dkKyx$Ht<$<@XSBCOU~yv9;jl-q~`1brpY4m!6%(yz}Z^Zn~8%o+E{7LrGC(WurzmOi{8;V1F zi>K*&{uj&p#9Uqtodcb&>ljWZyTE}Y=~*b~7b;H$->u+_H)3AEeY$?+lZc^<>b4U+ zec+*XOY_Xm&|emGOida3wFZ3xvJRmxN6}ut$GvSLdYtsnbneId!O2^yl;ojnBif0+ zyJQ<_;=OKl?t0#`)yvwB?!jXQugIll)Yd6waW!v3`1~tXZPpEr!B_ zM&G*!^cK*uEM)AgH|j$2dqAIZ0s0}Kzmnuzg#KVg|7oEg%Sc9lZASl4o1y=FbRXzs z|J5YlCiI6h`rAM!`)i0kr+@j>7AepdBVNFN9?g{BwA%2jCOyR%@ood}o|(E%|0Xou zW|?*vF1d-9;+~U;GoBcjHz9e)fcGqTDTbJX`?TI^h7A_cZ>Vim%yB-%7jATVSuZ)qi26}qVu;c9;23WX2{%QYPeh1FD&)e@}R zW?r+e_GNrUx>tgKZS2c+Q+w?MZxpdoKRcUII?b7NhP_mOifIqk!~d|s_5;j>a-3&u zeofj;^Y|(7@4=k-F7Yon@tf_A_qUsT634vvDdcSnOftq?azN@Qd&noZHtG7?#9L?L z75&|^Q*vWWfrotZ4*L6aj8WS^nfT52+;2$>k#BZGhPCSY6;#GVlgz?28zWnefbT5g z?K8wT+{7nsc`n0G?PEtgeiCEkUE=>MW>)D-qn`gFxyf!Hcz0o(%qP1~n0U>0|1x7Y z+0zM`#`%c*v-M}%>JeE6@oxtI1jO^aZQn4Jk>US|ng3<*+c6gCMP%Cx1MB((Jrnw}HPes_UPSJ?AUq$C-N5+(i4K#>Bw!4AJ+2 zJ}-5C`caYxy>DRsfL;T7$$9A11`A0Z`?ecV=k(ag^oy^_ z+R_+a3trlztu*u2QEXyeV&Q7suhQr(V#Z{ZqUM-?-CwMN~k zAHD-Z4NjEPcdTstvD(P7ZEka$EZJC#OQ3Te_N{9nZ+qAzWArIn#nNj*J$Uzl_XzQ> zHu1{2X1V0X7y?fU{86k0Cx|~d0Kcg}k#DzyzXt0;360e{6Te|gzj6IKcvqnx4a59r zyUN6Cu4{8n+92|e&4K=kz4uA154PDRnU+j^Z@t}?mhnNR3Nnpo!%Z{?E;q@T%W-AK z5kz>5b1PWs8#T0^q}!oc#3FB}i(o3qyTN4>jK&K+`=|lmII~XL4bdPF{hVw&2EKam;gLkfx2AZC!DylnWIL6kf^cX9 z#;{pl&T%4cQ$cG4U-RAAlbiW?9cg45?M%;C=7Fc&JjSP|_XwBE(MEP}25;%Tc=pgw zA6Lcu!84#oA3&U7rVG1Pf{n(=QSfXA53QH!ew8lIasq68yi$4gVyxefV~m*fnc_ft zwnOw=%yj7o;^Uf(dbWX=;W^4GGjDp{vn-X|WaBFEwt@G%1M_}U@{*0az`GN?1NnsL zeV}i?0R0r`YeC0jrHntsdO&lK1D%BEG^eEfWf~XOzsnXf){h$Sm;5}-XB3k{oa|W$ z`ZJ)P&)$`w@4Nt=o~vyJ{TtAg-pA39IcVtLC*(1$W$YDwpX&26>T6%E>)%8B+X}G& z%Q-&X7S=0djojcr3;s^bL%*Up;6qp~`OQA4loH0gT?!k9eqYyrNM%?}Wyt;9!VEu^ zK|Xm0&k}DZ{fyTXcOq<_X() z6Ti8=Zz@b1H32fC@UZ7r%ma5*84sFdjCFUuWG3E5@Rnda-AlaR{Q_@#cS5$Lz?WRUQ}WF>n4rI z{n(rgG#;l>JTZ+wWF#5#N&SBlegA|>Ce!yDW#6ZARQ%ZRTzU6FU9YALSq5LbsKXe2 zYbX|mbI&2Rq4xRNfO_kt-YHO15B@0H<^|l_eqiDkeH~7O17^62;qRM-XW-TT^@onL z&~X`Tumw#zOl@bKBTF@WwhuC6P?tQi^J9~YsUKNh6a~UIy6~QN!P4c}nY^V0d3sBc zVjG+@M}ZEW)|DZp#g8cnbbhL^x%rPOto_>{KyLUdrT8xv_O3GKuNL;0#reL4J!hdc z612hWO$^*OEjj;UW5+FjHIyO0nB9i^+mzBjDC`LZfd%K?jJ(ZC{xeqgW93C!fOx)> zEoW@`H}GWlA>{^afj{C=zqW!tbZp)xobJ%+8_3!4e|Fn+B zV6|O(G>84jMh}sHnd3nAt2y|yE*GXUsIJ2bzHX{(fv5Nth2fu+i1LP&7C(c!k3gZT z6en&s7^XnBR`IhoEZ~k?b6LXqS&s6sQjOcA$`tJ0ERKK9W$Ubi*5$IzRy->_Z2i`T zT=tUfZq!Z|&wXD%9iQ#JLzyqiyL6r6z@zGWmFp0`@!L}hUQ!qSKqsvp@ox%i{kgQS zpyRUlt!(8(n29-0afRb9E4%)emaSHHm$ifEjbhutzD;St=hsgw_E#+o&mwUDss&z! z|G$hrn!%Oh?SHhec||8IOe=c9!V-=T6n4u!>9(4|9!41tE4!7yzca17aKSsudlt6eGEbIu4zzR1;NM%=otB$alG z+Z40iC}X!}@OmqIUf6T_;_<6&>~>}N1{-@o8U3GD_MC!09c{MQ&sf+t3;jg|vRlR~ zquF-cZ?_bEoTEHpLC<8TZG%70VYlT_#FVzHz_Vy84PN{YGG6A_83yImPW-!qCEr*2 ztn7?Z^d}2jZSi9gd)D%*N$!^Y3j3MDw{NiZ5#=sr(Do7NZDk*iWCyHQoE?c-#`)Pu zwlinggCp3E++jZ&!Jf;-6uCEV$l;OfmAqd;*&X?gdq=Rp@Eiy|Fx+uyB>Tni z(Z3zZ-XA{t^^xrUk`nN|T;c%rM2TbL2=;Nw9<2AU)$S|Q*fmD~xBHx(46hha{$NH! z@R~VwE}}#&sl*rD|gWM^4VYWoKSF^9X-tO_gr>8W7iMbm&XK&JocW|`A{DFo3(gb9@}CY z@q8XTW4rYGdF*F76L9}V&T*;xGKLM*cQyRw=pE%s#x__SM=b0|7OEt#Z!r=KKQl0c zov=*gc}1)W@r4Ud2*c=B#JA;uqF|Pvf^d7(Cxh6}6~`Z)SQLv-IN1)16FGY<$Dr{Z zo9j{PeD099o$RyRoZmXx+C0Z=PWIcp*y~RAyxoB>r2G&2 zplwce)c*C)irBsRwhxMwhw@9nxuL+Z-N}v@Oz(5D#|j;1i`cV;mz*hL|Gltjhm$?w zu)R~HJnt9-ZGUr&1LwmzPr}9gu?M0{ZE9Vgy#cRsz^c;e!(iyruY+ylq>17Yly1BJ=_ywl zC5;qm+RxE-nE|X((CIk~U6TIE-}M-!Pg?0WV^{|GMbAy?;?GKecA5Zi3A5Py;s%e3 z`Nab+++jP>?-FX+%cX{Wd;$i?Hemp^U;M((gI~i1t`&yL{Eea_((bduvBJ$vmj5*& zFZn*#jrxI|XZ>BIBJR>mIW0Z5Lz;Oco0;dU_D=;h&r)&AOM&KraI|S|(cu?SB zfyV`&5tv&p$`?3JpkLrLfpZ0h1uhe~M&KraI|S|(cu?SBfyV`&5t!>0c`n{x^uR?A{D10!>2-CJ)Ct(GU7>m^T;(p0idRc2@Ro;{1)~9a zBTLM7K_eYT|_R$_)=cR^%7qba?*auCvh?8 zv}cfMxo?oDiUP@gvQyfRTYk~zirPfV%YBSQxsQ?MOLQvPGe zlBF~@>1q-C?G_>5Xk@2S8;NcayY5V9(B8ucw}! z+04vty&xb}f20b8B2-mHst}P-1rMl|;GyELs)Pg&^obxLgamzor&95R#6!b(&z;#_ zJ1!W6cqqB+`R=*ro_p>&=ia&ZjF%q0PF+Nl#B=Kw(W|Is$ua(OxQ6cjdwjUd1=7x@Eeq7wRRU`*l~hU48aKL9cpcVH`Y|IvJ^6nIl@%lGOK? z`(KV{`y-{PPsyEi^A7@Ycyv6Hkaa@Y4T|lTHGLb8bOxo1)}JOi%zy1VYAO+$ zh29I2UMKoVcf{CiS3SMazy8h zP;7@_yeO4{!SU!p-BEN{Z}@?4fyX|qgOD<;9CcK3&|vt&@gOLDqHA~%L%JJJN6BH{ zj^-WmJsg1>iJ!fA?7oZ3-z`0y`e0^8A{B&!5oN0_38DlInmOU*sbdv+TiF0S<%Q%p5`K;g>DTKc5Rstz;9cPz3 z!bdI@=sD2x7#lf%X+dtz@1UK5aU4d6#=oi{si5^-?NcGNGLLH_sjRw6|o0rpUXUIP7Vrauq5pR)8l%yk7cOyg@zTBz*)7I=AX zJ*ge0qv)5d1ROm;9|PV?6Tm#vD@=P#e~Ia*nEoo$-(dQij2h!%#?y=sGFIpzTFFT( zo;i9GwrZH=CZaR|L^OaY$Voa2JWQt<^Nb6O7a1R6G#PE6MpuDD)MR`X*u(S(=>!FI zK)a7DI;k1dM-P)h?mGxQFy!2Hhw^YkPg z(q?FjjsvA;lhL9tLeCT2dxJTzGyNvhnkGk`(4>5x(PVsr@do4TjBhd~uf;n^MoN~~ zuuAfpj*Ct|XL2WRSZ=*ta^uYFk~>+J$?4kKS~jEVsLE#1^uUgKX~uM%f*p$WEEPi2 z+Cr_yJ)r8S%8se#7|qvRYkiFJR%m-J2qitP>T%T_wLYPkpH$VSR5hWh(=@r{mFtd} zrb06aMb((`97nL$z&I~l;oDZ+wOV&WyDD17(u`NF*^cm8&J0C4AL7L?)k8tEqExR` z%#tJ8yyd#%?BwKwKvYXkvuKB%f<@D>h;SZxr+D1+x7r$F`FYHGS@;2bzrAz8-SGUX zDFb6V?VK&t|BNwo3C7D;Z@<7+e~%z$Cj=52&Wac2gXig zKAHWsJ1~>*g=>j;XuB)s$VpAN+3tu|fcc?avK>3@=#5q|5;7v!aS&6X7%!Dku&Z^) z3_af{I}X8Inchb$+*)X{5$%CJN0MP-d@MX`n-$j!LfZ;rR%}5$X+ii6+Y&*vD_{{e z9h#BBi?(~!nA@)TB9JTE;&*ICx=?xyyHdSTbX%U2)HSWQODC-x#K3@T_DkrN?R&a= zUpc$>m4V-+&h+;T4K8RygG=;e!$9bKndodbQ})J}%Gh zV&d*AzFAxL+_`N_)a3puZu;Kifd;v|_})oMoYLs1u{?*6`yyYf-5;&PRAa)xWmoJ! z(%RUwc2IN7<}&tquN(UV#oZvEs#gxQr=N`5A9|`LdkEwi~KKf>s?__We-gu%Va42jZ+CUA*&j~ z*cs@nQjO1Jj^T0D(i~9n1zM_*^{)Xw!`LsM`s2{ zm)7#@#RX$x#M`qmWt|sVuM&S{{Gh~gL75G zo7AamcVydf#k;_3kVo7D#Gs0ugWxX z^Gv02-lugW4_+CU=~VhsasJdqS`R|gEt`(#im7x{1nINWsnnzy5XlnL5Ct$83VhhgSGSalyWswNn|xLSveqP*hU z4Wxq=5$sdvSfrEnw$$MEvg-0qUla}D=#Ipxv>7b84R1^MX}xaeE#xqW;D+f0LOH}b rMq5hSwnS!+cG^8T+H!w7H8~nD%rsW~zf^MSe}OOHP`^|D|03`YYvx6U literal 0 HcmV?d00001 diff --git a/STCompiler.Simulator/obj/Debug/net8.0/refint/STCompiler.Simulator.dll b/STCompiler.Simulator/obj/Debug/net8.0/refint/STCompiler.Simulator.dll new file mode 100644 index 0000000000000000000000000000000000000000..35146d55034b30b329d217fb4f09df2c06965c3a GIT binary patch literal 6144 zcmeHLU2Ggz6+W|GyUv<8v589pZaP^93ZfbB)&`tlJG=2u>S8;NcayY5V9(B8ucw}! z+04vty&xb}f20b8B2-mHst}P-1rMl|;GyELs)Pg&^obxLgamzor&95R#6!b(&z;#_ zJ1!W6cqqB+`R=*ro_p>&=ia&ZjF%q0PF+Nl#B=Kw(W|Is$ua(OxQ6cjdwjUd1=7x@Eeq7wRRU`*l~hU48aKL9cpcVH`Y|IvJ^6nIl@%lGOK? z`(KV{`y-{PPsyEi^A7@Ycyv6Hkaa@Y4T|lTHGLb8bOxo1)}JOi%zy1VYAO+$ zh29I2UMKoVcf{CiS3SMazy8h zP;7@_yeO4{!SU!p-BEN{Z}@?4fyX|qgOD<;9CcK3&|vt&@gOLDqHA~%L%JJJN6BH{ zj^-WmJsg1>iJ!fA?7oZ3-z`0y`e0^8A{B&!5oN0_38DlInmOU*sbdv+TiF0S<%Q%p5`K;g>DTKc5Rstz;9cPz3 z!bdI@=sD2x7#lf%X+dtz@1UK5aU4d6#=oi{si5^-?NcGNGLLH_sjRw6|o0rpUXUIP7Vrauq5pR)8l%yk7cOyg@zTBz*)7I=AX zJ*ge0qv)5d1ROm;9|PV?6Tm#vD@=P#e~Ia*nEoo$-(dQij2h!%#?y=sGFIpzTFFT( zo;i9GwrZH=CZaR|L^OaY$Voa2JWQt<^Nb6O7a1R6G#PE6MpuDD)MR`X*u(S(=>!FI zK)a7DI;k1dM-P)h?mGxQFy!2Hhw^YkPg z(q?FjjsvA;lhL9tLeCT2dxJTzGyNvhnkGk`(4>5x(PVsr@do4TjBhd~uf;n^MoN~~ zuuAfpj*Ct|XL2WRSZ=*ta^uYFk~>+J$?4kKS~jEVsLE#1^uUgKX~uM%f*p$WEEPi2 z+Cr_yJ)r8S%8se#7|qvRYkiFJR%m-J2qitP>T%T_wLYPkpH$VSR5hWh(=@r{mFtd} zrb06aMb((`97nL$z&I~l;oDZ+wOV&WyDD17(u`NF*^cm8&J0C4AL7L?)k8tEqExR` z%#tJ8yyd#%?BwKwKvYXkvuKB%f<@D>h;SZxr+D1+x7r$F`FYHGS@;2bzrAz8-SGUX zDFb6V?VK&t|BNwo3C7D;Z@<7+e~%z$Cj=52&Wac2gXig zKAHWsJ1~>*g=>j;XuB)s$VpAN+3tu|fcc?avK>3@=#5q|5;7v!aS&6X7%!Dku&Z^) z3_af{I}X8Inchb$+*)X{5$%CJN0MP-d@MX`n-$j!LfZ;rR%}5$X+ii6+Y&*vD_{{e z9h#BBi?(~!nA@)TB9JTE;&*ICx=?xyyHdSTbX%U2)HSWQODC-x#K3@T_DkrN?R&a= zUpc$>m4V-+&h+;T4K8RygG=;e!$9bKndodbQ})J}%Gh zV&d*AzFAxL+_`N_)a3puZu;Kifd;v|_})oMoYLs1u{?*6`yyYf-5;&PRAa)xWmoJ! z(%RUwc2IN7<}&tquN(UV#oZvEs#gxQr=N`5A9|`LdkEwi~KKf>s?__We-gu%Va42jZ+CUA*&j~ z*cs@nQjO1Jj^T0D(i~9n1zM_*^{)Xw!`LsM`s2{ zm)7#@#RX$x#M`qmWt|sVuM&S{{Gh~gL75G zo7AamcVydf#k;_3kVo7D#Gs0ugWxX z^Gv02-lugW4_+CU=~VhsasJdqS`R|gEt`(#im7x{1nINWsnnzy5XlnL5Ct$83VhhgSGSalyWswNn|xLSveqP*hU z4Wxq=5$sdvSfrEnw$$MEvg-0qUla}D=#Ipxv>7b84R1^MX}xaeE#xqW;D+f0LOH}b rMq5hSwnS!+cG^8T+H!w7H8~nD%rsW~zf^MSe}OOHP`^|D|03`YYvx6U literal 0 HcmV?d00001 diff --git a/STCompiler.Simulator/obj/STCompiler.Simulator.csproj.nuget.dgspec.json b/STCompiler.Simulator/obj/STCompiler.Simulator.csproj.nuget.dgspec.json new file mode 100644 index 0000000..7a5d8b5 --- /dev/null +++ b/STCompiler.Simulator/obj/STCompiler.Simulator.csproj.nuget.dgspec.json @@ -0,0 +1,130 @@ +{ + "format": 1, + "restore": { + "/home/martin/Projects/STCompiler/STCompiler.Simulator/STCompiler.Simulator.csproj": {} + }, + "projects": { + "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj", + "projectName": "STCompiler.Common", + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj", + "packagesPath": "/home/martin/.nuget/packages/", + "outputPath": "/home/martin/Projects/STCompiler/STCompiler.Common/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/home/martin/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.20, 8.0.20]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/8.0.120/PortableRuntimeIdentifierGraph.json" + } + } + }, + "/home/martin/Projects/STCompiler/STCompiler.Simulator/STCompiler.Simulator.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/martin/Projects/STCompiler/STCompiler.Simulator/STCompiler.Simulator.csproj", + "projectName": "STCompiler.Simulator", + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Simulator/STCompiler.Simulator.csproj", + "packagesPath": "/home/martin/.nuget/packages/", + "outputPath": "/home/martin/Projects/STCompiler/STCompiler.Simulator/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/home/martin/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj": { + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.20, 8.0.20]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/8.0.120/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/STCompiler.Simulator/obj/STCompiler.Simulator.csproj.nuget.g.props b/STCompiler.Simulator/obj/STCompiler.Simulator.csproj.nuget.g.props new file mode 100644 index 0000000..857a355 --- /dev/null +++ b/STCompiler.Simulator/obj/STCompiler.Simulator.csproj.nuget.g.props @@ -0,0 +1,15 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + /home/martin/.nuget/packages/ + /home/martin/.nuget/packages/ + PackageReference + 6.8.1 + + + + + \ No newline at end of file diff --git a/STCompiler.Simulator/obj/STCompiler.Simulator.csproj.nuget.g.targets b/STCompiler.Simulator/obj/STCompiler.Simulator.csproj.nuget.g.targets new file mode 100644 index 0000000..3dc06ef --- /dev/null +++ b/STCompiler.Simulator/obj/STCompiler.Simulator.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/STCompiler.Simulator/obj/project.assets.json b/STCompiler.Simulator/obj/project.assets.json new file mode 100644 index 0000000..4280721 --- /dev/null +++ b/STCompiler.Simulator/obj/project.assets.json @@ -0,0 +1,95 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "STCompiler.Common/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "compile": { + "bin/placeholder/STCompiler.Common.dll": {} + }, + "runtime": { + "bin/placeholder/STCompiler.Common.dll": {} + } + } + } + }, + "libraries": { + "STCompiler.Common/1.0.0": { + "type": "project", + "path": "../STCompiler.Common/STCompiler.Common.csproj", + "msbuildProject": "../STCompiler.Common/STCompiler.Common.csproj" + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "STCompiler.Common >= 1.0.0" + ] + }, + "packageFolders": { + "/home/martin/.nuget/packages/": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/home/martin/Projects/STCompiler/STCompiler.Simulator/STCompiler.Simulator.csproj", + "projectName": "STCompiler.Simulator", + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Simulator/STCompiler.Simulator.csproj", + "packagesPath": "/home/martin/.nuget/packages/", + "outputPath": "/home/martin/Projects/STCompiler/STCompiler.Simulator/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/home/martin/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj": { + "projectPath": "/home/martin/Projects/STCompiler/STCompiler.Common/STCompiler.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.20, 8.0.20]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/8.0.120/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/STCompiler.Simulator/obj/project.nuget.cache b/STCompiler.Simulator/obj/project.nuget.cache new file mode 100644 index 0000000..87a2684 --- /dev/null +++ b/STCompiler.Simulator/obj/project.nuget.cache @@ -0,0 +1,10 @@ +{ + "version": 2, + "dgSpecHash": "Gj7wIZR6uqBd3t5lgWyZTGma/nOTViXRKY2cmywPzQECPkQPmMsSjUVC+FzVzUiNwmOddPHfs6Qrh+783H0YpQ==", + "success": true, + "projectFilePath": "/home/martin/Projects/STCompiler/STCompiler.Simulator/STCompiler.Simulator.csproj", + "expectedPackageFiles": [ + "/home/martin/.nuget/packages/microsoft.aspnetcore.app.ref/8.0.20/microsoft.aspnetcore.app.ref.8.0.20.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/STCompiler.sln b/STCompiler.sln new file mode 100644 index 0000000..551a94f --- /dev/null +++ b/STCompiler.sln @@ -0,0 +1,39 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "STCompiler.Common", "STCompiler.Common\STCompiler.Common.csproj", "{D83720E7-0614-4F86-B628-C64E5E8D9257}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "STCompiler.Compiler", "STCompiler.Compiler\STCompiler.Compiler.csproj", "{3E144F20-651E-4378-86A9-E3F113D1A912}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "STCompiler.Disassembler", "STCompiler.Disassembler\STCompiler.Disassembler.csproj", "{4B69878A-B8AA-4E32-A115-5C845169C30F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "STCompiler.Simulator", "STCompiler.Simulator\STCompiler.Simulator.csproj", "{9A2B3C4D-5E6F-47A8-9123-ABCDEF123456}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D83720E7-0614-4F86-B628-C64E5E8D9257}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D83720E7-0614-4F86-B628-C64E5E8D9257}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D83720E7-0614-4F86-B628-C64E5E8D9257}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D83720E7-0614-4F86-B628-C64E5E8D9257}.Release|Any CPU.Build.0 = Release|Any CPU + {3E144F20-651E-4378-86A9-E3F113D1A912}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3E144F20-651E-4378-86A9-E3F113D1A912}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3E144F20-651E-4378-86A9-E3F113D1A912}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3E144F20-651E-4378-86A9-E3F113D1A912}.Release|Any CPU.Build.0 = Release|Any CPU + {4B69878A-B8AA-4E32-A115-5C845169C30F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4B69878A-B8AA-4E32-A115-5C845169C30F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B69878A-B8AA-4E32-A115-5C845169C30F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4B69878A-B8AA-4E32-A115-5C845169C30F}.Release|Any CPU.Build.0 = Release|Any CPU + {9A2B3C4D-5E6F-47A8-9123-ABCDEF123456}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9A2B3C4D-5E6F-47A8-9123-ABCDEF123456}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9A2B3C4D-5E6F-47A8-9123-ABCDEF123456}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9A2B3C4D-5E6F-47A8-9123-ABCDEF123456}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal