diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-11 23:30:50 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-11 23:30:50 +0100 |
| commit | 9717e24aa52efcf982be76c5355e9bae9c9223aa (patch) | |
| tree | 602a438ca2c54073c04a257080aaa1f1b63a4ff5 /src/main/java | |
| parent | da0eee0d3bcecd15c418903a1ea147c5e8d727cf (diff) | |
Compile local-load instruction to LLVM IR
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java | 6 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java index 7c74f211..f1db14df 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java @@ -22,9 +22,9 @@ public class LlvmCompiler { case DiscardInstruction discardInstruction -> { throw new UnsupportedOperationException("TODO"); } - case LocalLoadInstruction localLoadInstruction -> { - throw new UnsupportedOperationException("TODO"); - } + case LocalLoadInstruction localLoad -> + context.push(context.local(localLoad.name())); + case LocalStoreInstruction localStore -> { var result = context.pop(); var value = result.value(); diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java index 1af09f36..a07b65e1 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java @@ -39,6 +39,10 @@ public record LlvmCompilerContext( ); } + public LlvmOperand local(String name) { + return locals.get(name); + } + public LlvmCompilerContext addInstruction(LlvmInstruction instruction) { return new LlvmCompilerContext( stack, |
