豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 281 行 · 14326 字节 · UTF-8
§
寻观「底层库」之书。
寻观「客体二号」之「布局」之书。
寻观「客体二号」之「平台」之书。
寻观「客体二号」之「基础」之书。
寻观「客体二号」之「实例」之书。
寻观「客体二号」之「对象」之书。
寻观「客体二号」之「浮点指令」之书。
寻观「客体二号」之「表指令」之书。

「:文言:客体线性内存之访与杂项前缀。汉语:客体线性内存访问(load/store 各宽度)、越界检查,以及 0xFC 前缀的批量内存与表指令(memory.init/copy/fill、data.drop、table.size;table.init/copy/grow/fill、elem.drop 交给 表指令)与浮点饱和截断(trunc_sat,交给 浮点指令)。:」
「客内存字节」乃化「有」而「整数」也。
「客内存字节」者会「无」而
  「乘」于(「读四」于「状态_客页数」)于「页字节」
也。

「访存地址」乃化「整数」而化「整数」而化「整数」而「整数」也。
「访存地址」者会「基址」而会「偏移」而会「宽」而
  虑「有效」者「加」于「基址」于「偏移」而
  虑「末」者「加」于「有效」于「宽」而
  虑「无」者
    (「若则致命」
      于(「或者」
        于(「或者」于(「无符号小于」于「有效」于「基址」)于(「无符号大于」于「末」于(「客内存字节」于「元」)))
        于(「无符号小于」于「末」于「有效」))
        于「一二七」
        于(「静态串」于『线性内存越界』))
  而
  「加」于(「读四」于「状态_客内存」)于「有效」
也。

「访存宽」乃化「整数」而「整数」也。
「访存宽」者会「操作码」而
  鉴「操作码」而
    有「四零」则「四」
    或有「四二」则「四」
    或有「四一」则「八」
    或有「四三」则「八」
    或有「四四」则「一」
    或有「四五」则「一」
    或有「四八」则「一」
    或有「四九」则「一」
    或有「四六」则「二」
    或有「四七」则「二」
    或有「五零」则「二」
    或有「五一」则「二」
    或有「五二」则「四」
    或有「五三」则「四」
    或有「五四」则「四」
    或有「五六」则「四」
    或有「五五」则「八」
    或有「五七」则「八」
    或有「五八」则「一」
    或有「六零」则「一」
    或有「五九」则「二」
    或有「六一」则「二」
    或有「六二」则「四」
    或有「其他」则「零」
也。

「执行加载」乃化「整数」而化「整数」而化「整数」而「有」也。
「执行加载」者会「操作码」而会「偏移」而会「栈针」而
  虑「址」者
    「访存地址」于(「栈槽字」于「栈针」于「一」)于「偏移」于(「访存宽」于「操作码」)而
  鉴「操作码」而
    有「四零」则
      「置栈槽字」于「栈针」于「一」于(「读四」于「址」)
    或有「四二」则
      「置栈槽字」于「栈针」于「一」于(「读四」于「址」)
    或有「四一」则
      「置栈槽」于「栈针」于「一」于(「读四」于「址」)于(「读字段」于「址」于「四」)
    或有「四三」则
      「置栈槽」于「栈针」于「一」于(「读四」于「址」)于(「读字段」于「址」于「四」)
    或有「四四」则
      「置栈槽字」于「栈针」于「一」于(「读一有符号」于「址」)
    或有「四五」则
      「置栈槽字」于「栈针」于「一」于(「读一」于「址」)
    或有「四六」则
      「置栈槽字」于「栈针」于「一」于(「读二有符号」于「址」)
    或有「四七」则
      「置栈槽字」于「栈针」于「一」于(「读二」于「址」)
    或有「四八」则
      (虑「值」者「读一有符号」于「址」而「置栈槽」于「栈针」于「一」于「值」于(「有符号右移」于「值」于「三一」))
    或有「四九」则
      「置栈槽」于「栈针」于「一」于(「读一」于「址」)于「零」
    或有「五零」则
      (虑「值」者「读二有符号」于「址」而「置栈槽」于「栈针」于「一」于「值」于(「有符号右移」于「值」于「三一」))
    或有「五一」则
      「置栈槽」于「栈针」于「一」于(「读二」于「址」)于「零」
    或有「五二」则
      (虑「值」者「读四」于「址」而「置栈槽」于「栈针」于「一」于「值」于(「有符号右移」于「值」于「三一」))
    或有「其他」则
      「置栈槽」于「栈针」于「一」于(「读四」于「址」)于「零」
也。

「执行存储」乃化「整数」而化「整数」而化「整数」而「有」也。
「执行存储」者会「操作码」而会「偏移」而会「栈针」而
  虑「址」者
    「访存地址」于(「栈槽字」于「栈针」于「二」)于「偏移」于(「访存宽」于「操作码」)而
    虑「值」者「栈槽字」于「栈针」于「一」而
    鉴「操作码」而
      有「五四」则
        「写四」于「址」于「值」
      或有「五六」则
        「写四」于「址」于「值」
      或有「五五」则
        ((「写四」于「址」于「值」);
          (「写字段」于「址」于「四」于(「读字段」于(「栈槽址」于「栈针」于「一」)于「四」)))
      或有「五七」则
        ((「写四」于「址」于「值」);
          (「写字段」于「址」于「四」于(「读字段」于(「栈槽址」于「栈针」于「一」)于「四」)))
      或有「五八」则
        「写一」于「址」于「值」
      或有「六零」则
        「写一」于「址」于「值」
      或有「五九」则
        「写二」于「址」于「值」
      或有「六一」则
        「写二」于「址」于「值」
      或有「其他」则
        「写四」于「址」于「值」
也。

「执行访存」乃化「整数」而化「整数」而化「整数」而「整数」也。
「执行访存」者会「操作码」而会「址」而会「栈针」而
  虑「对齐后」者「变长后」于「址」而
  虑「偏移」者「读无符号变长」于「对齐后」而
  虑「新址」者「读四」于「状态_读址」而
  虑「无」者(「写四」于「状态_新指令针」于「新址」)而
  若「无符号小于」于(「减」于「操作码」于「四零」)于「一四」
  则
    ((「执行加载」于「操作码」于「偏移」于「栈针」);
      「栈针」)
  否则
    (
      若「无符号小等」于(「减」于「操作码」于「五四」)于「八」
      则
        ((「执行存储」于「操作码」于「偏移」于「栈针」);
          (「减」于「栈针」于「一六」))
      否则
        ((「致命退出」于「一二六」于(「静态串」于『未知访存指令』));
          「栈针」)
    )
也。

「:文言:杂项前缀:批量内存与表。汉语:0xFC 前缀指令:memory.init(8)、data.drop(9)、memory.copy(10)、memory.fill(11)、table.size(16);0–7 为浮点饱和转换,尚不支持。返回新栈针,新指令针写入 状态_新指令针。:」
「数据段条」乃化「整数」而「整数」也。
「数据段条」者会「段」而
  「加」于(「读四」于「状态_数据段表」)于(「乘」于「段」于「数据段条长」)
也。

「内存初始化」乃化「整数」而化「整数」而「整数」也。
「内存初始化」者会「址」而会「栈针」而
  虑「段」者「读无符号变长」于「址」而
  虑「新址」者「加」于(「读四」于「状态_读址」)于「一」而
  虑「无」者(「写四」于「状态_新指令针」于「新址」)而
  虑「个数」者「栈槽字」于「栈针」于「一」而
  虑「源起」者「栈槽字」于「栈针」于「二」而
  虑「目起」者「栈槽字」于「栈针」于「三」而
  虑「条」者「数据段条」于「段」而
  虑「可用长」者
    「选择」
      于(「不等于」于(「读字段」于「条」于「数据段_已弃」)于「零」)于「零」
        于(「读字段」于「条」于「数据段_长度」)而
        虑「无」者
          (「若则致命」
            于(「或者」
              于(「无符号大于」于(「加」于「源起」于「个数」)于「可用长」)
              于(「或者」
                于(「无符号小于」于(「加」于「源起」于「个数」)于「源起」)
                于(「无符号大于」于(「加」于「目起」于「个数」)于(「客内存字节」于「元」))))
                于「一二七」
                于(「静态串」于『memory.init 越界』))而
                虑「无」者
                  (「拷贝」
                    于(「加」于(「读四」于「状态_客内存」)于「目起」)
                    于(「加」于(「读四」于「条」)于「源起」)于「个数」)
                而
                「栈槽址」于「栈针」于「三」
也。

「丢弃数据段」乃化「整数」而化「整数」而「整数」也。
「丢弃数据段」者会「址」而会「栈针」而
  虑「段」者「读无符号变长」于「址」而
  虑「无」者(「写四」于「状态_新指令针」于(「读四」于「状态_读址」))而
  虑「无」者
    (「写字段」于(「数据段条」于「段」)于「数据段_已弃」于「一」)
  而
  「栈针」
也。

「内存复制批量」乃化「整数」而化「整数」而「整数」也。
「内存复制批量」者会「址」而会「栈针」而
  虑「新址」者「加」于「址」于「二」而
  虑「无」者(「写四」于「状态_新指令针」于「新址」)而
  虑「个数」者「栈槽字」于「栈针」于「一」而
  虑「源起」者「栈槽字」于「栈针」于「二」而
  虑「目起」者「栈槽字」于「栈针」于「三」而
  虑「无」者
    (「若则致命」
      于(「或者」
        于(「区间越界」于「源起」于「个数」于(「客内存字节」于「元」))
        于(「区间越界」于「目起」于「个数」于(「客内存字节」于「元」)))
        于「一二七」
        于(「静态串」于『memory.copy 越界』))而
        虑「无」者
          (「拷贝」
            于(「加」于(「读四」于「状态_客内存」)于「目起」)
            于(「加」于(「读四」于「状态_客内存」)于「源起」)于「个数」)
        而
        「栈槽址」于「栈针」于「三」
也。

「内存填充批量」乃化「整数」而化「整数」而「整数」也。
「内存填充批量」者会「址」而会「栈针」而
  虑「新址」者「加」于「址」于「一」而
  虑「无」者(「写四」于「状态_新指令针」于「新址」)而
  虑「个数」者「栈槽字」于「栈针」于「一」而
  虑「值」者「栈槽字」于「栈针」于「二」而
  虑「目起」者「栈槽字」于「栈针」于「三」而
  虑「无」者
    (「若则致命」
      于(「区间越界」于「目起」于「个数」于(「客内存字节」于「元」))
      于「一二七」
      于(「静态串」于『memory.fill 越界』))而
      虑「无」者
        (
          若「大于」于「个数」于「零」则
            「内存填充」
              于(「加」于(「读四」于「状态_客内存」)于「目起」)
              于「值」于「个数」
          否则
            「元」
        )
      而
      「栈槽址」于「栈针」于「三」
也。

「表大小」乃化「整数」而化「整数」而「整数」也。
「表大小」者会「址」而会「栈针」而
  虑「表」者「读无符号变长」于「址」而
  虑「无」者(「写四」于「状态_新指令针」于(「读四」于「状态_读址」))而
  虑「无」者
    (「写四」
      于「栈针」
      于(「读字段」于(「加」于(「读四」于「状态_表描述」)于(「乘」于「表」于「表描述长」))于「表描述_大小」))
  而
  「加」于「栈针」于「八」
也。

「执行杂项」乃化「整数」而化「整数」而化「整数」而「整数」也。
「执行杂项」者会「子」而会「址」而会「栈针」而
  鉴「子」而
    有「八」则
      「内存初始化」于「址」于「栈针」
    或有「九」则
      「丢弃数据段」于「址」于「栈针」
    或有「一零」则
      「内存复制批量」于「址」于「栈针」
    或有「一一」则
      「内存填充批量」于「址」于「栈针」
    或有「一二」则
      「表初始化」于「址」于「栈针」
    或有「一三」则
      「丢弃元素段」于「址」于「栈针」
    或有「一四」则
      「表复制」于「址」于「栈针」
    或有「一五」则
      「表增长」于「址」于「栈针」
    或有「一六」则
      「表大小」于「址」于「栈针」
    或有「一七」则
      「表填充」于「址」于「栈针」
    或有「其他」则(
      若「无符号小于」于「子」于「八」
      则
        「浮饱和截断」于「子」于「址」于「栈针」
      否则
        ((「致命退出」于「一二六」于(「静态串」于『不支持的杂项指令』));
          「栈针」)
    )
也。