Skip to content

Commit aeb3fdc

Browse files
committed
Repo Update
- Add TLLMetaLang class, complete Meta-Language wrapper over TLLVM for simplified code generation - Fluent interface design with method chaining for readable code construction - Automatic basic block management for control flow structures - High-level control flow: if/then/else, while loops, for loops with auto-blocks - Comprehensive value creation: integers, floats, strings, booleans, null values - Full arithmetic operations: math, bitwise, comparisons for int/float types - Type conversion system: int/float casting and cross-type conversions - Variable management: local/global variables with automatic SSA handling - Function system: declaration, parameters, calls, export marking - Memory operations: array allocation, load/store, PHI nodes for SSA form - Complete linking pipeline: DLL/EXE creation with automatic export management - JIT execution support with external library integration - Export management: automatic symbol exports with ordinals and custom names - Comprehensive test suite with both focused tests and complete workflow examples - Full module lifecycle: creation, validation, merging, compilation to objects - Subsystem support: console/GUI executables with proper Windows PE configuration - Build artifact management with organized output directories and import libraries Enables rapid LLVM IR development with high-level programming constructs while maintaining full access to low-level LLVM capabilities through GetLLVM().
1 parent affe02e commit aeb3fdc

File tree

14 files changed

+2537
-50
lines changed

14 files changed

+2537
-50
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,4 @@ zip_latest_commit.cmd
9191
!/bin/libs/*
9292
checkpoint.zip
9393
bin/output
94+
bin/view.txt

bin/libs/advapi32.lib

190 KB
Binary file not shown.

bin/libs/gdi32.lib

209 KB
Binary file not shown.
-464 KB
Binary file not shown.

bin/libs/ole32.lib

121 KB
Binary file not shown.

bin/libs/shell32.lib

111 KB
Binary file not shown.

bin/libs/user32.lib

218 KB
Binary file not shown.

bin/libs/ws2_32.lib

41.3 KB
Binary file not shown.

examples/testbed/Testbed.dpr

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ uses
4040
libLLVM.Test.Variable in '..\..\src\tests\libLLVM.Test.Variable.pas',
4141
libLLVM.Test.CodeGen in '..\..\src\tests\libLLVM.Test.CodeGen.pas',
4242
libLLVM.LLD in '..\..\src\libLLVM.LLD.pas',
43-
libLLVM.Test.ObjectCompilation in '..\..\src\tests\libLLVM.Test.ObjectCompilation.pas';
43+
libLLVM.Test.ObjectCompilation in '..\..\src\tests\libLLVM.Test.ObjectCompilation.pas',
44+
libLLVM.MetaLang in '..\..\src\libLLVM.MetaLang.pas',
45+
libLLVM.Test.MetaLang in '..\..\src\tests\libLLVM.Test.MetaLang.pas';
4446

4547
begin
4648
RunTests();

examples/testbed/Testbed.dproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@
138138
<DCCReference Include="..\..\src\tests\libLLVM.Test.CodeGen.pas"/>
139139
<DCCReference Include="..\..\src\libLLVM.LLD.pas"/>
140140
<DCCReference Include="..\..\src\tests\libLLVM.Test.ObjectCompilation.pas"/>
141+
<DCCReference Include="..\..\src\libLLVM.MetaLang.pas"/>
142+
<DCCReference Include="..\..\src\tests\libLLVM.Test.MetaLang.pas"/>
141143
<BuildConfiguration Include="Base">
142144
<Key>Base</Key>
143145
</BuildConfiguration>

0 commit comments

Comments
 (0)