LLVM 3.1 延迟发布,编译器架构
jopen 12年前
<p><span class="postbody"><a href="/misc/goto?guid=4958202556373490960" target="_blank">LLVM</a>从本质上来说,它不是一个编译器.它是一个编译器的架构.通俗的来说,它实现了一个库,在这个库上,可以很容易的实现不同的编译相关的程序,当然,编译器自然是其中最重要的一个. 当然其他像编译时间的代码分析也是很容易实现的。 </span></p> <p><span class="postbody">LLVM定义了一个虚拟机的语言。然后再这个语言的基础上,实现了很多的功能,例如大多数的优化都是基于这个虚拟机的语言来进行的。(这是和GCC很大的 不同,我想也是delphij提到的更好的优化的原因.) 你可以这么理解,LLVM就是建立了很多个积木块,写编译器就是搭积木。 </span></p> <p><span class="postbody">LLVM-GCC就是一个积木块,它把C代码编译成LLVM的语言。 </span></p> <p><span class="postbody">LLVM-GCC 模块 => LLVM CODE <br /> -> optimize <br /> -> xxxx 不同的积木块 <br /> x86代码生成模块binary <= </span></p> <p><span class="postbody">这样,我们写两个积木就实现了一个编译器。如果要不同的平台,我们换最后那个。不同的语言,我们换第一个。 </span></p> <p><span class="postbody"><br /> </span></p> <p><span style="font-weight:bold;">原计划在5月14日要发布的 LLVM 3.1 主要更新版本</span>,已经悄悄地延后,目前原因不详。</p> <p>LLVM 3.1 是一个主要的更新版本,包含一个新的 <a href="/misc/goto?guid=4958340837700461631" rel="external" target="_blank">AddressSanitizer</a> 工具用于检测内存错误以及一个 ARM 集成汇编工具,另外该版本还提升了机器码的性能,完整的功能特性可从 <a href="/misc/goto?guid=4958340838764956562" rel="external" target="_blank">preliminary release notes</a> 这里了解到。</p> <p><span class="postbody"><br /> </span></p>