From b3276afec7498c7ec6e100d7367e748fdf0a3923 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 20 Jul 2023 15:16:15 +0100 Subject: Add int-to-data-ptr instruction --- .../java/org/shedlang/compiler/patio/ast/PatioSerializer.java | 7 +++++++ .../compiler/patio/ast/instructions/PatioInstruction.java | 2 +- .../compiler/patio/ast/instructions/PatioIntToDataPtr.java | 11 +++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioIntToDataPtr.java (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java index cf52f9f4..77a8ec7c 100644 --- a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java +++ b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java @@ -113,6 +113,13 @@ public class PatioSerializer { treeInt(intGet.value()) ); + case PatioIntToDataPtr intToDataPtr -> + treeList( + treeIdentifier("int-to-data-ptr"), + localRefToTree(intToDataPtr.target()), + localRefToTree(intToDataPtr.value()) + ); + case PatioLocalCopy localCopy -> treeList( treeIdentifier("local-copy"), diff --git a/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioInstruction.java b/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioInstruction.java index aa814121..dbedce9a 100644 --- a/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioInstruction.java +++ b/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioInstruction.java @@ -2,6 +2,6 @@ package org.shedlang.compiler.patio.ast.instructions; import org.shedlang.compiler.sources.Source; -public sealed interface PatioInstruction permits PatioAlloc, PatioCallPointer, PatioDataPtrToInt, PatioFunctionPointerGet, PatioIntGet, PatioLocalCopy, PatioMemoryLoad, PatioMemoryStore, PatioReturn { +public sealed interface PatioInstruction permits PatioAlloc, PatioCallPointer, PatioDataPtrToInt, PatioFunctionPointerGet, PatioIntGet, PatioIntToDataPtr, PatioLocalCopy, PatioMemoryLoad, PatioMemoryStore, PatioReturn { Source source(); } diff --git a/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioIntToDataPtr.java b/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioIntToDataPtr.java new file mode 100644 index 00000000..8c8000d5 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/patio/ast/instructions/PatioIntToDataPtr.java @@ -0,0 +1,11 @@ +package org.shedlang.compiler.patio.ast.instructions; + +import org.shedlang.compiler.patio.ast.PatioLocalRef; +import org.shedlang.compiler.sources.Source; + +public record PatioIntToDataPtr( + PatioLocalRef target, + PatioLocalRef value, + Source source +) implements PatioInstruction { +} -- cgit v1.2.3