aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-11 23:30:50 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-11 23:30:50 +0100
commit9717e24aa52efcf982be76c5355e9bae9c9223aa (patch)
tree602a438ca2c54073c04a257080aaa1f1b63a4ff5 /src/main/java
parentda0eee0d3bcecd15c418903a1ea147c5e8d727cf (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.java6
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java4
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,