From b57ec5f5cf0de4992f28bde1eeb4ed6d9a142212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robin=20B=C3=A4rtschi?= Date: Wed, 12 Mar 2025 18:34:41 +0100 Subject: [PATCH] ttir: added Call instruction --- ttir/ttir.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/ttir/ttir.go b/ttir/ttir.go index 3efdc6b..318736a 100644 --- a/ttir/ttir.go +++ b/ttir/ttir.go @@ -116,6 +116,29 @@ func (l Label) String() string { } func (l Label) instruction() {} +type Call struct { + Label string + Arguments []Operand + ReturnValue Operand +} + +func (c *Call) String() string { + b := strings.Builder{} + + b.WriteString(c.ReturnValue.String() + " = call " + c.Label + " ") + + for i, arg := range c.Arguments { + b.WriteString(arg.String()) + + if i < (len(c.Arguments) - 1) { + b.WriteString(", ") + } + } + + return b.String() +} +func (c *Call) instruction() {} + type Operand interface { String() string operand()