From 996259e6a1a04f91179d2b83cc19e3fbb371cd33 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 26 Feb 2024 13:21:22 +0900 Subject: feat: implement some of instructions --- src/Execution/Val.php | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'src/Execution/Val.php') diff --git a/src/Execution/Val.php b/src/Execution/Val.php index 287f441..0f9ce42 100644 --- a/src/Execution/Val.php +++ b/src/Execution/Val.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace Nsfisis\Waddiwasi\Execution; +use Nsfisis\Waddiwasi\Structure\Types\RefType; + abstract readonly class Val { final public static function Num(Num $inner): Vals\Num @@ -11,8 +13,55 @@ abstract readonly class Val return new Vals\Num($inner); } + /** + * @param S32 $value + */ + final public static function NumI32(int $value): Vals\Num + { + return self::Num(Num::I32($value)); + } + + /** + * @param S64 $value + */ + final public static function NumI64(int $value): Vals\Num + { + return self::Num(Num::I64($value)); + } + + /** + * @param F32 $value + */ + final public static function NumF32(float $value): Vals\Num + { + return self::Num(Num::F32($value)); + } + + /** + * @param F64 $value + */ + final public static function NumF64(float $value): Vals\Num + { + return self::Num(Num::F64($value)); + } + final public static function Ref(Ref $inner): Vals\Ref { return new Vals\Ref($inner); } + + final public static function RefNull(RefType $type): Vals\Ref + { + return self::Ref(Ref::RefNull($type)); + } + + final public static function RefFunc(FuncAddr $addr): Vals\Ref + { + return self::Ref(Ref::RefFunc($addr)); + } + + final public static function RefExtern(ExternAddr $addr): Vals\Ref + { + return self::Ref(Ref::RefExtern($addr)); + } } -- cgit v1.2.3-70-g09d2