第118章 大杀器(1 / 4)
愿你在这里,遇见真正值得阅读的故事。
⚡ 自动翻页
开启后阅读到底自动进入下一章
⚡ 开启自动翻页
读到章尾自动进入下一章,阅读更连贯。
真正挡在mps-kernel前面的,不是某一段晦涩难懂的代码,而是不可阻挡的数学规律。
状態空间爆炸。
第八年,江临果断在代码库中按下刪除键,將枚举指令序列这条传统的暴力穷举旧路线抹除。
搜索的核心对象,被他从具体的代码改成了抽象的语义等价类。
不再让生成器像个傻子一样去枚举每一种可能的寄存器分配或指令顺序。
而是引入等价图,也就是e-graph式的表示方法,再叠加规范化哈希、对称归约和支配关係剪枝。
在同一组数学输入输出语义下,那些能够被证明只差在寄存器命名、无依赖指令重排、冗余中间量或局部等价重写上的候选序列,会被摺叠到同一个状態节点里。
生成器吐出的不再是一行行c代码或汇编。
而是一张巨大的状態图。
每一个节点,不再代表一段具体代码,而代表一组输入输出语义相同、並且已经被规范化的中间状態。
每一条边,才真正对应著一次实质性的,可落地的底层原语变换或机器指令变换。
搜索空间,在废土的第八年,第一次被从物理意义上狠狠压了下来。
第十一年,为了进一步对抗时间的消耗,江临在系统底层加入了证据缓存机制。
过去,每一次搜索遇到相似的结构,系统都要重新调用z3求解器去证明一次。
现在,所有被验证过的等价状態,其证明过程会被序列化后永久存储。 ↑↑