From 9717e24aa52efcf982be76c5355e9bae9c9223aa Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 11 Jun 2023 23:30:50 +0100 Subject: Compile local-load instruction to LLVM IR --- src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java | 6 +++--- .../org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src/main/java') 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, -- cgit v1.2.3