标签归档:x86

期待未来-一张趣图

先看图 图片来自《科学松鼠会》,很棒的探索新知的网站:) 生物信息学里把DNA序列看成生物体的操作系统,这张图左侧是大肠杆菌的控制网络,右侧是Linux系统的。

发表在 编译前沿, 编译技术 | 标签为 , , , , , , , , , | 6 条评论

前瞻-LLVM大事记(2004-2010)

因为之前的两篇博文前瞻-全时优化和LLVM-1和前瞻-全时优化和LLVM-2都是基于Chris Lattner 2004年发表在CGO的文章写的。所以需要介绍一下LLVM从2004到2010这六年的变化,LLVM的开发社区很活跃。 从2004年三月到2010年4月,LLVM共发布了1.2-1.9,2.0-2.7,16个版本,至少每年发布两个版本。详细的历史发布版本和release都能从这里找到。

发表在 LLVM, 编译前沿, 编译技术 | 标签为 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | 6 条评论

前瞻-全时优化和LLVM-2

上篇文章,以论文为主要依据,介绍了LLVM的概况和中间表示,本篇关注论文的后半部分内容–架构设计和LLVM的整体评测: LLVM的架构设计: 总览 LLVM的架构设计以让传统的链接时,安装时,运行时和空闲时代码转换都能透明地在LLVM中间表示上展开为目的。上图就是LLVM的高层设计架构。包括静态的编译器前端用于生成LLVM中间表示;连接器用于做连接时优化,尤其是过程间优化。连接器的输出被JIT或者机器代码生成器生成机器代码。在机器代码生成时,可以通过插入低代价的抽样指令来测量运行时的profile,检测热代码,并将空闲时进行优化。

发表在 LLVM, 编译前沿, 编译技术, 编译理论实践和应用 | 标签为 , , , , , , , , , , , , , , , , | 3 条评论

来仔细看看GCC 4.5.0

距离GCC 4.4的发布一年之久,GNU终于发布GCC 4.5了。新版本带来了很多新特性,包括使用MPC库在编译时完成复杂的算术计算,C++0x支持增强,使用部分Graphite完成自动并行化,支持新的ARM处理器,Intel Atom优化和调优支持,以及AMD Orochi优化支持等。今年稍晚发布的Fedora 14,Ubuntu 10.10,OpenSUSE 11.3,都将有GCC4.5,估计Gentoo马上就会有支持了,磨拳擦掌准备试用喽:)详细支持如下: 总体说明: 编译GCC需要MPC库 故纸堆里的旧系统和很久没有更新和测试的系统在GCC4.5中被标记为待放弃,包括IRIX, Solaris 7, Tru64 UNIX V5.1. GCC4.4中标记为待放弃的支持被放弃 移除Itanium 1变种支持,但Itanium2编译的程序能在Itanium1上正确执行 GCC生成的调试信息包括了更多DWARF 3的特性,甚至包含了DWARF4的一些特性.GDB7.0之前的版本将无法使用这些特性.所以调试GCC4.5编译的程序需要使用GDB7.0及以上版本.也可以使用选项 -gdwarf-s  -gstrict-dwarf来禁止生成DWARF4信息,或者-gdwarf-2 -gstrict-dwarf让GCC严格执行DWARF2标准. X86上,浮点运算在GCC4.5上使用严格C99语法编译时,可能会运行变慢。这是为了和标准一致,可以通过选项-fexcess-precision=fast来避免严格的标准限制。 noinline属性不再能阻止整个函数拷贝。但可以通过新的属性noclone做到。

发表在 GCC, 编译技术 | 标签为 , , , , , , , , , , , , , , , | 9 条评论

Gentoo上安装Texlive2009

最近想折腾用texlive写点东西,而且要支持中文。就冲着texlive-2009了。大学毕业论文就是用latex写的,不过那是在Windoews下,用CTEX包,很是方便,Gentoo就有点不一样了。虽然texlive有自己的iso镜像,有自己的安装工具和包管理工具,但Gentoo还是将它拆分成了很多的packge来装。这样也好,比较灵活。 下面就开始吧。 首先是keywords和use,因为现在2009还不稳定,而我用的是x86就要增加一堆的keyword,如下: app-text/texlive ~x86 app-text/texlive-core ~x86 dev-texlive/texlive-documentation-english ~x86 dev-texlive/texlive-documentation-base ~x86 dev-texlive/texlive-basic ~x86 dev-texlive/texlive-bibtexextra ~x86 dev-texlive/texlive-context ~x86

发表在 编译技术 | 标签为 , , , , , , , , , , , | 留下评论

大尾端和小尾端

大尾端(big endian)和小尾端(little endian)的问题类似于写字时是从右往左写还是从左往右写的问题。说起来不难,但是在计算机世界中,我们必须要规定采用哪种形式,而并无优劣之分,所以演变到现在,就既有大尾又有小尾.X86就是小尾的,龙芯也用的小尾,早期的MIPS使用的是大尾端,这决定了访存的方向问题。 精确的讲,大尾端和小尾端的区别是系统里整数是从右往左表示还是从左往右表示。表示的不同就意味着重要性不同的位位置不同,大尾端从左往右表示,那么权重大的字节在左边即在低地址处,而小尾端相反。不管时处理器,虚拟机还是网路协议都需要规定大小尾端问题。 如图是X86的存储形式,若大小尾端混用,则会一团糟。

发表在 编译技术 | 标签为 , , , , , , , | 4 条评论