豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 297 行 · 16100 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「字节串」之书。
寻观「标准库」之「数据结构」之「字符串术」之书。
寻观「编译器核心」之「网页汇编核心」之「二进制生成」之书。
寻观「裸机后端」之「机器编码」之书。

「:文言:离线造盘,格式同客体执行器二号之文件系统。汉语:按 豫言操作系统/裸机/客体二号/文件系统。豫 的双区追加日志格式,离线生成一个已格式化并写入目录与文件的磁盘镜像:扇区 0、1 为超级块(只写代数一的一个),其后两个等长的区,第一区依次记录建目录与写文件。校验为 32 位 FNV-1a。生成的镜像可直接作为 QEMU 的 virtio-blk 磁盘,客体挂载后即见这些文件;格式变更须与 文件系统。豫 同步。:」
「盘魔数超级」乃「整数」也。
「盘魔数超级」者「一三九七一一九三二一」也。

「盘魔数头」乃「整数」也。
「盘魔数头」者「八二七四八零四零九」也。

「盘魔数提交」乃「整数」也。
「盘魔数提交」者「八二六四九七三六九」也。

「盘校验初值」乃「整数」也。
「盘校验初值」者「二一六六一三六二六一」也。

「盘校验乘数」乃「整数」也。
「盘校验乘数」者「一六七七七六一九」也。

「盘二的三二次」乃「整数」也。
「盘二的三二次」者「四二九四九六七二九六」也。

「盘路径上限」乃「整数」也。
「盘路径上限」者「四四零」也。

「:文言:八位之异或,逐位而算。汉语:甲、乙为零到二五五之整数,返回按位异或。:」
「盘异或八位」乃化「整数」而化「整数」而「整数」也。
「盘异或八位」者会「甲」而
  会「乙」而
    递归虑「逐位」其化「整数」而化「整数」而化「整数」而化「整数」而「整数」者会「x」而会「y」而会「权」而会「累」而
      若「等于」于「权」于「二五六」则「累」否则
        虑「位甲」者「整数余数」于(「除以」于「x」于「权」)于「二」
        而
        虑「位乙」者「整数余数」于(「除以」于「y」于「权」)于「二」而
        「逐位」
          于「x」
          于「y」
          于(「乘」于「权」于「二」)
          于(若「等于」于「位甲」于「位乙」则「累」否则「加」于「累」于「权」)
    而
    「逐位」于「甲」于「乙」于「一」于「零」
也。

「:文言:三十二位 FNV-1a,种子可续。汉语:对字节串逐字节做 h = (h xor 字节) * 16777619 (mod 2^32)。:」
「盘校验」乃化「字节串」而化「整数」而「整数」也。
「盘校验」者会「串」而会「种子」而
  虑「长」者「字节串长度」于「串」而
  递归虑「逐字节」其化「整数」而化「整数」而「整数」者会「位置」而
  会「累」而
  若「等于」于「位置」于「长」则
    「累」
  否则
    虑「字节」者「字节串取字节」于「串」于「位置」
    而
    虑「低」者「整数余数」于「累」于「二五六」而
    虑「新」者
      「整数余数」
        于(「乘」于(「加」于(「减」于「累」于「低」)于(「盘异或八位」于「低」于「字节」))于「盘校验乘数」)
        于「盘二的三二次」
    而
    「逐字节」于(「加」于「位置」于「一」)于「新」
  而
  「逐字节」于「零」于「种子」
也。

「盘补扇区」乃化「字节串」而「字节串」也。
「盘补扇区」者会「串」而
  虑「余」者「整数余数」于(「字节串长度」于「串」)于「五一二」而
  若「等于」于「余」于「零」则
    「串」
  否则
    「拼接字节串」于「串」于(「零字节」于(「减」于「五一二」于「余」))
也。

「盘字」乃化「整数」而「字节串」也。
「盘字」者会「数」而
  「小端字节」于「四」于「数」
也。

「盘上取扇区」乃化「整数」而「整数」也。
「盘上取扇区」者会「字节」而
  「除以」于(「加」于「字节」于「五一一」)于「五一二」
也。

「:文言:造一条记录:头扇区、数据扇区、提交扇区。汉语:类型一建目录、二写文件;序号自一起;返回记录的全部字节(扇区数为数据扇区数加二)。:」
「盘记录」乃化「整数」而化「整数」而化「字符串」而化「字节串」而「字节串」也。
「盘记录」者会「序」而会「类型」而会「路径」而会「数据」而
  虑「路径字节」者「字符串转字节串」于「路径」而
  虑「路径长」者「字节串长度」于「路径字节」而
  若「或者」于(「小于」于「路径长」于「一」)于(「大于」于「路径长」于「盘路径上限」)则
    「发生事故」于(『盘路径长度不合:』附「路径」)
  否则
    虑「数据长」者「字节串长度」于「数据」
    而
    虑「ds」者「盘上取扇区」于「数据长」而
    虑「dsum」者「盘校验」于「数据」于「盘校验初值」而
    虑「头前」者
      「网页拼字节」于(「列」【
        「盘字」于「盘魔数头」,
        「盘字」于「一」,
        「盘字」于「序」,
        「盘字」于「类型」,
        「盘字」于「路径长」,
        「盘字」于「数据长」,
        「盘字」于「ds」,
        「盘字」于「dsum」
      】)
    而
    虑「头校验」者「盘校验」于「头前」于「盘校验初值」而
    虑「头」者
      「盘补扇区」于(「拼接字节串」于(「拼接字节串」于「头前」于(「盘字」于「头校验」))于「路径字节」)
    而
    虑「提交前」者
      「网页拼字节」于(「列」【
        「盘字」于「盘魔数提交」,
        「盘字」于「一」,
        「盘字」于「序」,
        「盘字」于「头校验」,
        「盘字」于「dsum」
      】)
    而
    虑「提交校验」者「盘校验」于「提交前」于「盘校验初值」而
    虑「提交」者
      「盘补扇区」于(「拼接字节串」于「提交前」于(「盘字」于「提交校验」))
    而
    「网页拼字节」于(「列」【「头」,「盘补扇区」于「数据」,「提交」】)
也。

「:文言:路径之祖先,浅者在前。汉语:返回绝对路径的全部真祖先目录(不含根与自身),由浅到深,如 /甲/乙/丙 得 /甲、/甲/乙。:」
「盘祖先们」乃化「字符串」而(「列」于「字符串」)也。
「盘祖先们」者会「路径」而
  递归虑「找」其化「整数」而化(「列」于「字符串」)而(「列」于「字符串」)者会「起」而
  会「累」而
  鉴「串从左搜索单个」于『/』于(「获取子字符串」于「起」于(「串长度」于「路径」)于「路径」)而
    有「可有」于「位」则
      「找」
        于(「加」于(「加」于「起」于「位」)于「一」)
        于(「附加」授以「字符串」
          于「累」
          于(「一元素列」授以「字符串」于(「获取子字符串」于「零」于(「加」于「起」于「位」)于「路径」)))
    或有「可无」则
      「累」
  而
  「找」于「一」于(「罄」授以「字符串」)
也。

「:文言:造一整盘。汉语:容量以扇区计(至少二十);目录须父在子前;文件的父目录须已在目录表中(由造盘工具补全)。区长为(容量减二)的一半,全部记录须放进第一区。:」
「造持久盘」乃
  化「整数」而
  化(「列」于「字符串」)而
  化(「列」于(「字符串」合「字节串」))而
  「字节串」
也。
「造持久盘」者会「容量」而会「目录们」而会「文件们」而
  若「小于」于「容量」于「二零」则
    「发生事故」于『磁盘容量不足二十个扇区』
  否则
    虑「区长」者「除以」于(「减」于「容量」于「二」)于「二」
    而
    虑「记录们」者
      「附加」授以「字节串」
      于(「态射序号」授以「字符串」授以「字节串」
        于(会「序」而会「路径」而「盘记录」于(「加」于「序」于「一」)于「一」于「路径」于(「空字节串」于「元」))
        于「目录们」)
        于(「态射序号」授以(「字符串」合「字节串」)授以「字节串」
          于(会「序」而会「项」而「盘记录」
            于(「加」于「序」于(「加」于「一」于(「长度」授以「字符串」于「目录们」)))
            于「二」
            于(「项」中「零」)
            于(「项」中「一」))于「文件们」)
    而
    虑「记录区」者「网页拼字节」于「记录们」而
    虑「记录扇区」者「除以」于(「字节串长度」于「记录区」)于「五一二」而
    若「大于」于「记录扇区」于「区长」则
      「发生事故」于(『磁盘容量装不下全部记录:需要 』附(「整数表示」于「记录扇区」)附『 个扇区,区长 』附(「整数表示」
        于「区长」))
    否则
      虑「超前」者
        「网页拼字节」于(「列」【
          「盘字」于「盘魔数超级」,
          「盘字」于「一」,
          「盘字」于「一」,
          「盘字」于「零」,
          「盘字」于「二」,
          「盘字」于「区长」,
          「盘字」于「容量」
        】)
      而
      虑「超级」者
        「盘补扇区」于(「拼接字节串」于「超前」于(「盘字」于(「盘校验」于「超前」于「盘校验初值」)))
      而
      「网页拼字节」于(「列」【
        「零字节」于「五一二」,
        「超级」,
        「记录区」,
        「零字节」于(「乘」于(「减」于「区长」于「记录扇区」)于「五一二」),
        「零字节」于(「乘」于(「减」于(「减」于「容量」于「二」)于「区长」)于「五一二」)
      】)
也。

「是目录参数」乃化「字符串」而「爻」也。
「是目录参数」者会「参」而
  「串开头是它吗」于『+』于「参」
也。

「盘内之路」乃化「字符串」而「字符串」也。
「盘内之路」者会「参」而
  鉴「串从左搜索单个」于『=』于「参」而
    有「可有」于「位」则
      「获取子字符串」于「零」于「位」于「参」
    或有「可无」则
      「发生事故」于(『文件参数缺少等号:』附「参」)
也。

「本地之路」乃化「字符串」而「字符串」也。
「本地之路」者会「参」而
  鉴「串从左搜索单个」于『=』于「参」而
    有「可有」于「位」则
      「获取子字符串」于(「加」于「位」于「一」)于(「串长度」于「参」)于「参」
    或有「可无」则
      「发生事故」于(『文件参数缺少等号:』附「参」)
也。

「去重」乃化(「列」于「字符串」)而(「列」于「字符串」)也。
「去重」者会「们」而
  递归虑「逐个」其化(「列」于「字符串」)而化(「列」于「字符串」)而(「列」于「字符串」)者会「余」而
  会「累」而
  鉴「余」而
    有「罄」则「累」
    或有「缀」于「首」于「尾」则
      若「存在吗」授以「字符串」于(会「x」而「串相等」于「x」于「首」)于「累」则
        「逐个」于「尾」于「累」
      否则
        「逐个」
          于「尾」
          于(「附加」授以「字符串」于「累」于(「一元素列」授以「字符串」于「首」))
  而
  「逐个」于「们」于(「罄」授以「字符串」)
也。

「:文言:依命令行式之参数造盘。汉语:参数含 +盘内目录 与 盘内路径=本地文件 两种;读本地文件,补建祖先目录,返回整盘字节。:」
「按参数造持久盘」乃化「整数」而化(「列」于「字符串」)而「字节串」也。
「按参数造持久盘」者会「容量」而会「参们」而
  虑「显式目录们」者
    「态射」授以「字符串」授以「字符串」
    于(「滤」授以「字符串」于「是目录参数」于「参们」)
    于(会「参」而「获取子字符串」于「一」于(「串长度」于「参」)于「参」)而
    虑「文件参们」者
      「滤」授以「字符串」
      于(会「参」而「非」于(「是目录参数」于「参」))于「参们」而
      虑「文件们」者
        「态射」授以「字符串」授以(「字符串」合「字节串」)
        于「文件参们」
        于(会「参」而(「盘内之路」于「参」)与(「文件系统」之「读文件字节串」于(「本地之路」于「参」)))而
        虑「全路径们」者
          「附加」授以「字符串」
          于「显式目录们」
          于(「态射」授以(「字符串」合「字节串」)授以「字符串」于「文件们」于(会「项」而「项」中「零」))而
          虑「目录们」者
            「去重」于(「串联」授以「字符串」
              于(「态射」授以「字符串」授以(「列」于「字符串」)
              于「全路径们」
              于(会「路」而「附加」授以「字符串」
                于(「盘祖先们」于「路」)
                于(
                若「存在吗」授以「字符串」
                于(会「x」而「串相等」于「x」于「路」)于「显式目录们」则「一元素列」授以「字符串」
                  于「路」
                否则
                  「罄」授以「字符串」))))
          而
          「造持久盘」于「容量」于「目录们」于「文件们」
也。

「:文言:以本地一树为盘之根,列出造盘之参。汉语:递归读取本地目录 根,为每个子目录生成 +盘内目录,为每个文件生成 盘内路径=本地路径;盘内前缀为空表示盘根。跳过 . 与 ..。:」
「目录树造盘参数」乃化「字符串」而化「字符串」而(「列」于「字符串」)也。
「目录树造盘参数」者会「根」而会「前缀」而
  虑「名们」者
    「滤」授以「字符串」
    于(会「名」而「非」于(「或者」于(「串相等」于「名」于『.』)于(「串相等」于「名」于『..』)))
    于(「文件系统」之「读文件夹」于「根」)
  而
  「串联」授以「字符串」于(「态射」授以「字符串」授以(「列」于「字符串」)
  于「名们」
  于(会「名」而
  虑「本地」者「根」附『/』附「名」而
  虑「盘内」者「前缀」附『/』附「名」而
  若「文件系统」之「路径是文件夹」于「本地」则
    「附加」授以「字符串」
    于(「一元素列」授以「字符串」于(『+』附「盘内」))
    于(「目录树造盘参数」于「本地」于「盘内」)
  否则
    「一元素列」授以「字符串」于(「盘内」附『=』附「本地」)))
也。