An AssemblyScript example. Exposes WebAssembly's i64 operations to JavaScript using 32-bit integers (low and high bits).
import * as i64 from "path/to/i64";
i64.div(10, 0, 2, 0);
console.log("result: lo=" + i64.getLo() + ", hi=" + i64.getHi());
Note that u32
is just an alias of number
in JavaScript with values in 32-bit integer range.
-
getLo():
u32
Gets the low 32 bits of the computed 64-bit value. -
getHi():
u32
Gets the high 32 bits of the computed 64-bit value. -
clz(loLeft:
u32
, hiLeft:u32
):void
Performs the sign-agnostic count leading zero bits operation. All zero bits are considered leading if the value is zero. -
ctz(loLeft:
u32
, hiLeft:u32
):void
Performs the sign-agnostic count tailing zero bits operation. All zero bits are considered trailing if the value is zero. -
popcnt(loLeft:
u32
, hiLeft:u32
):void
Performs the sign-agnostic count number of one bits operation. -
eqz(loLeft:
u32
, hiLeft:u32
):void
Performs the sign-agnostic equals-zero operation. -
add(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the sign-agnostic addition operation. -
sub(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the sign-agnostic subtraction operation. -
mul(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the sign-agnostic multiplication operation. -
div_s(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the signed division operation. -
div_u(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the unsigned division operation. -
rem_s(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the signed remainder operation. -
rem_u(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the unsigned remainder operation. -
and(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the sign-agnostic bitwise and operation. -
or(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the sign-agnostic bitwise or operation. -
xor(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the sign-agnostic bitwise xor operation. -
shl(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the sign-agnostic bitwise shift left operation. -
shr_s(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the signed bitwise shift right operation. -
shr_u(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the unsigned bitwise shift right operation. -
rotl(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the sign-agnostic rotate left operation. -
rotr(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the sign-agnostic rotate right operation. -
eq(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the sign-agnostic compare equal operation. -
ne(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the sign-agnostic compare unequal operation. -
lt_s(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the signed less than operation. -
lt_u(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the unsigned less than operation. -
le_s(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the signed less than or equal operation. -
le_u(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the unsigned less than or equal operation. -
gt_s(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the signed greater than operation. -
gt_u(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the unsigned greater than operation. -
ge_s(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the signed greater than or equal operation. -
ge_u(loLeft:
u32
, hiLeft:u32
, loRight:u32
, hiRight:u32
):void
Performs the unsigned greater than or equal operation.
To build assembly/i64.ts to an untouched and an optimized .wasm
including their respective .wat
representations, run:
$> npm run asbuild
Afterwards, to run the included test:
$> npm test