aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Execution/Val.php
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-02-26 13:21:22 +0900
committernsfisis <nsfisis@gmail.com>2024-03-03 15:27:26 +0900
commit996259e6a1a04f91179d2b83cc19e3fbb371cd33 (patch)
tree14ccabf37cc909c8c61899ffb84429fdeb8dfce0 /src/Execution/Val.php
parent8a789bffe72e93ae24ea39648018e5fecf94c7fa (diff)
downloadphp-waddiwasi-996259e6a1a04f91179d2b83cc19e3fbb371cd33.tar.gz
php-waddiwasi-996259e6a1a04f91179d2b83cc19e3fbb371cd33.tar.zst
php-waddiwasi-996259e6a1a04f91179d2b83cc19e3fbb371cd33.zip
feat: implement some of instructions
Diffstat (limited to 'src/Execution/Val.php')
-rw-r--r--src/Execution/Val.php49
1 files changed, 49 insertions, 0 deletions
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));
+ }
}