豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 216 行 · 13927 字节 · UTF-8
§
寻观「底层库」之书。
寻观「客体二号」之「布局」之书。
寻观「客体二号」之「林系统」之书。
寻观「客体二号」之「苹系统」之书。
寻观「客体二号」之「平台」之书。
寻观「客体二号」之「基础」之书。

「:文言:原生宿主之装载:执行器未嵌客体者,以首参为模块之径,读之于动态区之首,如大程序然;程序名易为此径,首参去之。于是同一执行器,或嵌客体而为独立之可执行文件,或受 .wasm 之径而为原生之宿主。汉语:原生宿主形态的装载:执行器里没有嵌入客体模块(状态_模块长 为 0)时,把第一个命令行参数当作 .wasm 模块路径,读进动态区开头(与运行磁盘上的大程序相同:置 状态_主程序大,解析模块把模块址设为 区域起),程序名改为这个路径,并从参数中去掉它。这样同一份执行器既可以嵌入客体成为独立可执行文件,也可以作为原生宿主运行任意 .wasm:`yy原生宿主 程序.wasm 参数…`。打不开或太大时打印原因并以 127 退出。:」

「原生开读」乃化「整数」而「整数」也。
「原生开读」者会「路径」而
  若「是苹」于「元」则
    「苹_开」于(「减」于「零」于「二」)于「路径」于「一六七七七二一六」于「零」
  否则
    「林_开」于(「减」于「零」于「一零零」)于「路径」于「五二四二八八」于「零」
也。

「:文言:文件之长:苹果以 fstat(st_size 在九十六),Linux 以 statx(stx_size 在四十)。汉语:已打开文件的长度(低 32 位):macOS 用 fstat(st_size 在 96),Linux 用 statx 加 AT_EMPTY_PATH(stx_size 在 40);出错返回 -1。:」
「原生文件长」乃化「整数」而化「整数」而「整数」也。
「原生文件长」者会「柄」而会「缓」而
  虑「果」者
    若「是苹」于「元」则
      「苹_柄状态」于「柄」于「缓」
    否则
      「林_状态」于「柄」于(「静态串」于『』)于「四零九六」于「二零四七」于「缓」
  而
  若「小于」于「果」于「零」则
    (「减」于「零」于「一」)
  否则
    「读四」于(「加」于「缓」于(「选择」于(「是苹」于「元」)于「九六」于「四零」))
也。

「原生读满」乃化「整数」而化「整数」而化「整数」而化「整数」而「整数」也。
「原生读满」者会「柄」而会「址」而会「长」而会「已」而
  若「有符号大等」于「已」于「长」则
    「已」
  否则
    虑「数」者
      若「是苹」于「元」则
        「苹_读」于「柄」于(「加」于「址」于「已」)于(「减」于「长」于「已」)
      否则
        「林_读」于「柄」于(「加」于「址」于「已」)于(「减」于「长」于「已」)
    而
    若「有符号小等」于「数」于「零」则「已」否则「原生读满」于「柄」于「址」于「长」
    于(「加」于「已」于「数」)
也。

「原生装载失败」乃化「整数」而「有」也。
「原生装载失败」者会「串」而
  虑「无」者「打印零串」于「串」而
  虑「无」者「写字节」于「一零」而
  「退出任务」于「一二七」
也。

「:文言:定位之读:苹果以 pread,Linux 以 pread64。汉语:按偏移读(macOS pread,Linux pread64),偏移只用低 32 位。:」
「原生定读」乃化「整数」而化「整数」而化「整数」而化「整数」而「整数」也。
「原生定读」者会「柄」而会「址」而会「长」而会「偏」而
  若「是苹」于「元」则
    「苹_定读」于「柄」于「址」于「长」于「偏」
  否则
    「林_定读」于「柄」于「址」于「长」于「偏」
也。

「原生定读满」乃化「整数」而化「整数」而化「整数」而化「整数」而化「整数」而「整数」也。
「原生定读满」者会「柄」而会「址」而会「长」而会「偏」而会「已」而
  若「有符号大等」于「已」于「长」则
    「已」
  否则
    虑「数」者「原生定读」于「柄」于(「加」于「址」于「已」)于(「减」于「长」于「已」)于(「加」于「偏」于「已」)而
    若「有符号小等」于「数」于「零」则「已」否则「原生定读满」于「柄」于「址」于「长」于「偏」于(「加」于「已」于「数」)
也。

「:文言:苹果之尾标所在:解 Mach-O 之首,寻 LC_CODE_SIGNATURE(二十九),尾标终于其 dataoff。汉语:macOS 可执行文件里尾标的位置:读文件开头 4 KiB,逐条看加载命令(第 16 字节起是命令数,命令从第 32 字节开始),找到 LC_CODE_SIGNATURE(29)后,尾标结束于它的 dataoff;找不到返回 -1。:」
「原生苹尾偏」乃化「整数」而化「整数」而化「整数」而「整数」也。
「原生苹尾偏」者会「缓」而会「位」而会「剩」而
  若「或者」于(「有符号小等」于「剩」于「零」)于(「有符号大等」于「位」于「四零八八」)则
    (「减」于「零」于「一」)
  否则若「等」于(「读四」于(「加」于「缓」于「位」))于「二九」则
    「减」于(「读四」于(「加」于(「加」于「缓」于「位」)于「八」))于「一六」
  否则
    虑「长」者「读四」于(「加」于(「加」于「缓」于「位」)于「四」)而
    若「有符号小等」于「长」于「零」则
      (「减」于「零」于「一」)
    否则
      「原生苹尾偏」于「缓」于(「加」于「位」于「长」)于(「减」于「剩」于「一」)
也。

「:文言:可执行文件自带之模块:尾标为“YUYANMOD”加八字节之长,模块居其前。Linux 之尾标在文件之末,苹果之尾标终于签名之始。得之则读入动态区之首如大程序。汉语:读取可执行文件自带的模块(预编的大程序用,见 马赫格式写出 与 Linux可执行 的尾块):尾标是 16 字节(“YUYANMOD”加 8 字节长度),模块紧挨在尾标之前;Linux 的尾标在文件末尾,macOS 的尾标结束于代码签名的起点。找到就像磁盘上的大程序一样读进动态区开头并置 状态_主程序大,返回阳;没有尾标返回阴。:」
「原生装载内嵌」乃化「整数」而「爻」也。
「原生装载内嵌」者会「路径」而
  虑「柄」者「原生开读」于「路径」而
  若「小于」于「柄」于「零」则
    「阴」
  否则
    虑「缓」者「送参数区」而
    虑「文长」者「原生文件长」于「柄」于「缓」而
    虑「尾偏」者
      (若「是苹」于「元」则
        (若「小于」于(「原生定读满」于「柄」于「缓」于「四零九六」于「零」于「零」)于「四零九六」则
          (「减」于「零」于「一」)
        否则
          「原生苹尾偏」于「缓」于「三二」于(「读四」于(「加」于「缓」于「一六」)))
      否则
        「减」于「文长」于「一六」)
    而
    虑「读标」者
      (若「小于」于「尾偏」于「一六」则「零」否则「原生定读满」于「柄」于「缓」于「一六」于「尾偏」于「零」)
    而
    若「或者」
      于(「小于」于「读标」于「一六」)
      于(「或者」
        于(「不等于」于(「读四」于「缓」)于「一零九六三七三五九三」)
        于(「不等于」于(「读四」于(「加」于「缓」于「四」))于「一一四六零四七八二二」))
    则
      ((若「是苹」于「元」则「苹_关」于「柄」否则「林_关」于「柄」);「阴」)
    否则
      虑「模长」者「读四」于(「加」于「缓」于「八」)而
      虑「起」者「减」于「尾偏」于「模长」而
      虑「需页」者「无符号除」于(「加」于(「加」于「区域起」于「模长」)于「六五五三五」)于「六五五三六」而
      虑「今页」者「内存页数」于「元」而
      虑「增」者(若「无符号大于」于「需页」于「今页」则「内存增长」于(「减」于「需页」于「今页」)否则「零」)而
      若「小于」于「增」于「零」则
        ((「原生装载失败」于(「静态串」于『原生:内嵌模块过大,内存不足』));「阴」)
      否则
        虑「读数」者「原生定读满」于「柄」于「区域起」于「模长」于「起」于「零」而
        虑「无」者(若「是苹」于「元」则「苹_关」于「柄」否则「林_关」于「柄」)而
        虑「无」者「写四」于「状态_模块长」于「读数」而
        虑「无」者「写四」于「状态_主程序大」于「一」而
        「阳」
也。

「:文言:自身之径:程序名区之径,补零于送程序名区。汉语:可执行文件自身的路径:程序名区里的路径(Linux 是 /proc/self/exe 的目标,macOS 是 exec 时的路径)拷到送程序名区并补结尾零。:」
「原生自身路径」乃化「有」而「整数」也。
「原生自身路径」者会「无」而
  虑「长」者「选择」于(「大于」于(「读四」于「程序名区」)于「一零零零」)于「一零零零」于(「读四」于「程序名区」)而
  虑「无」者「拷贝」于「送程序名区」于(「加」于「程序名区」于「四」)于「长」而
  虑「无」者「写一」于(「加」于「送程序名区」于「长」)于「零」而
  「送程序名区」
也。

「原生装载程序」乃化「有」而「有」也。
「原生装载程序」者会「无」而
  若「不等于」于(「读四」于「状态_模块长」)于「零」则
    「元」
  否则若「原生装载内嵌」于(「原生自身路径」于「元」)则
    「元」
  否则若「等零」于(「读四」于「参数区」)则
    「元」
  否则
    虑「首长」者「读四」于(「加」于「参数区」于「四」)而
    若「或者」于(「有符号小等」于「首长」于「零」)于(「大于」于「首长」于「一零零零」)则
      「原生装载失败」于(「静态串」于『原生宿主:程序路径为空或过长』)
    否则
      虑「路径」者「送程序名区」
      而
      虑「无」者
        「拷贝」于「路径」于(「加」于「参数区」于「八」)于「首长」
      而
      虑「无」者「写一」于(「加」于「路径」于「首长」)于「零」
      而
      虑「柄」者「原生开读」于「路径」
      而
      若「小于」于「柄」于「零」则
        「原生装载失败」于(「静态串」于『原生宿主:无法打开程序』)
      否则
        虑「长」者「原生文件长」于「柄」于「送参数区」
        而
        若「或者」于(「小于」于「长」于「零」)于(「无符号大于」于「长」于「最大主程序长」)则
          「原生装载失败」于(「静态串」于『原生宿主:程序过大或无法取长度』)
        否则
          虑「需页」者
            「无符号除」
              于(「加」于(「加」于「区域起」于「长」)于「六五五三五」)
              于「六五五三六」
          而
          虑「今页」者「内存页数」于「元」
          而
          虑「增」者
            若「无符号大于」于「需页」于「今页」则「内存增长」
            于(「减」于「需页」于「今页」)
            否则
              「零」
          而
          若「小于」于「增」于「零」则
            「原生装载失败」于(「静态串」于『原生宿主:内存不足』)
          否则
            虑「读数」者「原生读满」于「柄」于「区域起」于「长」于「零」
            而
            虑「无」者
              (若「是苹」于「元」则「苹_关」于「柄」否则「林_关」于「柄」)
            而
            虑「无」者「写四」于「状态_模块长」于「读数」
            而
            虑「无」者「写四」于「状态_主程序大」于「一」
            而
            虑「名长」者
              「选择」
                于(「大于」于「首长」于「程序名上限」)
                于「程序名上限」于「首长」
            而
            虑「无」者
              「拷贝」于(「加」于「程序名区」于「四」)于「路径」于「名长」
            而
            虑「无」者「写四」于「程序名区」于「名长」
            而
            虑「首项长」者
              「位与」于(「加」于「首长」于「七」)于(「减」于「零」于「四」)
            而
            虑「无」者
              「拷贝」
                于(「加」于「参数区」于「四」)
                于(「加」于(「加」于「参数区」于「四」)于「首项长」)
                于(「减」于(「减」于「参数区大小」于「四」)于「首项长」)
            而
            「写四」于「参数区」于(「减」于(「读四」于「参数区」)于「一」)
也。