|
|
|
f*****Q 发帖数: 1912 | 4 还不是gcc上GPL v3整的,不然早放弃了。LLVM基本上也是因为GPLv3所以才那么多人折
腾。 |
|
|
|
z****g 发帖数: 339 | 7 Mac OS X 背后的故事(二)——Linus Torvalds的短视
http://www.programmer.com.cn/6617/
文/王越
《Mac OS X背后的故事》系列文章将为大家介绍Mac OS X的发行版本、技术历史、相关
人物等内容。本文是系列连载的第二篇,主要的故事来源是Linus Torvalds的自传《
Just for Fun: The Story of an Accidental Revolutionary》。
Steve Jobs对Mac OS X的考虑
1997年,Steve Jobs回归,开发下一代操作系统的工作被提上日程。此刻的时代背景是
像Linux这样的开源软件大行其道。随着网络的发展,使得像Red Hat、VA Linux之类的
企业成为爆发户,把泡沫越吹越大。Steve Jobs承认Linux的好处,甚至在若干年后介
绍Mac OS X底层的Darwin时还不忘在幻灯片上写道:Darwin是类似Linux的系统。而当
时精明的Steve Job在考虑下面几个问题。
第一,NeXTSTEP的内核和外围工具中,BSD代码维护起来需要大量人... 阅读全帖 |
|
S*A 发帖数: 7142 | 8 front end is just C parsing and turn into internal IR.
The parsing itself is pretty complicate but the rules are actually
not very hard to understand.
The back end is where the interesting stuff happening.
If you just want to study how real compiler works. LLVM
is a much better start. The project is much cleaner compare
to gcc. |
|
|
f*****Q 发帖数: 1912 | 10 不好意思。pd跟sd没走脑子,又丢人了。gcc的autovect好像至少应该在4.1还是4.2的
时候就有了吧?俺记得好像要给SSE/SSE2的参数就行。
另外这个循环没有被优化掉俺很诧异。俺试了试llvm,啥都没了,直接返回。 |
|
f*****Q 发帖数: 1912 | 11 现在llvm之类的编译器可以把递归优化得很好。 |
|
f*****Q 发帖数: 1912 | 12 LLVM编译的结果(带优化)
int f(unsigned int x)
{
return ((x>>31)||((0-x)>>31));
//*(2*(x>>31) + 1);
}
define i32 @f(i32 %x) nounwind readnone {
entry:
ret i32 1
}
嘿嘿。 |
|
y***d 发帖数: 2330 | 13 怎么这 bug 都一样的?哦,好像 llvm 也是用的 gcc |
|
y*******g 发帖数: 6599 | 14 新版xcode用llvm的编译器,号称multi-Pass
对c++的支持的确比以前用gcc的时候好了很多 |
|
y*******g 发帖数: 6599 | 15 xcode用的是llvm ,语义分析至少给我的感觉比gcc好多了
, |
|
r*********r 发帖数: 3195 | 16 llvm 只是 gcc 的一部分,有什么可比性。 |
|
y*******g 发帖数: 6599 | 17 没什么好说的了
现在libcxx都是用llvm自己从新写的 |
|
|
|
|
n*****3 发帖数: 1584 | 21 alloca is gcc ONLY ba,
LLVM might not have it. |
|
t****a 发帖数: 1212 | 22 这几天板上又开始吵语言,干脆把这个顶起吧
另外求教lisp/clojure和haskell的区别。我现在主攻clojure/emacs lisp,但总是听
说haskell多么好多么好。有两种语言都熟练的朋友替我科普一下他们的长处短处么?
我自己的想法...
haskell的库不够,而且没有jvm/llvm之类支持;clojure是动态的,速度比haskell差
得多,但天生有java library support,又可以code as data自己写macro瞎搞 |
|
|
c***r 发帖数: 4631 | 24 LLVM吧第一个整成一个memset就完事了。
pushq %rax
.Ltmp2:
xorl %esi, %esi
movl $8388608, %edx # imm = 0x800000
callq memset
popq %rax
ret
第二个叽叽咕咕折腾半天。
为什么呢? |
|
t****t 发帖数: 6806 | 25 没用过llvm, 两年前好象是没有graphite的, 现在不知道有没有. gcc肯定有.
这是gcc -S -O2 -floop-interchange的结果, 你可以看到两个一模一样. 我用的gcc 4
.7.2, 但是4.4就有了.
.globl _Z10zeroarray1Pd
.type _Z10zeroarray1Pd, @function
_Z10zeroarray1Pd:
.LFB0:
.cfi_startproc
leaq 8388608(%rdi), %rdx
.p2align 4,,10
.p2align 3
.L2:
leaq 8192(%rdi), %rax
.p2align 4,,10
.p2align 3
.L3:
movq $0, (%rdi)
addq $8, %rdi
cmpq %rax, %rdi
jne .L3
cmpq %rdi, %rdx
jne .L2
r... 阅读全帖 |
|
y*******g 发帖数: 6599 | 26 IDE和编译器完全不一样啊
看你从哪一步开始写,全部重写基本上要写死吧。
用llvm自己写一个能work的c应该不太难。 实现最新各种标准就不知道了。 |
|
m********5 发帖数: 17667 | 27 对于网络应用我不懂的,业余玩儿玩儿, 这里说错了大家轻拍.
不就因为它们是plugin, 用户体验不好 (无休止的系统几升级下载安装请求), 所以越
来越多的人才倾向于无plugin的应用么. 其实JS真心烂啊, 要不是可以用别的语言编译
过去, 我估计绝大多数人愁得要死. google的多VM提议被webkit拒绝了, 理由是说其实
可以编译为JS.
我觉得为何不能直接在browser中用LLVM呢? 这个又快, 又是现成的, 对源码也可有相
当的保护.
frameworks。 |
|
A*******t 发帖数: 443 | 28 随着LLVM做得越来越好,这种把java byte code当intermediate representation的潮
流变得越来越没有必要了。
scala的悲剧告诉我们:哪怕设计者再具匠心,扔给他 JVM 這個烂摊子,他也就很难有
所发挥了…… |
|
n******t 发帖数: 4406 | 29 不过一般来说C++写出来的程序的api就是不如C的稳定。
现在有好多C++项目都只维持稳定的C api。
比如说so far最牛B的C++项目llvm就是这么干的。 |
|
|
|
t*****n 发帖数: 4908 | 32 Emscripten是把LLVM bitcode编译成JavaScript,然后在JavaScript虚拟机里运行。所
以效率应该不差。至于是否能到native的级别,有待观察。 |
|
r*g 发帖数: 3159 | 33 Dap 的潜在市场是不是跟Julia 一样?Julia 也用llvm jit. 你能不能做做Julia 主页
的benchmark,跟它比一比? |
|
n******t 发帖数: 4406 | 34 编译器是OK的。参见llvm.
说白了,你care compiler 内存泄露么?你care compiler I/O占用么?
compiler用通信么? |
|
s********k 发帖数: 6180 | 35 GCC里面的关于pointer dereference的strict aliasing被linus骂的狗血淋头,后来怎
么样了?(LLVM里面应该没有这个限制) |
|
|
z********0 发帖数: 9013 | 37 LLVM has TBAA and -O3 enables -fstrict-aliasing |
|
k**********g 发帖数: 989 | 38
咳咳咳咳。。。
言归正传。
其实 C++ 做 Image Processing 也快没戏了。
未来几年的大趋势是 Image processing engineer 给数学式,编译器直接生成各种
CPU Architecture 优化的底层代码。输出格式任君选择,可以是plain C、LLVM、
native CPU assembly。
例子有 CMU 的 SPIRAL ,
MIT 的 HALIDE
http://www.spiral.net/
http://people.csail.mit.edu/jrk/halide12/
两个项目好像都已经有龙头企业靠山
未毕业的同学们,尤其是PhD,别忽略了 Compiler 。 |
|
t*****s 发帖数: 416 | 39
我已经说过了。跨盘片情况按照同盘片处理实测依然是优化的。Linux的stock算法也是
按照这个假设来的。
RAID的情况我得回去看LLVM是在I/O调度上层还是下层如果是上层的话一样是不影响的
。 |
|