diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-07 18:01:28 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-07 18:01:28 +0100 |
| commit | 69ce0b822262c9ea5ae9cc4e89be0fa4498eaf25 (patch) | |
| tree | facd2ed40e3f4a001eee045bc809d57121b33b81 /src/main/java/org/shedlang/compiler/stackir | |
| parent | df888d6cce6a31e55eac4e21ccd496ce6023dfeb (diff) | |
Add int-ne instruction
Diffstat (limited to 'src/main/java/org/shedlang/compiler/stackir')
3 files changed, 15 insertions, 2 deletions
diff --git a/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java b/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java index ac58103c..00757988 100644 --- a/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java +++ b/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java @@ -83,7 +83,10 @@ public class InstructionSerializer { ); case IntEqualsInstruction intEquals -> - treeList(treeIdentifier("int-equals")); + treeList(treeIdentifier("int-eq")); + + case IntNotEqualInstruction intNotEqual -> + treeList(treeIdentifier("int-ne")); case LocalLoadInstruction localLoadInstruction -> treeList( diff --git a/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java b/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java index f3c8a30a..5d4bd139 100644 --- a/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java +++ b/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java @@ -3,7 +3,7 @@ package org.shedlang.compiler.stackir.instructions; import org.shedlang.compiler.sources.Source; public sealed interface Instruction - permits CallInstruction, DefineFunctionInstruction, DiscardInstruction, FieldLoadInstruction, IntEqualsInstruction, LocalLoadInstruction, LocalStoreInstruction, NamespaceFieldStoreInstruction, NamespaceImportInstruction, PushBoolInstruction, PushIntInstruction, PushStringInstruction, PushUnitInstruction, ReturnInstruction { + permits CallInstruction, DefineFunctionInstruction, DiscardInstruction, FieldLoadInstruction, IntEqualsInstruction, IntNotEqualInstruction, LocalLoadInstruction, LocalStoreInstruction, NamespaceFieldStoreInstruction, NamespaceImportInstruction, PushBoolInstruction, PushIntInstruction, PushStringInstruction, PushUnitInstruction, ReturnInstruction { Source source(); } diff --git a/src/main/java/org/shedlang/compiler/stackir/instructions/IntNotEqualInstruction.java b/src/main/java/org/shedlang/compiler/stackir/instructions/IntNotEqualInstruction.java new file mode 100644 index 00000000..722723d2 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/stackir/instructions/IntNotEqualInstruction.java @@ -0,0 +1,10 @@ +package org.shedlang.compiler.stackir.instructions; + +import org.shedlang.compiler.sources.Source; + +/** + * Pop two values from the stack, compare them as Ints, and push a Bool onto + * the stack: true if not equal, false if equal. + */ +public record IntNotEqualInstruction(Source source) implements Instruction { +} |
