豫言源码浏览器 / Source Browser

浏览项目文件与源码

yuyan · 256 行 · 16963 字节 · UTF-8
§
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「字节串」之书。
寻观「编译器核心」之「网页汇编核心」之「二进制生成」之书。
寻观「裸机后端」之「机器编码」之书。
寻观「裸机后端」之「马赫格式写出」之书。

「:文言:验头与诸命令之字段,并成样例:书“豫言操作系统”一行,以退出码七终。书写与退出皆由 libSystem 之 _write、_exit,其址由 dyld 填于数据段。汉语:核对 Mach-O 文件头与加载命令的字段;另生成样例可执行文件,在 macOS 上实际运行:调用 libSystem 的 _write 写一行“豫言操作系统”,再以 _exit(7) 结束。两个函数的地址由 dyld 按绑定信息填进数据段的指针槽。:」

「读小端」乃化「字节串」而化「整数」而化「整数」而「整数」也。
「读小端」者会「字」而会「始」而会「宽」而
  若「等于」于「宽」于「零」则
    「零」
  否则
    「加」
      于(「字节串取字节」于「字」于「始」)
      于(「乘」于「二五六」于(「读小端」于「字」于(「加」于「始」于「一」)于(「减」于「宽」于「一」)))
也。

「马赫验数」乃
  化「字符串」而
  化「字节串」而
  化「整数」而
  化「整数」而
  化「整数」而
  「有」
也。
「马赫验数」者会「名」而会「字」而会「始」而会「宽」而会「期」而
  虑「实」者「读小端」于「字」于「始」于「宽」而
  若「等于」于「实」于「期」则
    「元」
  否则
    「发生事故」于(『马赫格式字段不符:』附「名」附『,得 』附(「整数操作」之「表示」于「实」))
也。

「四字节们」乃化(「列」于「整数」)而「字节串」也。
「四字节们」者会「码们」而
  「网页拼字节」于(「态射」授以「整数」授以「字节串」于「码们」于(会「码」而「小端字节」于「四」于「码」))
也。

「样例消息」乃「字节串」也。
「样例消息」者「字符串转字节串」于『豫言操作系统
』也。

「零页四吉」乃「整数」也。
「零页四吉」者「四二九四九六七二九六」也。

「:文言:取址之令:ldr x16,以相对之偏读数据段之槽。汉语:LDR x16, [PC + 偏移](字面量寻址),读取数据段中的导入指针槽。:」
「读槽指令」乃化「整数」而化「整数」而「整数」也。
「读槽指令」者会「指令址」而会「槽址」而
  「加」
    于「一四七六三九五零零八」
    于(「加」于(「乘」于(「除以」于(「减」于「槽址」于「指令址」)于「四」)于「三二」)于「一六」)
也。

「:文言:臂之相对样:x0 一,adr x1 消息,x2 长,经槽调 _write;x0 七,经槽调 _exit。汉语:arm64 位置无关样例:mov x0,#1;adr x1,消息;mov x2,#长;ldr x16,[_write 槽];blr x16;mov x0,#7;ldr x16,[_exit 槽];blr x16;其后是消息。:」
「臂相对样例代码」乃化「整数」而「字节串」也。
「臂相对样例代码」者会「零页」而
  虑「码址」者「马赫代码虚址」于「零页」而
  虑「据址」者
    「马赫数据虚址」于「零页」于(「加」于「三二」于(「字节串长度」于「样例消息」))
  而
  「拼接字节串」
    于(「四字节们」
      于(「列」【
        「三五三一六零四零零零」,
        「二六八四三五六八一」,
        「加」于「三五三一六零三九七零」于(「乘」于(「字节串长度」于「样例消息」)于「三二」),
        「读槽指令」于(「加」于「码址」于「一二」)于「据址」,
        「三五九四四五三五零四」,
        「三五三一六零四一九二」,
        「读槽指令」于(「加」于「码址」于「二四」)于(「加」于「据址」于「八」),
        「三五九四四五三五零四」
      】))
      于「样例消息」
也。

「:文言:以 movz、movk 四令置六十四位之数于 x1。汉语:用 movz 与三条 movk 把 64 位立即数装入 x1。:」
「臂装址」乃化「整数」而(「列」于「整数」)也。
「臂装址」者会「数」而
  虑「零段」者「整数余数」于「数」于「六五五三六」而
  虑「一段」者
    「整数余数」于(「除以」于「数」于「六五五三六」)于「六五五三六」而
    虑「二段」者
      「整数余数」于(「除以」于「数」于「四二九四九六七二九六」)于「六五五三六」而
      虑「三段」者「除以」于「数」于「二八一四七四九七六七一零六五六」而
      「列」【
        「加」于「三五三一六零三九六九」于(「乘」于「零段」于「三二」),
        「加」于「四零七零五七二零三三」于(「乘」于「一段」于「三二」),
        「加」于「四零七二六六九一八五」于(「乘」于「二段」于「三二」),
        「加」于「四零七四七六六三三七」于(「乘」于「三段」于「三二」)
      】
也。

「:文言:臂之绝对样:消息之址以绝对之数置之。若映像不在所定之址,则书不成而退出码犹七。汉语:arm64 绝对地址样例:消息地址用 movz/movk 以绝对值装入 x1。若内核未按文件中的虚址装载(映像被滑动),_write 得到无效地址而不输出,退出码仍为 7;据此判断固定地址是否生效。:」
「臂绝对样例代码」乃化「整数」而「字节串」也。
「臂绝对样例代码」者会「零页」而
  虑「码址」者「马赫代码虚址」于「零页」而
  虑「据址」者
    「马赫数据虚址」于「零页」于(「加」于「四四」于(「字节串长度」于「样例消息」))
  而
  「拼接字节串」
    于(「四字节们」
      于(「列」【
        「三五三一六零四零零零」,
        「第N个」授以「整数」
          于「零」
          于(「臂装址」于(「加」于「码址」于「四四」)),
          「第N个」授以「整数」
            于「一」
            于(「臂装址」于(「加」于「码址」于「四四」)),
            「第N个」授以「整数」
              于「二」
              于(「臂装址」于(「加」于「码址」于「四四」)),
              「第N个」授以「整数」
                于「三」
                于(「臂装址」于(「加」于「码址」于「四四」)),
                「加」
                  于「三五三一六零三九七零」
                  于(「乘」于(「字节串长度」于「样例消息」)于「三二」),
                  「读槽指令」于(「加」于「码址」于「二四」)于「据址」,
                  「三五九四四五三五零四」,
                  「三五三一六零四一九二」,
                  「读槽指令」
                    于(「加」于「码址」于「三六」)
                    于(「加」于「据址」于「八」),
                    「三五九四四五三五零四」
      】))
      于「样例消息」
也。

「:文言:兼之样:先推 rbp 以齐栈,edi 一,lea rsi 消息,edx 长,经槽调 _write;edi 七,经槽调 _exit。汉语:x86-64 样例:push rbp(使栈 16 字节对齐);mov edi,1;lea rsi,[rip+消息];mov edx,长;call [rip+_write 槽];mov edi,7;call [rip+_exit 槽];其后是消息。:」
「兼样例代码」乃化「整数」而「字节串」也。
「兼样例代码」者会「零页」而
  虑「码址」者「马赫代码虚址」于「零页」而
  虑「据址」者
    「马赫数据虚址」于「零页」于(「加」于「三五」于(「字节串长度」于「样例消息」))
  而
  「网页拼字节」于(「列」【
    「单字节串」于「八五」,
    「单字节串」于「一九一」,
    「小端字节」于「四」于「一」,
    「单字节串」于「七二」,
    「单字节串」于「一四一」,
    「单字节串」于「五三」,
    「小端字节」于「四」于「二二」,
    「单字节串」于「一八六」,
    「小端字节」于「四」于(「字节串长度」于「样例消息」),
    「单字节串」于「二五五」,
    「单字节串」于「二一」,
    「小端字节」于「四」于(「减」于「据址」于(「加」于「码址」于「二四」)),
    「单字节串」于「一九一」,
    「小端字节」于「四」于「七」,
    「单字节串」于「二五五」,
    「单字节串」于「二一」,
    「小端字节」于「四」于(「减」于(「加」于「据址」于「八」)于(「加」于「码址」于「三五」)),
    「样例消息」
  】)
也。

「样例导入」乃(「列」于(「字符串」合「整数」))也。
「样例导入」者「列」【『_write』与「零」,『_exit』与「八」】也。

「样例可执行」乃化「爻」而化「爻」而化「整数」而化「字节串」而「字节串」也。
「样例可执行」者会「臂」而会「位置无关」而会「零页」而会「代码」而
  「生成马赫可执行」
    于「臂」
    于「位置无关」
    于「零页」
    于「代码」
    于「零」
    于(「零字节」于「一六」)
    于「一六」
    于「样例导入」
    于『yuyan.sample』
也。

「臂样」乃「字节串」也。
「臂样」者「样例可执行」于「阳」于「阳」于「零页四吉」于(「臂相对样例代码」于「零页四吉」)也。

「:文言:非位置无关,零页四吉。汉语:非位置无关(无 MH_PIE),零页 4 GiB:检验内核是否按文件虚址装载。:」
「臂固定样」乃「字节串」也。
「臂固定样」者「样例可执行」于「阳」于「阴」于「零页四吉」于(「臂绝对样例代码」于「零页四吉」)也。

「:文言:非位置无关,零页一吉,文本起于 0x40000000。汉语:非位置无关,零页 1 GiB,__TEXT 从 0x40000000 开始:检验能否使用低于 4 GiB 的固定地址。:」
「臂低址样」乃「字节串」也。
「臂低址样」者
  「样例可执行」于「阳」于「阴」于「一零七三七四一八二四」于(「臂绝对样例代码」于「一零七三七四一八二四」)
也。

「兼样」乃「字节串」也。
「兼样」者「样例可执行」于「阴」于「阳」于「零页四吉」于(「兼样例代码」于「零页四吉」)也。

「:文言:头:魔数、臂之机器类、可执行之类、命令十三、命令之长七百七十六、标。汉语:文件头:魔数 0xFEEDFACF、CPU 类型(arm64 为 0x0100000C,x86-64 为 0x01000007)、MH_EXECUTE、13 条命令、命令总长 776、标志(位置无关为 0x200085,否则 0x85)。:」
「马赫验数」于『魔数』于「臂样」于「零」于「四」于「四二七七零零九一零三」。
「马赫验数」于『臂类型』于「臂样」于「四」于「四」于「一六七七七二二八」。
「马赫验数」于『兼类型』于「兼样」于「四」于「四」于「一六七七七二二三」。
「马赫验数」于『兼子类型』于「兼样」于「八」于「四」于「三」。
「马赫验数」于『文件类型』于「臂样」于「一二」于「四」于「二」。
「马赫验数」于『命令数』于「臂样」于「一六」于「四」于「一三」。
「马赫验数」于『命令长』于「臂样」于「二零」于「四」于「七七六」。
「马赫验数」于『位置无关标志』于「臂样」于「二四」于「四」于「二零九七二八五」。
「马赫验数」于『固定标志』于「臂固定样」于「二四」于「四」于「一三三」。
「:文言:零页之段:虚址零,长四吉。汉语:__PAGEZERO:命令 0x19,虚址 0,内存长 4 GiB,无文件内容,无权限。:」
「马赫验数」于『零页命令』于「臂样」于「三二」于「四」于「二五」。
「马赫验数」于『零页长』于「臂样」于「六四」于「八」于「四二九四九六七二九六」。
「马赫验数」于『零页权限』于「臂样」于「八八」于「四」于「零」。
「马赫验数」于『低址零页长』于「臂低址样」于「六四」于「八」于「一零七三七四一八二四」。
「:文言:文本之段:起于四吉,长一万六千三百八十四,可读可执行;其节起于一千二十四。汉语:__TEXT:命令长 152(含一节),虚址 4 GiB,文件偏移 0,长 16384,权限读+执行;__text 节地址为 4 GiB + 1024,文件偏移 1024。:」
「马赫验数」于『文本命令长』于「臂样」于「一零八」于「四」于「一五二」。
「马赫验数」于『文本虚址』于「臂样」于「一二八」于「八」于「四二九四九六七二九六」。
「马赫验数」于『文本长』于「臂样」于「一三六」于「八」于「一六三八四」。
「马赫验数」于『文本文件偏移』于「臂样」于「一四四」于「八」于「零」。
「马赫验数」于『文本权限』于「臂样」于「一六零」于「四」于「五」。
「马赫验数」于『代码节址』于「臂样」于「二零八」于「八」于「四二九四九六八三二零」。
「马赫验数」于『代码节长』于「臂样」于「二一六」于「八」于「五一」。
「马赫验数」于『代码节偏移』于「臂样」于「二二四」于「四」于「一零二四」。
「:文言:数据之段:续于文本之后,偏移一万六千三百八十四。汉语:__DATA:虚址 4 GiB + 16384,文件偏移 16384,权限读+写。:」
「马赫验数」于『数据虚址』于「臂样」于「二八零」于「八」于「四二九四九八三六八零」。
「马赫验数」于『数据文件偏移』于「臂样」于「二九六」于「八」于「一六三八四」。
「马赫验数」于『数据权限』于「臂样」于「三一二」于「四」于「三」。
「:文言:诸命令之末为签名,其偏之后即文件之尾。汉语:最后一条命令是 LC_CODE_SIGNATURE(命令长共 776,终于偏移 808);签名偏移加签名长等于文件总长。:」
「马赫验数」于『签名命令』于「臂样」于「七九二」于「四」于「二九」。
「马赫验数」
  于『文件总长』
  于(「小端字节」于「八」于(「字节串长度」于「臂样」))
  于「零」
  于「八」
  于(「加」于(「读小端」于「臂样」于「八零零」于「四」)于(「读小端」于「臂样」于「八零四」于「四」))。
    「:文言:签名之首为超块之魔数,大端。汉语:签名以 SuperBlob 魔数 0xFADE0CC0(大端)开头,其后第 20 字节起为 CodeDirectory 魔数 0xFADE0C02。:」
「马赫验数」
  于『超块魔数』
  于「臂样」
  于(「读小端」于「臂样」于「八零零」于「四」)
  于「四」
  于「三二二二零六八九八六」。
「马赫验数」
  于『代码目录魔数』
  于「臂样」
  于(「加」于(「读小端」于「臂样」于「八零零」于「四」)于「二零」)
  于「四」
  于「三四三九七九四六」。
    「:文言:代码居其偏。汉语:代码的第一条指令位于文件偏移 1024。:」
「马赫验数」于『代码首字』于「臂样」于「一零二四」于「四」于「三五三一六零四零零零」。

「:文言:书诸样例于工作目录。汉语:写出样例文件,供 macOS 上运行验证(x86-64 样例需在 Intel Mac 上运行)。:」
「写臂样」乃「有」也。
「写臂样」者「文件系统」之「写文件字节串」于『yy马赫样例臂』于「臂样」也。

「写臂固定样」乃「有」也。
「写臂固定样」者「文件系统」之「写文件字节串」于『yy马赫样例臂固定』于「臂固定样」也。

「写臂低址样」乃「有」也。
「写臂低址样」者「文件系统」之「写文件字节串」于『yy马赫样例臂低址』于「臂低址样」也。

「写兼样」乃「有」也。
「写兼样」者「文件系统」之「写文件字节串」于『yy马赫样例兼』于「兼样」也。