豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 454 行 · 25624 字节 · UTF-8
§
寻观「底层库」之书。
寻观「客体二号」之「布局」之书。
寻观「客体二号」之「平台」之书。
寻观「客体二号」之「基础」之书。
寻观「客体二号」之「实例」之书。
寻观「客体二号」之「堆」之书。
寻观「客体二号」之「模块」之书。
寻观「客体二号」之「对象」之书。
寻观「客体二号」之「文件系统」之书。
寻观「客体二号」之「宿主对象」之书。
寻观「客体二号」之「软浮点」之书。
寻观「客体二号」之「主机文件」之书。
寻观「客体二号」之「裸机底层基础」之书。

「:文言:数与时与杂项之原语:小数运算、小数与文与整数之转、单调时钟、日期、路径判断、字节序比较。汉语:宿主原语 49–66:49–52 小数加减乘除,53 小数转字符串(定点六位),54 小数精确表示(%.17g,大整数精算),55 小数转整数,56 整数转小数,57 字符串转小数,58 获取当前纳秒时间(经底层接口读单调纳秒,失败时退回内核滴答换算),59 获取当前本地日期时间字符串、60 格式化当前本地日期时间(没有实时时钟,以 1970-01-01 00:00:00 为开机之时,故只是开机以来的时长),61 路径可执行(即普通文件)、62 查找可执行程序(在 /bin 与 /程序 下找)、63 路径为符号链接(恒否)、64 取得真实路径、65 在线处理器数量(恒 1)、66 字符串按字节在前。小数在宿主里是 yy_float 结构(头 + 一个 8 字节槽),运算用软浮点。:」
「新浮点对象」乃化「整数」而化「整数」而「整数」也。
「新浮点对象」者会「低」而会「高」而
  虑「类型号」者「读四」于「状态_型浮点」而
  虑「无」者
    (「若则致命」于(「小于」于「类型号」于「零」)于「一二七」
      于(「静态串」于『模块未导出 yy_float,不能构造小数』))而
      虑「对象」者
        「分配对象」于(「结构字节」于「类型号」)于「种类结构」于「类型号」而
        虑「无」者(「写字段」于「对象」于「八」于「低」)而
        虑「无」者(「写字段」于「对象」于「一二」于「高」)而
        「对象」
也。

「读浮点」乃化「整数」而化「整数」而「有」也。
「读浮点」者会「引用」而会「槽」而
  虑「无」者(「空引用检」于「引用」)而
  「宽存」于「槽」于(「读字段」于「引用」于「八」)于(「读字段」于「引用」于「一二」)
也。

「浮点二元」乃化「整数」而化「整数」而「有」也。
「浮点二元」者会「号」而会「参」而
  虑「无」者(「读浮点」于(「元组项」于「参」于「零」)于「浮槽_甲」)而
  虑「无」者(「读浮点」于(「元组项」于「参」于「一」)于「浮槽_乙」)而
  鉴「号」而
    有「四九」则
      「浮加减」于「浮槽_果」于「浮槽_甲」于「浮槽_乙」于「零」
    或有「五零」则
      「浮加减」于「浮槽_果」于「浮槽_甲」于「浮槽_乙」于「一」
    或有「五一」则
      「浮乘」于「浮槽_果」于「浮槽_甲」于「浮槽_乙」
    或有「其他」则
      「浮除」于「浮槽_果」于「浮槽_甲」于「浮槽_乙」
也。

「浮点二元原语」乃化「整数」而化「整数」而「整数」也。
「浮点二元原语」者会「号」而会「参」而
  虑「无」者「浮点二元」于「号」于「参」而
  「新浮点对象」于(「宽低」于「浮槽_果」)于(「宽高」于「浮槽_果」)
也。

「小数转串原语」乃化「整数」而「整数」也。
「小数转串原语」者会「参」而
  虑「无」者(「读浮点」于(「元组项」于「参」于「零」)于「浮槽_甲」)而
  虑「长」者「浮转定点串」于「浮槽_甲」而
  虑「串」者「新字节数组」于「长」而
  虑「无」者
    (「拷贝」于(「加」于「串」于「一六」)于「浮串缓冲」于「长」)
  而
  「串」
也。

「:文言:小数之精确表示,同 C 之 %.17g。汉语:小数精确表示(与 %.17g 相同,见 软浮点 的 浮转精确串)。:」
「小数精确原语」乃化「整数」而「整数」也。
「小数精确原语」者会「参」而
  虑「无」者(「读浮点」于(「元组项」于「参」于「零」)于「浮槽_甲」)而
  虑「长」者「浮转精确串」于「浮槽_甲」而
  虑「串」者「新字节数组」于「长」而
  虑「无」者
    (「拷贝」于(「加」于「串」于「一六」)于「浮串缓冲」于「长」)
  而
  「串」
也。

「小数转整数原语」乃化「整数」而「整数」也。
「小数转整数原语」者会「参」而
  虑「无」者(「读浮点」于(「元组项」于「参」于「零」)于「浮槽_甲」)而
  虑「无」者(「浮转整」于「浮槽_果」于「浮槽_甲」)而
  「装箱」于(「宽低」于「浮槽_果」)于(「宽高」于「浮槽_果」)
也。

「整数转小数原语」乃化「整数」而「整数」也。
「整数转小数原语」者会「参」而
  虑「无」者(「拆箱」于(「元组项」于「参」于「零」)于「浮槽_甲」)而
  虑「无」者(「整转浮」于「浮槽_果」于「浮槽_甲」)而
  「新浮点对象」于(「宽低」于「浮槽_果」)于(「宽高」于「浮槽_果」)
也。

「字符串转小数原语」乃化「整数」而「整数」也。
「字符串转小数原语」者会「参」而
  虑「串」者「元组项」于「参」于「零」而
  虑「无」者(「空引用检」于「串」)而
  虑「无」者
    (「析浮点」于(「字节数组址」于「串」)于(「字节数组长」于「串」)于「浮槽_果」)
  而
  「新浮点对象」于(「宽低」于「浮槽_果」)于(「宽高」于「浮槽_果」)
也。

「纳秒时间原语」乃化「有」而「整数」也。
「纳秒时间原语」者会「无」而
  虑「码」者「读单调纳秒」于「浮槽_甲」而
  虑「无」者
    若「不等于」于「码」于「零」则
      ((「宽存」于「浮槽_甲」于(「时钟滴答」于「元」)于「零」);
        (「整转浮」于「浮槽_乙」于「浮槽_甲」);
        (「宽存」于「浮槽_甲」于「一零零零零零零零」于「零」);
        (「整转浮」于「浮槽_暂一」于「浮槽_甲」);
        「浮乘」于「浮槽_果」于「浮槽_乙」于「浮槽_暂一」)
    否则
      「整转浮」于「浮槽_果」于「浮槽_甲」
  而
  「新浮点对象」于(「宽低」于「浮槽_果」)于(「宽高」于「浮槽_果」)
也。

「:文言:日期:自硬件实时钟之秒数推公历之年月日时分秒(世界协调时,无时区)。汉语:日期计算:读 平台.墙钟秒(自 1970-01-01 起的秒数,ARM64 的 PL031 或 AMD64 的 CMOS 时钟)折成天数与当天的秒数,公历年月日用 Howard Hinnant 的 civil_from_days 算法;年月日时分秒依次存进 日期格 起的六个 4 字节格(借用析文的状态格,二者不同时使用)。时区一律是 UTC。:」
「日期格」者「析格_符」也。

「算日期」乃化「有」而「有」也。
「算日期」者会「无」而
  虑「秒」者「墙钟秒」于「元」而
  虑「天」者「无符号除」于「秒」于「八六四零零」而
  虑「余」者「无符号余」于「秒」于「八六四零零」而
  虑「无」者
    (「写四」于(「加」于「日期格」于「一二」)于(「无符号除」于「余」于「三六零零」))而
    虑「无」者
      (「写四」于(「加」于「日期格」于「一六」)于(「无符号除」于(「无符号余」于「余」于「三六零零」)于「六零」))
    而
    虑「无」者
      (「写四」于(「加」于「日期格」于「二零」)于(「无符号余」于「余」于「六零」))而
      虑「天序」者「加」于「天」于「七一九四六八」而
      虑「纪」者「无符号除」于「天序」于「一四六零九七」而
      虑「日内」者
        「减」于「天序」于(「乘」于「纪」于「一四六零九七」)而
        虑「年内」者
          「无符号除」
            于(「减」
              于(「加」
                于(「减」于「日内」于(「无符号除」于「日内」于「一四六零」))
                于(「无符号除」于「日内」于「三六五二四」))
                于(「无符号除」于「日内」于「一四六零九六」))于「三六五」而
                虑「基年」者
                  「加」于「年内」于(「乘」于「纪」于「四零零」)而
                  虑「年日」者
                    「减」
                      于「日内」
                      于(「减」
                        于(「加」于(「乘」于「三六五」于「年内」)于(「无符号除」于「年内」于「四」))
                        于(「无符号除」于「年内」于「一零零」))而
                        虑「月序」者
                          「无符号除」
                            于(「加」于(「乘」于「五」于「年日」)于「二」)
                            于「一五三」而
                            虑「日」者
                              「加」
                                于(「减」
                                  于「年日」
                                  于(「无符号除」于(「加」于(「乘」于「一五三」于「月序」)于「二」)于「五」))
                                  于「一」而
                                  虑「月」者
                                    「选择」
                                      于(「小于」于「月序」于「一零」)
                                      于(「加」于「月序」于「三」)
                                      于(「减」于「月序」于「九」)而
                                      虑「无」者
                                        (「写四」
                                          于「日期格」
                                          于(「加」于「基年」于(「爻整」于(「有符号小等」于「月」于「二」))))而
                                          虑「无」者
                                            (「写四」于(「加」于「日期格」于「四」)于「月」)
                                          而
                                          「写四」
                                            于(「加」于「日期格」于「八」)
                                            于「日」
也。

「日期串原语」乃化「有」而「整数」也。
「日期串原语」者会「无」而
  虑「无」者「算日期」于「元」而
  虑「串」者「新字节数组」于「一九」而
  虑「出」者「加」于「串」于「一六」而
  虑「无」者(「写数位们」于「出」于(「读四」于「日期格」)于「四」)而
  虑「无」者(「写一」于(「加」于「出」于「四」)于「四五」)而
  虑「无」者
    (「写数位们」于(「加」于「出」于「五」)于(「读四」于(「加」于「日期格」于「四」))于「二」)而
    虑「无」者(「写一」于(「加」于「出」于「七」)于「四五」)而
    虑「无」者
      (「写数位们」于(「加」于「出」于「八」)于(「读四」于(「加」于「日期格」于「八」))于「二」)而
      虑「无」者(「写一」于(「加」于「出」于「一零」)于「三二」)而
      虑「无」者
        (「写数位们」于(「加」于「出」于「一一」)于(「读四」于(「加」于「日期格」于「一二」))于「二」)而
        虑「无」者(「写一」于(「加」于「出」于「一三」)于「五八」)而
        虑「无」者
          (「写数位们」于(「加」于「出」于「一四」)于(「读四」于(「加」于「日期格」于「一六」))于「二」)而
          虑「无」者(「写一」于(「加」于「出」于「一六」)于「五八」)而
          虑「无」者
            (「写数位们」于(「加」于「出」于「一七」)于(「读四」于(「加」于「日期格」于「二零」))于「二」)
          而
          「串」
也。

「写日期项」乃化「整数」而化「整数」而化「整数」而「整数」也。
「写日期项」者会「出」而会「下」而会「出位」而
  鉴「下」而
    有「八九」则
      ((「写数位们」于(「加」于「出」于「出位」)于(「读四」于「日期格」)于「四」);
        「加」于「出位」于「四」)
    或有「一零九」则
      ((「写数位们」于(「加」于「出」于「出位」)于(「读四」于(「加」于「日期格」于「四」))于「二」);
        「加」于「出位」于「二」)
    或有「一零零」则
      ((「写数位们」于(「加」于「出」于「出位」)于(「读四」于(「加」于「日期格」于「八」))于「二」);
        「加」于「出位」于「二」)
    或有「七二」则
      ((「写数位们」于(「加」于「出」于「出位」)于(「读四」于(「加」于「日期格」于「一二」))于「二」);
        「加」于「出位」于「二」)
    或有「七七」则
      ((「写数位们」于(「加」于「出」于「出位」)于(「读四」于(「加」于「日期格」于「一六」))于「二」);
        「加」于「出位」于「二」)
    或有「八三」则
      ((「写数位们」于(「加」于「出」于「出位」)于(「读四」于(「加」于「日期格」于「二零」))于「二」);
        「加」于「出位」于「二」)
    或有「三七」则
      ((「写一」于(「加」于「出」于「出位」)于「三七」);
        「加」于「出位」于「一」)
    或有「其他」则
      ((「写一」于(「加」于「出」于「出位」)于「三七」);
        (「写一」于(「加」于「出」于(「加」于「出位」于「一」))于「下」);
        「加」于「出位」于「二」)
也。

「格式逐字」乃
  化「整数」而
  化「整数」而
  化「整数」而
  化「整数」而
  化「整数」而
  「整数」
也。
「格式逐字」者会「格式址」而会「格式长」而会「位」而会「出」而会「出位」而
  若「或者」于(「有符号大等」于「位」于「格式长」)于(「大于」于「出位」于「三三零」)则
    「出位」
  否则
    虑「字」者「读一」于(「加」于「格式址」于「位」)而
    若「且」于(「等」于「字」于「三七」)于(「小于」于(「加」于「位」于「一」)于「格式长」)
    则
      「格式逐字」
        于「格式址」
        于「格式长」
        于(「加」于「位」于「二」)
        于「出」
        于(「写日期项」于「出」于(「读一」于(「加」于「格式址」于(「加」于「位」于「一」)))于「出位」)
    否则
      ((「写一」于(「加」于「出」于「出位」)于「字」);
        「格式逐字」于「格式址」于「格式长」于(「加」于「位」于「一」)于「出」
          于(「加」于「出位」于「一」))
也。

「格式化日期原语」乃化「整数」而「整数」也。
「格式化日期原语」者会「参」而
  虑「格式」者「元组项」于「参」于「零」而
  虑「无」者(「空引用检」于「格式」)而
  虑「无」者「算日期」于「元」而
  虑「出」者「加」于「浮串缓冲」于「三五零」而
  虑「长」者
    「格式逐字」于(「字节数组址」于「格式」)于(「字节数组长」于「格式」)于「零」于「出」于「零」而
    虑「串」者「新字节数组」于「长」而
    虑「无」者(「拷贝」于(「加」于「串」于「一六」)于「出」于「长」)而
    「串」
也。

「字节序比较」乃
  化「整数」而
  化「整数」而
  化「整数」而
  化「整数」而
  化「整数」而
  「整数」
也。
「字节序比较」者会「址甲」而会「长甲」而会「址乙」而会「长乙」而会「位」而
  若「有符号大等」于「位」于「长甲」则(
    若「有符号大等」于「位」于「长乙」则「零」否则「负一」)
  否则
    (
      若「有符号大等」于「位」于「长乙」则「一」
      否则
        虑「甲字」者「读一」于(「加」于「址甲」于「位」)
        而
        虑「乙字」者「读一」于(「加」于「址乙」于「位」)
        而
        若「等」于「甲字」于「乙字」则
          「字节序比较」
            于「址甲」于「长甲」于「址乙」于「长乙」
            于(「加」于「位」于「一」)
        否则
          (若「小于」于「甲字」于「乙字」则「负一」否则「一」)
    )
也。

「字符串按字节在前原语」乃化「整数」而「整数」也。
「字符串按字节在前原语」者会「参」而
  虑「甲」者「元组项」于「参」于「零」而
  虑「乙」者「元组项」于「参」于「一」而
  虑「无」者(「空引用检」于「甲」)而
  虑「无」者(「空引用检」于「乙」)而
  「装箱整」于(「爻整」于(「小于」
    于(「字节序比较」
      于(「字节数组址」于「甲」)
      于(「字节数组长」于「甲」)
      于(「字节数组址」于「乙」)
      于(「字节数组长」于「乙」)于「零」)于「零」))
也。

「:文言:路径之杂项:可执行即普通文件;寻找可执行于 /bin 与 /程序;真实路径即规范之路径。汉语:路径类原语。路径可执行:是普通文件即真;查找可执行程序:名字含 / 就直接规范,否则依次试 /bin/名 与 /程序/名,返回(是否找到,绝对路径);取得真实路径:存在则返回规范绝对路径,不存在返回空串;路径为符号链接:恒假(文件系统没有符号链接)。:」
「路径存在吗」乃化「整数」而化「整数」而「爻」也。
「路径存在吗」者会「出」而会「长」而
  若「小于」于「长」于「零」则
    「阴」
  否则
    (若「小于」于(「索引查」于「出」于「长」)于「零」则「阴」否则「阳」)
也。

「候选是文件」乃化「整数」而化「整数」而「爻」也。
「候选是文件」者会「出」而会「长」而
  若「小于」于「长」于「零」则
    「阴」
  否则
    虑「项」者「索引查」于「出」于「长」而
    「且」于(「有符号大等」于「项」于「零」)于(「等」于(「项种类」于「项」)于「种类_文件」)
也。

「拼候选」乃化「整数」而化「整数」而化「整数」而「整数」也。
「拼候选」者会「前缀」而会「名」而会「缓」而
  虑「前长」者「零串长」于「前缀」而
  虑「无」者(「拷贝」于「缓」于「前缀」于「前长」)而
  虑「无」者
    (「拷贝」于(「加」于「缓」于「前长」)于(「字节数组址」于「名」)于(「字节数组长」于「名」))
  而
  「加」于「前长」于(「字节数组长」于「名」)
也。

「找可执行」乃化「整数」而化「整数」而「整数」也。
「找可执行」者会「名」而会「出」而
  虑「缓」者「加」于「浮串缓冲」于「四零零」而
  虑「含斜」者
    (
      递归虑「逐」其化「整数」而「爻」者会「位」而
        若「有符号大等」于「位」于(「字节数组长」于「名」)则
          「阴」
        否则
          (
            若「等」
              于(「读一」于(「加」于(「字节数组址」于「名」)于「位」))
              于「四七」则「阳」
            否则
              「逐」于(「加」于「位」于「一」)
          )
      而
      「逐」于「零」
    )
  而
  若「含斜」
  则
    虑「长」者「规范参数」于「名」于「出」而
    若「候选是文件」于「出」于「长」则「长」否则「负一」
  否则
    虑「长一」者「拼候选」于(「静态串」于『/bin/』)于「名」于「缓」而
    虑「规一」者「规范路径」于「缓」于「长一」于「出」而
    若「候选是文件」于「出」于「规一」则「规一」
    否则
      虑「长二」者「拼候选」于(「静态串」于『/程序/』)于「名」于「缓」
      而
      虑「规二」者「规范路径」于「缓」于「长二」于「出」
      而
      若「候选是文件」于「出」于「规二」则「规二」否则「负一」
也。

「路径可执行原语」乃化「整数」而「整数」也。
「路径可执行原语」者会「参」而
  「文件查询原语」于「三六」于「参」
也。

「查找可执行程序原语」乃化「整数」而「整数」也。
「查找可执行程序原语」者会「参」而
  虑「名」者「元组项」于「参」于「零」而
  虑「无」者(「空引用检」于「名」)而
  虑「出」者「读四」于「状态_文件系统_路径缓」而
  虑「长」者「找可执行」于「名」于「出」而
  虑「结果」者「新元组」于「二」而
  虑「无」者
    (「设元组项」于「结果」于「零」于(「装箱整」于(「爻整」于(「有符号大等」于「长」于「零」))))而
    虑「串」者
      「新字节数组」于(「选择」于(「有符号大等」于「长」于「零」)于「长」于「零」)而
      虑「无」者
        (若「有符号大等」于「长」于「零」则「拷贝」于(「加」于「串」于「一六」)于「出」于「长」否则「元」)
      而
      虑「无」者(「设元组项」于「结果」于「一」于「串」)而
      「结果」
也。

「取得真实路径原语」乃化「整数」而「整数」也。
「取得真实路径原语」者会「参」而
  虑「出」者「读四」于「状态_文件系统_路径缓」而
  虑「长」者「规范参数」于(「元组项」于「参」于「零」)于「出」而
  虑「在」者「路径存在吗」于「出」于「长」而
  虑「串」者「新字节数组」于(「选择」于「在」于「长」于「零」)而
  虑「无」者
    (若「在」则「拷贝」于(「加」于「串」于「一六」)于「出」于「长」否则「元」)
  而
  「串」
也。

「宿主数值调用」乃化「整数」而化「整数」而「整数」也。
「宿主数值调用」者会「号」而会「参」而
  鉴「号」而
    有「四九」则
      「浮点二元原语」于「号」于「参」
    或有「五零」则
      「浮点二元原语」于「号」于「参」
    或有「五一」则
      「浮点二元原语」于「号」于「参」
    或有「五二」则
      「浮点二元原语」于「号」于「参」
    或有「五三」则
      「小数转串原语」于「参」
    或有「五四」则
      「小数精确原语」于「参」
    或有「五五」则
      「小数转整数原语」于「参」
    或有「五六」则
      「整数转小数原语」于「参」
    或有「五七」则
      「字符串转小数原语」于「参」
    或有「五八」则
      「纳秒时间原语」于「元」
    或有「五九」则
      「日期串原语」于「元」
    或有「六零」则
      「格式化日期原语」于「参」
    或有「六一」则
      「路径可执行原语」于「参」
    或有「六二」则
      「查找可执行程序原语」于「参」
    或有「六三」则「装箱整」于「零」
    或有「六四」则
      「取得真实路径原语」于「参」
    或有「六五」则「装箱整」于「一」
    或有「六六」则
      「字符串按字节在前原语」于「参」
    或有「其他」则「装箱整」于「零」
也。