编译步骤/代码生成/网页汇编邻接消除。豫
yuyan · 59 行 · 3376 字节 · UTF-8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
寻观「标准库」之书。
寻观「编译器核心」之「编译步骤」之「求值正则变换」之「统一正则数据」之书。
寻观「编译器核心」之「编译步骤」之「代码生成」之「网页汇编私有构造」之书。
寻观「编译器核心」之「网页汇编核心」之「回收模块」之书。
「:文言:唯单用非参之槽,邻接存取乃省。汉语:使用 ANF 单次使用证明,排除形参;调用者仅提供可优化的实际槽名。不得用于复制后的区域。只删相邻的一存一取且同槽者,自左而右一遍,删后新成之邻接不复回看;超过 128 个局部值时保留原指令。:」
「消邻接搬运」乃
化「正则函数」而
化(化「整数」而「字符串」)而
化「回收串」而
「回收串」
也。
「消邻接搬运」者会「函」而会「槽名」而会「原」而
若「大于」于(「函」中「四」)于「一二八」则
「原」
否则
虑「计」者「私形用数」于「函」
而
虑「可槽」者
「滤」授以「字符串」
于(会「槽」而「非」于(「串相等」于「槽」于『』))
于(「态射」授以「整数」授以「字符串」
于(「滤」授以「整数」
于(会「号」而「且」
于(「等于」于(「读数组引用」授以「整数」于「计」于「号」)于「一」)
于(「全部符合」授以「整数」于(会「参」而「非」于(「等于」于「参」于「号」))于(「函」中「二」)))
于(「整数范围」于「零」于(「函」中「四」)))于「槽名」)而
鉴「可槽」而
有「罄」则「原」
或有「有槽」则
虑「可删」者
(化「字符串」而「爻」也会「名」而「存在吗」授以「字符串」
于(会「候」而「串相等」于「候」于「名」)于「可槽」
)
而
递归虑「扫」其化(「列」于「回收指令」)而化(「列」于「回收指令」)而(「列」于「回收指令」)者会「余」而会
「积」而
鉴「余」而
有「罄」则「反转」于「积」
或有(「缀」于「头」于「尾」)则
虑「跳」者
(「或可有」于(「列」于「回收指令」)也鉴「余」而
有(「缀」于(「回收局部存」于「槽」)于(「缀」于(「回收局部取」于「再槽」)于「后」))则
若「且」
于(「串相等」于「槽」于「再槽」)
于(「可删」于「槽」)则
「可有」于「后」
否则
「可无」
或有「其他」则「可无」)
而
鉴「跳」而
有(「可有」于「后」)则
「扫」于「后」于「积」
或有「可无」则
「扫」于「尾」于(「缀」于「头」于「积」)
而
「回收令列」于(「扫」于(「回收展平」于「原」)于「罄」)
也。