diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-02-26 13:21:22 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-03-03 15:27:26 +0900 |
| commit | 996259e6a1a04f91179d2b83cc19e3fbb371cd33 (patch) | |
| tree | 14ccabf37cc909c8c61899ffb84429fdeb8dfce0 /src/Execution/Val.php | |
| parent | 8a789bffe72e93ae24ea39648018e5fecf94c7fa (diff) | |
| download | php-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.php | 49 |
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)); + } } |
