1,翻译源码,​​x*2为x<<1​​,​​内联函数​​.

2,选指应生成:

    SETC AL
MOVZ EAX,AL
//或:
SBB EAX
NEG EAX

3,优化分析​​数据流​​,如:​​传播常量,消除死码,分配寄存器,循环不变量​

这是​​比较容易提升​​的.不久前,我改进了​​BT​​指令用法.实现​​猜​​语句,固定整除用乘​​倒数​​实现.

乔金:​​dmd​​的后端与那些具有​​纪念意义的后端​​的差距在​​30%​​以内,这一点令人印象深刻.

​dmd​​后端是​​d​​写的​​后端​​.搞好它是​​很有意义​​的.

​llvm​​通过识别越来越多模式,来提升优化.

​W.B​​:​​32​​位代码生成器做了很多​​push/pop​​,但64位​​代码生成器​​做的要少得多,因为大部分时间都是在​​寄存器​​中​​传递函数​​参数.

​dmd​​也做了一堆模式.我只是寻找一些​​显着影响结果​​的方法.​​Codegen​​始终有最高优先级.

回归测试的​​原因​​是为了确保​​固定​​的东西保持固定,因害怕引入​​新错误而瘫痪​​并不是任何项目的前进方向.​​ddmd​​后端为​​d​​也会帮助我们.

​DMC++​​总是带​​改变​​构建并测试来复制自身.这过滤掉大量问题.但​​DMC++​​是​​32位​​的,​​ddmd​​会修复它.

在每个版本中分离出新​​dmd​​分支,可在​​必要时​​修补.

​dmd​​也配置优化,如用​​-profile​​运行,产生​​trace.def​​文件,可提供给​​控制可执行文件中函数布局​​的链接器.组织布局,以便​​强连接​​函数驻留在​​同一页面​​中,从而​​最大限度地减少交换​​并​​提高缓存命中率​​.​​参考在此​

净赚​​0.5%​​是​​很值得​​的.会重复运行​​数据流分析优化器​​,寄存器​​分配器​​也重复运行.​​每次优化​​都会暴露出更多可能性.

​成本启发式​​已用于​​内联程序​​(它在前端,在​​'inline.d'​​中).其也用于​​寄存器分配器​​.

但它用​​成本函数​​并重复运行,直到不再需要​​内联​​.

我叫它​​聚集体的水平切片​​.​​dmd​​可大量受益,也不难实现.大量用​​区间​​,因而​​优化​​它更重要.净赚不止​​0.5%​​.

​dmd​​不展开循环,​​dmd​​可完整分析​​数据流​​,包括​​消除​​死代码和死存储,仍然生成的​​死存储​​是个问题.

​PGO​​很好,但人们很懒.因而只想​​-O​​,就优化了.

成本函数是模糊的,但它往往工作得很好.

确实,如果生成​​exe​​,编译器可标记​​叶类​​为​​final​​并去​​虚拟​​化.(当然,你可手动添加"​​final​​"到类中.)

通过​​协同消除关键任务组件​​的歧义,优化器​​可利用核心能力​​的蓝天杠杆来产生​​超级​​能力,来最大限度地利用资源.

人们告诉我我不会编写​​C​​编译器,然后告诉我我不会编写​​C++​​编译器.我仍然是​​唯一实现​​过完整​​C++​​编译器​​(C++98)​​的人.然后他们都(​​100%)​​嘲笑我开始使用​​D​​,说​​没有人​​会使用它.

我的​​整个职业生涯​​都是​​建立​​在超越那些​​告诉我我无能为力并且一事无成的人之上​​的.

​LLVM​​是一个很好的编译器,但它没什么​​神奇之处​​.

此外,我们有一个​​LLVM​​没有的秘密提高生产力的武器–​​D​​!

写​​ARM​​后端不难.其比​​X86​​简单多了.多数工作是​​删除​​一半的​​X86​​的代码生成器.

有时,增加更多的人力只会使进度变慢.

​64​​位​​x86​​的主要问题是​​它无限混乱的非正交性​​.​​Win64​​移植很糟糕,因为他们发明了​​奇怪的调用约定​​.

我知道它​​应该​​是先进技术,但它​​非常简单​​.只需​​查找​​仅在​​寄存器边界​​上访问的​​聚合实例​​,并且不获取地址.然后分割它们为​​单独寄存器​​大小变量,并重新运行优化器.瞧!

亚当:大约十年来,​​dmc​​在​​功能,编译速度,代码优化和稳定性​​方面的努力都超过了大公司.但​​dmc​​让了它们​​15​​年.

我不认为从​​另一种语言​​生成​​JS​​有多大意义.你不能做任何比​​JS​​能做的更多的事情,而且你很可能做的更少.

已经在用​​产品​​的更有兴趣,他们只是暂时不用.

H.S.Z:是的,很好地为​​现有客户​​服务,他们会为你宣传,从而​​吸引​​更多客户.转移精力去​​取悦​​非客户,希望能赢得他们,你最终可能会赶走​​你拥有​​的客户.

​苹果​​曾一度获得赛门铁克​​C++​​的许可.我有时想知道它对​​clang​​有什么影响.

多年来,许多人不相信我可以自己创建​​C++​​编译器,他们很快就相信我无所不能.​​拒绝查看其他编译器​​对此有很大帮助.

我仍然是唯一一个​​从前到后​​创建过​​C++​​编译器的人.​​:-)​​.当然,​​DMC++​​是​​C++​​98编译器,​​C++​​已经向前发展了.

编写一个​​C++​​编译器需要​​10​​年的时间,许多公司认为购买编译器更实际.​​EDG​​授权给​​intel​​.