置浮格式
公开化「整数」而「有」
文言:浮点指令:Wasm 之 f32、f64 诸指令(比较、算术、取整、开方、转换、饱和截断),以软浮点为本;单精度以格式格切换,与双精度共用解包、舍入之法。汉语:Wasm 浮点指令的语义:比较、绝对值/取负/复制符号、最小最大、上取整/下取整/截断/就近取偶、开方、四则、整数与浮点互转、f32 与 f64 互转、(饱和)截断转整数。值栈槽 8 字节:f64 占满,f32 只用低字。单精度运算把 浮格_格式 置 1,复用同一套解包、对阶、舍入的代码(尾数 64 位,首位 1 在第 62 位),算完必须置回 0。非数结果一律是安静非数;陷阱(无效转换、整数溢出)以退出码 125 结束任务。
文言:置格式,浮之拷,符号字之址,是否为零。汉语:置 浮格_格式;按当前格式拷贝一个浮点槽(单精度时高字置零);符号位所在字的地址(双精度在高字、单精度在低字);当前格式下的值是否为 ±0。
浮拷
公开化「整数」而化「整数」而「有」
暂无说明。
符字址
公开化「整数」而「整数」
暂无说明。
浮为零
公开化「整数」而「爻」
暂无说明。
浮比较
公开化「整数」而化「整数」而「整数」
文言:比较:位型直较,不解包;零等、一小、二大、三无序(有非数)。汉语:按当前格式比较两个浮点数:0 相等(含 +0 与 -0),1 甲小于乙,2 甲大于乙,3 无序(任一为非数)。单精度当作“高字为位型、低字为零”的双精度同样处理,仅无穷的位型不同。
浮比较结果
公开化「整数」而化「整数」而「整数」
文言:比较指令之果:序者 eq ne lt gt le ge 之次;较者浮比较之果。汉语:把 浮比较 的结果换成比较指令的 0/1:序 0 eq、1 ne、2 lt、3 gt、4 le、5 ge(无序时只有 ne 为 1)。
浮绝对
公开化「整数」而「有」
文言:绝对值、取负、复制符号,皆只动符号位,非数之载荷不变。汉语:abs、neg、copysign:只改符号位所在字的最高位,不动其余位(非数的载荷原样保留)。
浮取负
公开化「整数」而「有」
暂无说明。
浮复制符号
公开化「整数」而化「整数」而「有」
暂无说明。
浮最值
公开化「整数」而化「整数」而化「整数」而「有」
文言:最小最大:有非数则得非数;两零异号,取小得负零,取大得正零。汉语:min/max(结果写回甲槽):任一为非数得安静非数;数值相等时若是两个零,取小得符号位相或的零、取大得符号位相与的零;否则取较小/较大者。
浮取整小
公开化「整数」而化「整数」而化「整数」而化「整数」而「有」
文言:取整:|x|<1 者,视模式得零或正负一;否则截去小数位,必要时于尾数加一单位。模式:零上取整、一下取整、二截断、三就近取偶。汉语:浮点取整(ceil、floor、trunc、nearest)。先解包:非数得非数,无穷、零与已是整数者原样返回;指数小于 0(|x|<1)时结果是 ±0 或 ±1(nearest 时 |x|>0.5 才得 ±1);否则用尾数的低 (62-指数) 位做掩码,按模式决定是否把尾数加上一个单位(2^(62-指数)),再交 浮打包(加一后的值必可精确表示)。
浮取整含
公开化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「有」
暂无说明。
浮取整
公开化「整数」而化「整数」而化「整数」而「有」
暂无说明。
开方逐位
公开化「整数」而「有」
文言:开方:被开方数乘二之六十二次方为一百二十八位,逐位求其整数平方根,余则置粘位。汉语:开方:解包后指数若为奇数就把尾数左移一位并把指数减一(使指数为偶),被开方数 N = 尾数 × 2^62(128 位,高、低各一槽),用逐位试根求 ⌊√N⌋(结果首位 1 恰在第 62 位,可直接打包),根的平方不等于 N 则最低位置粘位,指数取一半。负数(含 -∞)得非数,±0 与 +∞ 原样,非数得非数。
浮开方
公开化「整数」而化「整数」而「有」
暂无说明。
截断溢出
公开化「整数」而化「整数」而化「整数」而化「整数」而「爻」
文言:截断转整数:先得尾数之整数部分(幅),依目标之宽与有无符号判其溢否;饱和者溢则取极值、非数得零;否则溢与非数皆陷。汉语:浮点截断为整数。模式位:1 目标 64 位(否则 32 位),2 无符号,4 饱和。先解包:非数按饱和得 0 或以“无效的整数转换”陷入;无穷或指数大于 63 视为溢出;指数小于 0 的幅为 0;否则幅 = 尾数右移 (62-指数) 位(指数为 63 则左移一位)。再按符号与范围判溢出:有符号 32 位正数至多 0x7FFFFFFF、负数至多 0x80000000,无符号 32 位负数只允许幅为 0,64 位同理。溢出时饱和则写极值,否则以“整数溢出”陷入。
浮存饱和
公开化「整数」而化「整数」而化「整数」而化「整数」而「有」
暂无说明。
浮截断
公开化「整数」而化「整数」而化「整数」而「有」
暂无说明。
浮整转
公开化「整数」而化「整数」而化「整数」而化「整数」而「有」
文言:整数转浮点、单双精度互转。汉语:整数转浮点:源为 32 位则先按有符号/无符号扩成 64 位槽,再按目标精度(单/双)一次舍入,无双重舍入;f32 与 f64 互转:按源格式解包、按目标格式打包(非数得非数,无穷、零保号)。
浮换格式
公开化「整数」而化「整数」而化「整数」而化「整数」而「有」
暂无说明。
浮截断指令
公开化「整数」而化「整数」而化「整数」而「有」
暂无说明。
浮一元
公开化「整数」而化「整数」而「有」
文言:一元、二元之算术,子者:零 abs、一 neg、二 ceil、三 floor、四 trunc、五 nearest、六 sqrt、七 add、八 sub、九 mul、十 div、十一 min、十二 max、十三 copysign。汉语:算术指令的一元(子 0–6)与二元(子 7–13)分派;甲槽是结果槽,乙槽是第二操作数槽。
浮二元
公开化「整数」而化「整数」而化「整数」而「有」
暂无说明。
比较指令
公开化「整数」而化「整数」而「整数」
文言:比较指令 0x5B–0x66、算术指令 0x8B–0xA6、转换指令 0xA8–0xAB 与 0xAE–0xBB。汉语:Wasm 浮点指令入口,返回新的栈针:比较(f32 0x5B–0x60、f64 0x61–0x66)弹两个槽得一个 32 位结果;算术(f32 0x8B–0x98、f64 0x99–0xA6)一元不变栈针、二元弹一个槽;转换(0xA8–0xB1 截断转整数、0xB2–0xBA 整数转浮点与 demote/promote、0xBB promote)一进一出。单精度运算在算完后必把 浮格_格式 置回 0。
算术指令
公开化「整数」而化「整数」而「整数」
暂无说明。
转换指令
公开化「整数」而化「整数」而「整数」
暂无说明。
执行浮点
公开化「整数」而化「整数」而「整数」
暂无说明。
浮饱和截断
公开化「整数」而化「整数」而化「整数」而「整数」
文言:饱和截断(0xFC 前缀之零至七):位零无符号、位一双精度源、位二六十四位目标。汉语:trunc_sat 指令(0xFC 前缀的子操作码 0–7):位 0 无符号、位 1 源是 f64、位 2 目标是 i64;不再有立即数,故新指令针就是子操作码之后的 址;一进一出,栈针不变。