GNU工具链学习笔记
Compiler 编译器学习, 科技 专业 时间:10年3月8日20:43
1..so为动态链接库,.a为静态连接库。他们在Linux下按照ELF格式存储。ELF有四种文件类型。可重定位文件(Relocatable file,*.o,*.a),包含代码和数据,可用来连接成可执行文件或共享目标文件;可执行文件(Executable File),ELF可执行文件;共享目标文件(Shared Object File,*.so),包含代码和数据;核心转储文件(Core Dump File),进程意外终止时,系统将该进程的地址空间内容和其他信息保存到该文件中。
file命令可以查看。
2,Objdump程序,来自binutils,可以查看Object file内的结构。-h:打印各个段基本信息;-s所有段内容以16进制打印;-d:将所有包含指令的段反汇编。
3, ar -t libc.a;查看libc.a压缩了那些.o文件。
4, collect2 是ld连接器的包装,它调用ld链接目标文件,并对结果做处理,包括收集所有与程序初始化相关的信息并构造初始化结构。
5,readelf:查看ELF文件。 -s:打印符号信息; 阅读全文 »
大尾端(big endian)和小尾端(little endian)的问题类似于写字时是从右往左写还是从左往右写的问题。说起来不难,但是在计算机世界中,我们必须要规定采用哪种形式,而并无优劣之分,所以演变到现在,就既有大尾又有小尾.X86就是小尾的,龙芯也用的小尾,早期的MIPS使用的是大尾端,这决定了访存的方向问题。
精确的讲,大尾端和小尾端的区别是系统里整数是从右往左表示还是从左往右表示。表示的不同就意味着重要性不同的位位置不同,大尾端从左往右表示,那么权重大的字节在左边即在低地址处,而小尾端相反。不管时处理器,虚拟机还是网路协议都需要规定大小尾端问题。
如图是X86的存储形式,若大小尾端混用,则会一团糟。
好大一筐梅普斯(MIPS)
科技 专业 时间:10年2月25日21:17
本博在实际工作中,经常被MIPS I,MIPS II,MIPS 32之类的名词搞混,特整理如下。
MIPS 最初是Microprocessor without Interlocked Pipeline Stages的简称,最早由MIPS公司开发的精简指令集组成,最早是32位,之后时64位。该指令集有很多版本,包括MIPS I,MIPS II ,MIPS III, MIPS IV, MIPS V ,MIPS32和MIPS64.当前主要有MIPS32和MIPS64,这两个指令集定义了一个控制寄存器和指令集。
大学里多使用MIPS结构教学,Alpha就深受MIPS 精简指令集的影响。目前的MIPS之用用在很多嵌入式系统中如Windows CE设备,路由器,网关和游戏机(PS,PSP).
MIPS结构最早由斯坦福大学的John L. Hennessy(量化研究的作者)领导设计,初衷是充分利用指令流水线。除了采用流水线,以及充分利用流水线外,MIPS还引入了寄存器窗口技术(register windows),通过这种窗口,被调用函数能申请自己的寄存器集,再利用精确的编译器计算,就能找到空闲寄存器,不必依赖硬件实现。这种方式能提升性能。
目前的MIPS 32基于MIPS II并吸收了MIPS III, MIPS IV和MIPS V的特性,MIPS64则是基于MIPS V。MIPS V主要是用来提升3D图形应用的性能。
龙芯2E/F兼容 64位MIPS III指令系统,四发射。龙芯3号则是直接MIPS 64,也就是说增加3D加速。
参考:
http://en.wikipedia.org/wiki/MIPS_architecture
http://www.tektalk.org/2009/06/24/%E9%BE%99%E8%8A%AFcpu%EF%BC%8813%EF%BC%89%E2%80%93%E9%BE%99%E8%8A%AF%E8%8E%B7mips%E6%AD%A3%E5%BC%8F%E6%8E%88%E6%9D%83/
在家呆了十天,同学聚会,走亲戚,吃饭花了5天,排队买票花了1天。剩下的时间就陪爸妈。老爸买了三条红内裤,老爸,我和老弟各一条。
饭菜还是老妈做的最好吃,西红柿炒鸡蛋!家里的人越来越富了。国家级的贫困县都已经到处小楼林立了。路越来越窄,红绿灯依然没人遵守。
十天时间,累计碰电脑不超过四个小时,离开电脑大家都获得挺好,程序员们别太把自己当回事.没人管你什么双核三核,操作系统是啥,用了啥技术。我妈只想要一个鼠标,一个显示器,可以玩祖玛;我弟弟只需要一个qq可以和其他人聊天,我爸只需要一个网页可以看新闻。或者他们根本不需要这些,只需要能消磨时间,能和其他人聊天,能了解这个地球上还发生了什么。无论何时,我们只是附着在计算机上的,逼着别人花钱买的劳动力。衣食住行才是永恒的主题。但八成的中国人都还没有日常工作中使用电脑,电脑在七成国民的脑海里可能只和网瘾,低俗,病毒,网络游戏这些媒体们整天炒作的东西搅在一起。农业为主导的经济不会有电脑的用武之地,但万人村,城镇化则是我们的希望。等到只有小部分人面朝黄土背朝天,我们都40多岁时,翻身之日就到了。这一天会来,这一天的到来将体现我们的真正价值,虽然有点遥远。
阅读全文 »
美国计算机协会颁发的图灵奖是计算机界的诺贝尔,至今已有55位获奖者,奖品是碗一个。每年颁发一次,每次发一个碗,奖给曾在计算机领域具有持久而重大的技术创新的人。目前有英特尔和google赞助,奖金$250000,换算成人民币的话,都不够在中关村买一套70平米的两居90年代二手房,唉!

没有这些获奖者,就没有计算机科学的今天!不过这些获奖者如果在中国估计得一直为房发愁了,所以我们的房地产要走出国门,让其他国家的人们都专心买房,无心科研,这样国内拿碗的人就会出现了!
目前,仅有一个黄种人拿到此碗,他就是姚期智,美籍华人。因在伪随机数生成,密码学和通信复杂度等问题上的贡献而得奖,目前在清华领导成立理论计算机科学研究中心。
之所以写这篇文章,是因为读了孙天齐的系列文章中的部分(之所以是部分,因为作者没放出全部文章),强烈推荐阅读之。
计算机系统结构方向的顶尖会议
科技 专业 时间:10年2月3日12:51
注,这份表格并非本人整理,来自wwxu的邮件。
| 会议 | 会议全称 | 领域 | William & Mary 列表 -2008 | 新加坡国立 列表 -1999 | 复旦列表-2008 | 篇均引用次数 | 大陆发表情况 | 3年投稿意愿 | Abstract Deadline | Full Paper Deadline | Notification of decision |
| 1. ASPLOS | Architectural Support for Programming Languages and Operating Systems | 体系结构 操作系统 编译技术 | A+ | Rank1 | Rank1 | 39.1 | 1982年来尚未发表 | 是 | 2009-8-3 | 2009-8-10 | 2009-11-6 |
| 2. CGO | International Symposium on Code Generation and Optimization | 编译技术 | A | N/A | Rank2 | 4.4 | 2009 ICT 2篇;国内公司 3篇 | 是 | 2009-9-3 | 2009-9-10 | 2009-11-11 |
| 3. DAC | Design Automation Conference | 电路设计 体系机构 测试技术 | A | Rank1 | Rank1 | 8 | 1964年来发表9篇 | 是 | 2009-11-9 | ||
| 4. DATE | Design, Automation and Test in Europe | 电路设计 体系机构 测试技术 | A | Rank2 | Rank2 | 2.48 | 1993年,约20篇 | 是 | 2010-1-15 | ||
| 5. DSN | The 39th Annual IEEE/IFIP International Conference on Dependable Systems and Networks | 可靠设计 体系机构 软件系统 | A+ | N/A | Rank2 | 9.51 | 1970年5-6篇 | 是 | 2009-10-8 | ||
| 6. FSE | International Symposium on Foundations of Software Engineering | 软件工程 | A | Rank1 | Rank1 | 10 | 08港科技06港科技2港城市1篇 | 是 | 2009-11-9 | 2010-1-6 | |
| 7. HPCA | International Symposium on High-Performance Computer Architecture | 体系结构 | A+ | Rank1 | Rank1 | 15.7 | 1995年来发表1篇 | 是 | 2009-7-24 | 2009-7-31 | 2009-10-10 |
| 8. ICCAD | International Conference on Computer-Aided Design | 电路设计 测试技术 | A | Rank1 | N/A | 9 | 1990年来发表6篇 | 是 | 2009-5-11 | ||
| 9. ICDCS | IEEE Intl Conf on Distributed Comp Systems | 分布式系统 | A | Rank2 | Rank2 | 8.8 | 1981年来发表6篇 | 是 | 2009-11-25 | 2010-2-8 | |
| 10. ICS | The International Conference on Supercomputing | 高性能计算 | A | Rank1 | Rank2 | 9 | 1987年来4篇 | 是 | 2010-1-11 | 2010-1-18 | 2010-3-22 |
| 11. ISCA | International Symposium on Computer Architecture | 体系结构 | A+ | Rank1 | Rank1 | 25.7 | 1973年来发表5篇 | 是 | 2009-7-10 | 2010-1-15 | 2010-2-15 |
| 12. ISLPED | International Symposium on Low Power Electrical Design | 低功耗体系结构 | N/A | N/A | N/A | 2010-3-5 | 2010-4-30 | ||||
| 13. ITC | International Test Conference | 测试技术 | A | N/A | N/A | 2.86 | 1970年,9篇 | 是 | 2010-3-17 | 2010-6-22 | |
| 14. MICRO | International Symposium on Microarchitecture | 体系结构 | A+ | Rank1 | Rank1 | 15.3 | 1968年来发表9篇,1995年后尚未发表 | 是 | 2009-5-15 | 2009-5-22 | 2009-7-28 |
| 15. NSDI | Symposium on Networked Systems, Design and Implementation | A | N/A | Rank1 | 13.5 | 2004年来尚未发表 | 是 | 2009-9-25 | 2009-10-2 | 2009-12-18 | |
| 16. OOPSLA | Conference on Object Oriented Programming Systems Languages and Applications | 编译技术 | A+ | Rank1 | Rank1 | 11.6 | 2007 香港; 2006 香港 | 是 | 2009-3-19 | 2009-3-23 | |
| 17. OSDI | Usenix Symposium on Operating Systems Design and Implementation | 操作系统 | A+ | Rank1 | Rank1 | 66.3 | 1994年来尚未发表(2008第二作者) | 是 | 2010-3-7 | 2010-7-20 | |
| 18. PACT | IEEE Intl Conf on Parallel Architectures and Compilation Techniques | 并行计算 | A | Rank1 | Rank2 | 7.1 | 1997年来2篇 | 是 | 2010-3-20 | 2010-3-27 | |
| 19. PLDI | Conference on Programming Language Design and Implementation | 编译技术 | A+ | Rank1 | Rank1 | 38 | 08,07 清华2篇,05 ,04 Intel China 2篇,92 台湾 | 是 | 2009-11-13 | 2009-11-20 | 2010-2-2 |
| 20. PODC | ACM Symp on Principles of Distributed Computing | 分布式系统 | A+ | Rank1 | Rank1 | 11.9 | 1982年以来尚未发表 | 是 | 2010-2-10 | 2010-2-17 | 2010-4-15 |
| 21. POPL | Annual Symposium on Principles of Programming Languages | 编译技术 | A+ | Rank1 | Rank1 | 35.7 | 无 | 未定 | 2009-7-8 | 2009-7-15 | 2009-10-1 |
| 22. PPOPP | ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming | 高性能计算 | A | Rank1 | Rank1 | 18.7 | 1988年来3篇 | 是 | 2009-7-17 | 2009-7-20 | 2009-9-18 |
| 23. RTSS | The Real Time Systems Symposium | 实时系统 | A+ | Rank1 | Rank1 | 11.75 | 1979,5-6篇,香港比较多 | 是 | 2009-5-26 | ||
| 24. SAS | IEEE Static Analysis Symposium | 编译技术 | A | Rank2 | N/A | 8 | 07北大 | 是 | 2010-3-12 | 2010-3-19 | 2010-5-4 |
| 25. SC | The International Conference for High Performance Computing, Networking, Storage and Analysis | 高性能计算 | N/A | N/A | Rank2 | 8.6 | 1988年来1篇 | 是 | 2009-4-3 | 2009-4-6 | 2009-6-29 |
| 26. SIGMETRICS | Joint International Conference on Measurement and Modeling of Computer Systems | 性能度量 | A+ | Rank1 | Rank1 | 13 | 1973年来发表2篇 | 是 | 2009-11-2 | 2009-11-9 | 2010-2-9 |
| 27. SOSP | ACM SIGOPS Symp on OS Principles | 操作系统 | A+ | Rank1 | Rank1 | 55.6 | 1967年来尚未发表 | 是 | 2009-3-2 | 2009-3-7 | 2009-6-15 |
| 28. SPAA | ACM Symposium on Parallel Algorithms and Architectures | 并行计算 | A | Rank1 | Rank3 | 9.5 | 1989年来1篇 | 是 | 2010-1-13 | 2010-3-12 | |
| 29. VTS | VLSI Test Symposium | 测试技术 | A | N/A | N/A | 2.89 | 1983年,6篇 | 是 | 2009-9-20 | 2009-9-30 | 2009-12-4 |
| 30. WWW | International World Wide Web Conference | 网络 | A+ | Rank 1 | Rank 1 | 10.2 | 是 | 2009-10-26 | 2009-11-2 | 2010-1-21 |
如果SourceForge.net沦为政治工具?
网络 linux gentoo 时间:10年1月26日8:55
WebKit和Firefox的JavaScript性能对比
科技 专业, 网络 linux gentoo 时间:10年1月22日22:37
严格的说WebKit仅仅是个浏览器核心,采用该核心的浏览器很多,如国内的搜狗浏览器,遨游浏览器。其他的如google的chrome(Windows平台,linux平台下为chromium),epiphany(linux平台下,gnome2.28版本之后),苹果的Safari 都采用了webkit的内核。Firefox则是采用Gecko的内核,这是NetScape公司开发的内核,后来开源,mozilla继续开发。另外,现在还有另外两种常见的浏览器内核,Trident主要用在IE系列上,Presto主要用在Opera上。
这篇文章仅仅针对浏览器处理JavaScript的性能作比较,主要在X86平台和龙芯平台。先来解释一下JavaScript,JavaScript是互联网内较为常用的脚本语言,面向对象,主要在浏览器内解释执行,用于生成动态网页,因为很多语言特性受Java影响,所以叫JavaScript。通过JavaScript,浏览器可以运行服务器想要在访问者终端上运行的一些计算程序,以达到更好的浏览体验。 阅读全文 »
标签: firefox, gcc, JIT, nanojit, TraceMonkey, WebKit, 运行时技术, 龙芯
小例子–回眸一笑百媚生
Compiler 编译器学习, 科技 专业 时间:10年1月21日19:32
这两天在折腾小例子,用来表现对语言做某种扩展后将可更高效的编程。我那蹩脚的coding技术捉襟见肘。一个小例子要言简意赅,写在半页ppt里,要有对比,有突出,又要很直观。尝试了很多次。写小例子很能考察编程能力,指针,静态,数组,寄存器变量,各个类型长度等等。要达到瞄一眼就能印象深刻,被震撼的感觉,难!
眼见为实,看下面的小例子,简单的写个循环:
ip (short int* fb, short int* bb,short int* res)
{
int i=0;
for (; i< 8; i++)
res[i] = fb[i] + bb[i]+1;
}
在龙芯上用simd(单指令多数据,一条指令可以存多个数据)来实现的话,需要这么写,别忘了包含loongson.h头文件,这段代码在gcc4.3之后才支持: 阅读全文 »