豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 468 行 · 29701 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「字节串」之书。
寻观「编译器核心」之「网页汇编核心」之「二进制生成」之书。
寻观「编译器核心」之「网页汇编核心」之「回收模块」之书。
寻观「编译器核心」之「网页汇编核心」之「回收编码」之书。
寻观「编译器核心」之「编译步骤」之「代码生成」之「回收值桥接」之书。

「:
文言:验回收网页汇编之编码:以结构书数模块,编之,与标准汇编器(Wasmtime 之 wat2wasm)所成之字节逐一相校,名段除外。所期之字节录于此篇,不赖外器。
汉语:验证 WasmGC 编码器:用结构化表示写出几个模块并编码,与标准汇编器(Wasmtime 的 wat2wasm)对同一 WAT 组装的结果逐字节比较(不含名字段)。期望字节直接写在本文件里,运行时不依赖外部工具。
:」

「十六进制位值」乃化「整数」而「整数」也。
「十六进制位值」者会「码」而
  若「小于」于「码」于「五八」则
    「减」于「码」于「四八」
  否则
    「减」于「码」于「八七」
也。

「十六进制字节串」乃化「字符串」而「字节串」也。
「十六进制字节串」者会「文」而
  虑「串」者「字符串转字节串」于「文」而
  虑「数」者「除以」于(「字节串长度」于「串」)于「二」而
  「网页拼字节」
    于(「态射」授以「整数」授以「字节串」
      于(「整数范围」于「零」于「数」)
      于(会「位」而
      虑「高」者
        「十六进制位值」于(「字节串取字节」于「串」于(「乘」于「位」于「二」))而
        虑「低」者
          「十六进制位值」于(「字节串取字节」于「串」于(「加」于(「乘」于「位」于「二」)于「一」))
        而
        「单字节串」于(「加」于(「乘」于「高」于「一六」)于「低」)))
也。

「首个不同位」乃化「字节串」而化「字节串」而「整数」也。
「首个不同位」者会「甲」而会「乙」而
  虑「甲长」者「字节串长度」于「甲」而
  虑「乙长」者「字节串长度」于「乙」而
  递归虑「找」其化「整数」而「整数」者会「位」而
    若「或者」于(「等于」于「位」于「甲长」)于(「等于」于「位」于「乙长」)
    则
      (若「等于」于「甲长」于「乙长」则「减」于「零」于「一」否则「位」)
    否则
      若「等于」于(「字节串取字节」于「甲」于「位」)于(「字节串取字节」于「乙」于「位」)
      则
        「找」于(「加」于「位」于「一」)
      否则
        「位」
  而
  「找」于「零」
也。

「核对编码」乃化「字符串」而化「回收项串」而化「字符串」而「有」也。
「核对编码」者会「名」而会「模块」而会「期望文」而
  虑「实际」者「回收模块编码」于「模块」而
  虑「无」者
    「文件系统」之「写文件字节串」于(『yy回收编码测试』附「名」附『.wasm』)于「实际」而
    虑「位」者
      「首个不同位」于「实际」于(「十六进制字节串」于「期望文」)而
    若「小于」于「位」于「零」
    则
      「打印行」于(「名」附『:与标准汇编器逐字节相同』)
    否则
      「发生事故」授以「有」
      于(「名」附『:自第 』附(「整数表示」于「位」)附『 字节起不同,实际共 』附(「整数表示」
        于(「字节串长度」于「实际」))附『 字节』)
也。

「零串」乃化「整数」而「字符串」也。
「零串」者会「数」而
  若「等于」于「数」于「零」则
    『』
  否则
    『0』附(「零串」于(「减」于「数」于「一」))
也。

「无参无果」者「回收型内联」于(「罄」授以「回收值型」)
于(「罄」授以「回收值型」)
也。

「:文言:甲:显式之型依声明之序;内书之型匹配后声明之显式型;无同型者追加于末。汉语:用例甲:显式类型按声明顺序;内联类型可匹配后面才声明的显式类型;没有相同类型的追加到末尾。:」
「用例甲」者
  「回收项列」
    于(「列」【
      「回收类型项」于『$a』于(「回收函数型」于(「列」【「回收整三二」】)于(「罄」授以「回收值型」)),
      「回收函数项」
        于『$f』
        于(「回收型内联」于(「列」【「回收整六四」】)于(「列」【「回收整六四」】))
        于(「列」【『$x』】)
        于(「罄」授以「回收局部」)
        于(「回收单令」于(「回收局部取」于『$x』)),
        「回收类型项」于『$b』于(「回收函数型」于(「列」【「回收整六四」】)于(「列」【「回收整六四」】)),
        「回收函数项」
          于『$g』
          于(「回收型内联」于(「列」【「回收整三二」】)于(「罄」授以「回收值型」))
          于(「列」【『$y』】)
          于(「罄」授以「回收局部」)
          于(「回收单令」于「回收空操作」),
          「回收函数项」
            于『$h』
            于(「回收型内联」于(「列」【「回收浮六四」】)于(「罄」授以「回收值型」))
            于(「列」【『$z』】)
            于(「罄」授以「回收局部」)
            于(「回收单令」于「回收空操作」)
    】)
也。

「核对编码」
  于『甲』于「用例甲」于
  『0061736d01000000010e0360017f0060017e017e60017c000304030100020a0e03040020000b0300010b0300010b』。

「:文言:乙:局部之组、引用之型、小数之位、数据计数、表与元素、被动数据。汉语:用例乙:局部变量分组、引用类型、各种 f64 常量、数据计数段、表与元素段、被动数据段。:」
「最大小数文」者
  『179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368』
也。

「微小数文」者
  『000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723651』
也。

「用例乙」者
  「回收项列」
    于(「列」【
      「回收类型项」于『$bytes』于(「回收数组型」于(「阳」与「回收存八」)),
      「回收函数项」
        于『$f0』
        于(「回收型内联」于(「列」【「回收等引用」】)于(「列」【「回收等引用」】))
        于(「列」【『$p』】)
        于(「列」【
          『$a』与「回收整三二」,
          『$b』与「回收整三二」,
          『$c』与「回收整六四」,
          『$d』与「回收整三二」,
          『$e』与(「回收名引用」于『$bytes』)
        】)于(「回收令列」
          于(「列」【
            「回收浮六四常」于『3』于『14』,
            「回收弃」,
            「回收浮六四常」于『0』于『』,
            「回收弃」,
            「回收浮六四常」于『12345678』于『5』,
            「回收弃」,
            「回收浮六四常」于『0』于『000001』,
            「回收弃」,
            「回收浮六四常」于「最大小数文」于『』,
            「回收弃」,
            「回收浮六四常」于『0』于「微小数文」,
            「回收弃」,
            「回收整三二常」于「零」,
            「回收整三二常」于「三」,
            「回收数组新数据」于『$bytes』于『$d0』,
            「回收弃」,
            「回收整三二常」于(「整数操作」之「理解整数」于『4294967295』),
            「回收弃」,
            「回收整六四常」于(「减」
              于(「减」于「零」于(「整数操作」之「理解整数」于『9223372036854775807』))
              于「一」),
              「回收弃」,
              「回收局部取」于『$p』
          】)),
          「回收表项」于『』于「三」,
          「回收元素项」
            于『』
            于(「回收单令」于(「回收整三二常」于「零」))
            于(「列」【『$f0』,『$f0』】),
            「回收数据项」于『$d0』于(「字符串转字节串」于『豫』)
    】)
也。

「核对编码」
  于『乙』
  于「用例乙」
  于『0061736d010000000109025e780160016d016d030201010404017000030908010041000b0200000c01010a63016104027f017e017f016400441f85eb51b81e09401a4400000000000000001a44000000d0298c67411a448dedb5a0f7c6b03e1a44ffffffffffffef7f1a4400c84e676dc18b001a41004103fb0900001a417f1a428080808080808080807f1a20000b0b06010103e8b1ab』。

「:文言:丙:导入、结构与数组、若与否则、块与环之标号、多果之块、试表与抛、标签、全局、导出。汉语:用例丙:导入、结构体与数组、if/else、块与循环的标号、多结果块、try_table 与 throw、标签、全局变量、导出。:」
「用例丙」者
  「回收项列」
    于(「列」【
      「回收导入函数项」
        于『yuyan:gc-host/v1』
        于『call』
        于『$host』
        于(「回收型内联」于(「列」【「回收等引用」,「回收等引用」】)于(「列」【「回收等引用」】)),
        「回收类型项」于『$big』于(「回收结构型」于(「列」【「阴」与(「回收存值」于「回收整六四」)】)),
        「回收类型项」于『$tuple』于(「回收数组型」于(「阳」与(「回收存值」于「回收等引用」))),
        「回收类型项」于『$bytes』于(「回收数组型」于(「阳」与「回收存八」)),
        「回收函数项」
          于『$box』
          于(「回收型内联」于(「列」【「回收整六四」】)于(「列」【「回收等引用」】))
          于(「列」【『$n』】)
          于(「罄」授以「回收局部」)
          于(「回收令列」
            于(「列」【
              「回收局部取」于『$n』,
              「回收整六四常」于(「减」于「零」于(「整数操作」之「理解整数」于『1073741824』)),
              「回收整六四有符号大等」,
              「回收局部取」于『$n』,
              「回收整六四常」于(「整数操作」之「理解整数」于『1073741823』),
              「回收整六四有符号小等」,
              「回收整三二与」,
              「回收若」于『』于(「回收块单果」于「回收等引用」),
              「回收局部取」于『$n』,
              「回收整六四截三二」,
              「回收转小整」,
              「回收否则」,
              「回收局部取」于『$n』,
              「回收结构新」于『$big』,
              「回收结束」
            】)),
            「回收函数项」
              于『$unbox』
              于(「回收型内联」于(「列」【「回收等引用」】)于(「列」【「回收整六四」】))
              于(「列」【『$v』】)
              于(「罄」授以「回收局部」)
              于(「回收令列」
                于(「列」【
                  「回收局部取」于『$v』,
                  「回收引用测」于「阴」于「回收堆小整」,
                  「回收若」于『』于(「回收块单果」于「回收整六四」),
                  「回收局部取」于『$v』,
                  「回收引用转」于「阴」于「回收堆小整」,
                  「回收小整取有符号」,
                  「回收整三二有符号扩六四」,
                  「回收否则」,
                  「回收局部取」于『$v』,
                  「回收引用转」于「阴」于(「回收堆名」于『$big』),
                  「回收结构取」于『$big』于「零」,
                  「回收结束」
                】)),
                「回收标签项」
                  于『$escape』
                  于(「回收型内联」于(「列」【「回收等引用」,「回收等引用」】)于(「罄」授以「回收值型」)),
                  「回收全局项」
                    于『$exception』
                    于「回收等引用」
                    于「阳」
                    于(「回收单令」于(「回收引用空」于「回收堆等」)),
                    「回收全局项」
                      于『$counter』
                      于「回收整三二」
                      于「阳」
                      于(「回收单令」于(「回收整三二常」于「零」)),
                      「回收函数项」
                        于『$int_string』
                        于(「回收型内联」于(「列」【「回收等引用」】)于(「列」【「回收等引用」】))
                        于(「列」【『$v』】)
                        于(「列」【
                          『$n』与「回收整六四」,
                          『$rest』与「回收整六四」,
                          『$negative』与「回收整三二」,
                          『$length』与「回收整三二」,
                          『$position』与「回收整三二」,
                          『$out』与(「回收名引用」于『$bytes』)
                        】)于(「回收令列」
                          于(「列」【
                            「回收局部取」于『$v』,
                            「回收调用」于『$unbox』,
                            「回收局部暂存」于『$n』,
                            「回收整六四常」于「零」,
                            「回收整六四有符号小于」,
                            「回收局部存」于『$negative』,
                            「回收局部取」于『$negative』,
                            「回收若」于『』于「回收块无果」,
                            「回收整六四常」于「零」,
                            「回收局部取」于『$n』,
                            「回收整六四减」,
                            「回收局部存」于『$n』,
                            「回收结束」,
                            「回收局部取」于『$n』,
                            「回收局部存」于『$rest』,
                            「回收整三二常」于「一」,
                            「回收局部存」于『$length』,
                            「回收块」于『$counted』于「回收块无果」,
                            「回收循环」于『$count』于「回收块无果」,
                            「回收局部取」于『$rest』,
                            「回收整六四常」于「一零」,
                            「回收整六四无符号小于」,
                            「回收条件跳」于(「回收名标」于『$counted』),
                            「回收局部取」于『$rest』,
                            「回收整六四常」于「一零」,
                            「回收整六四无符号除」,
                            「回收局部存」于『$rest』,
                            「回收局部取」于『$length』,
                            「回收整三二常」于「一」,
                            「回收整三二加」,
                            「回收局部存」于『$length』,
                            「回收跳」于(「回收名标」于『$count』),
                            「回收结束」,
                            「回收结束」,
                            「回收局部取」于『$length』,
                            「回收局部取」于『$negative』,
                            「回收整三二加」,
                            「回收局部暂存」于『$position』,
                            「回收数组新默认」于『$bytes』,
                            「回收局部存」于『$out』,
                            「回收循环」于『$digits』于「回收块无果」,
                            「回收局部取」于『$position』,
                            「回收整三二常」于「一」,
                            「回收整三二减」,
                            「回收局部存」于『$position』,
                            「回收局部取」于『$out』,
                            「回收局部取」于『$position』,
                            「回收局部取」于『$n』,
                            「回收整六四常」于「一零」,
                            「回收整六四无符号余」,
                            「回收整六四截三二」,
                            「回收整三二常」于「四八」,
                            「回收整三二加」,
                            「回收数组存」于『$bytes』,
                            「回收局部取」于『$n』,
                            「回收整六四常」于「一零」,
                            「回收整六四无符号除」,
                            「回收局部暂存」于『$n』,
                            「回收整六四常」于「零」,
                            「回收整六四不等」,
                            「回收条件跳」于(「回收名标」于『$digits』),
                            「回收结束」,
                            「回收局部取」于『$negative』,
                            「回收若」于『』于「回收块无果」,
                            「回收局部取」于『$out』,
                            「回收整三二常」于「零」,
                            「回收整三二常」于「四五」,
                            「回收数组存」于『$bytes』,
                            「回收结束」,
                            「回收局部取」于『$out』
                          】)),
                          「回收函数项」
                            于『$catcher』
                            于(「回收型内联」于(「列」【「回收等引用」】)于(「列」【「回收等引用」】))
                            于(「列」【『$a』】)
                            于(「列」【『$r』与「回收等引用」】)
                            于(「回收令列」
                              于(「列」【
                                「回收块」
                                  于『$l0』
                                  于(「回收块单果」于「回收等引用」),
                                  「回收块」
                                    于『$l1』
                                    于(「回收块多果」于(「列」【「回收等引用」,「回收等引用」】)),
                                    「回收试表」
                                      于『』
                                      于(「回收块单果」于「回收等引用」)
                                      于(「列」【「回收捕标签」于『$escape』于(「回收名标」于『$l1』)】),
                                      「回收局部取」于『$a』,
                                      「回收局部取」于『$a』,
                                      「回收抛」于『$escape』,
                                      「回收结束」,
                                      「回收跳」于(「回收名标」于『$l0』),
                                      「回收结束」,
                                      「回收弃」,
                                      「回收结束」,
                                      「回收局部存」于『$r』,
                                      「回收局部取」于『$r』,
                                      「回收局部取」于『$r』,
                                      「回收调用」于『$host』
                              】)),
                              「回收全局项」
                                于『$yy_tuple』
                                于(「回收名引用」于『$tuple』)
                                于「阴」
                                于(「回收单令」于(「回收数组新定」于『$tuple』于「零」)),
                                「回收导出项」
                                  于『yy_tuple』于「回收出全局」于『$yy_tuple』,
                                  「回收全局项」
                                    于『$yy_big』
                                    于(「回收名引用」于『$big』)
                                    于「阴」
                                    于(「回收令列」于(「列」【「回收整六四常」于「零」,「回收结构新」于『$big』】))
                                    ,
                                    「回收导出项」
                                      于『yy_big』于「回收出全局」于『$yy_big』,
                                      「回收函数项」
                                        于『$_start』
                                        于「无参无果」
                                        于(「罄」授以「字符串」)
                                        于(「罄」授以「回收局部」)
                                        于(「回收令列」于(「列」【「回收全局取」于『$counter』,「回收弃」】)),
                                        「回收导出项」
                                          于『_start』
                                          于「回收出函数」于『$_start』
    】)
也。

「核对编码」
  于『丙』
  于「用例丙」
  于『0061736d01000000012d0a5f017e005e6d015e780160026d6d016d60017e016d60016d017e60026d6d0060016d016d6000026d6d60000002190110797579616e3a67632d686f73742f76310463616c6c000303060504050707090d03010006061c046d01d06d0b7f0141000b640100fb0801000b6400004200fb00000b071e030879795f7475706c6503020679795f6269670303065f737461727400050af401052300200042808080807c59200042ffffffff035771046d2000a7fb1c052000fb00000b0b1c002000fb146c047e2000fb166cfb1dac052000fb1600fb0200000b0b870103027e037f016402200010022201420053210320030440420020017d21010b2001210241012104024003402002420a540d012002420a802102200441016a21040c000b0b200420036a2205fb070221060340200541016b2105200620052001420a82a741306afb0e022001420a8022014200520d000b2003044020064100412dfb0e020b20060b2201016d026d02081f6d010000002000200008000b0c010b1a0b21012001200110000b050023011a0b』。

「:文言:丁:次正规之数、下溢为零、舍入。汉语:用例丁:非规格化数、下溢为零、十进制到二进制的舍入。:」
「用例丁」者
  「回收项列」
    于(「列」【
      「回收函数项」
        于『$s』
        于「无参无果」
        于(「罄」授以「字符串」)
        于(「罄」授以「回收局部」)
        于(「回收令列」
          于(「列」【
            「回收浮六四常」于『0』于((「零串」于「三二三」)附『5』),
            「回收弃」,
            「回收浮六四常」于『0』于((「零串」于「三一零」)附『123456789』),
            「回收弃」,
            「回收浮六四常」于『0』于((「零串」于「四零零」)附『1』),
            「回收弃」,
            「回收浮六四常」于『1』于『』,
            「回收弃」,
            「回收浮六四常」于『0』于『1』,
            「回收弃」,
            「回收浮六四常」于『9007199254740993』于『』,
            「回收弃」
          】))
    】)
也。

「核对编码」
  于『丁』
  于「用例丁」
  于『0061736d01000000010401600000030201000a40013e004401000000000000001a44c1c6aecb450200001a4400000000000000001a44000000000000f03f1a449a9999999999b93f1a4400000000000040431a0b』。

「:文言:戊:杂令之填内存,双道之常(负数依补码),非自然之对齐,车道之取换。汉语:用例戊:0xFC 前缀的 memory.fill、i64x2 向量常量(负数按补码,含最小与最大 i64)、非自然对齐的 v128.store、车道的取出与替换。:」
「六四最大」者「九二二三三七二零三六八五四七七五八零七」也。

「用例戊」者
  「回收项列」
    于(「列」【
      「回收内存项」于『$m』于「一」于(「可无」授以「整数」),
      「回收函数项」
        于『$v』
        于(「回收型内联」于(「列」【「回收整三二」】)于(「罄」授以「回收值型」))
        于(「列」【『$p』】)
        于(「罄」授以「回收局部」)
        于(「回收令列」
          于(「列」【
            「回收局部取」于『$p』,
            「回收整六四双常」于「五」于(「减」于「零」于「三」),
            「回收向量内存码」于「一一」于(「三」与「一六」),
            「回收局部取」于『$p』,
            「回收整三二常」于「零」,
            「回收整三二常」于「六四」,
            「回收内存填」,
            「回收局部取」于『$p』,
            「回收整六四常」于「七」,
            「回收整六四双铺」,
            「回收整六四常」于「九」,
            「回收整六四双换道」于「一」,
            「回收整六四双常」
              于(「减」于(「减」于「零」于「六四最大」)于「一」)
              于「六四最大」,
              「回收整六四双减」,
              「回收整六四双取道」于「零」,
              「回收整六四存」于「零」
          】))
    】)
也。

「核对编码」
  于『戊』
  于「用例戊」
  于『0061736d0100000001050160017f000302010005030100010a4c014a002000fd0c0500000000000000fdfffffffffffffffd0b03102000410041c000fc0b0020004207fd124209fd1e01fd0c0000000000000080ffffffffffffff7ffdd101fd1d003703000b』。

「:文言:己:宿主之值桥,与旧文 值桥接.wat 经标准汇编器所成者同,兼验八位之取存。汉语:用例己:节点与浏览器宿主的值桥模块,须与删除前的 值桥接.wat 经标准汇编器组装的结果逐字节相同,同时覆盖 i32.load8_u 与 i32.store8。:」
「核对编码」
  于『己』
  于「回收值桥接」
  于『0061736d0100000001450e5f017e005e6d015f017c005e780160016d017f60016d017e60017e016d60016d017c60017c01640260026d7f016d60036d7f6d0060017f01640160016d0060017f016403030d0c040506070804090a0b040c0d05030100010788010d066d656d6f72790200046b696e64000003696e740001076e65775f696e74000205666c6f61740003096e65775f666c6f61740004097475706c655f6c656e0005097475706c655f6765740006097475706c655f7365740007096e65775f7475706c6500080962797465735f6c656e00090962797465735f6f7574000a0862797465735f696e000b0aba020c43002000d1044041000f0b2000fb146c044041010f0b2000fb1403044041020f0b2000fb1401044041030f0b2000fb1400044041040f0b2000fb1402044041050f0b000b1c002000fb146c047e2000fb166cfb1dac052000fb1600fb0200000b0b2300200042808080807c59200042ffffffff035771046d2000a7fb1c052000fb00000b0b0b002000fb1602fb0202000b07002000fb00020b09002000fb1601fb0f0b0c002000fb16012001fb0b010b0e002000fb160120012002fb0e010b07002000fb07010b09002000fb1603fb0f0b3402016403027f2000fb16032201fb0f210202400340200320024f0d01200320012003fb0d033a0000200341016a21030c000b0b0b3202016403017f2000fb0703210102400340200220004f0d012001200220022d0000fb0e03200241016a21020c000b0b20010b』。