很多时候,可能需要替换已有库函数,或者对其库函数进行修改。
为了避免对那些静态链接库或者动态链接库文件大动干戈,我们可以使用ld提供的–wrap选项。

Continue reading »

 

什么是静态链接库?

静态链接库,即static library或 statically-linked library。和动态链接库,即dynamic library 或dynamicly-linked library相对,是Windows和Linux系统中比较常用的库文件。Windows中分别用SLL和DLL文件表示,Linux中分别是.a和.so文件.

静态链接库实际是一些object files(.o文件)和头文件的压缩包,通过GNU工具链中的ar(archiver)程序创建。

静态链接库、动态链接库和共享库

那为何还要有动态链接库呢?静态练级库虽然能很好的节省编译时间。对于一个简单的ls程序,我们需要有屏幕输出,有字符串和格式操作,有文件系统访问等等函数,都要在一个程序中。此时,这个程序会很大。一个小小的ls可能都会有好几兆。如果还有个rm程序,同样也需要屏幕输出,文件系统访问。那么这两个东西,我们可以放到两个库文件里,在执行ls,或者rm的时候,用到屏幕输出操作,就将相应的函数对应的机器码载入内存中,执行。然后再从内存中释放。接着载入文件系统访问的相关函数。这样我们的程序就能变小很多。这种可以动态装载到内存中的库文件就是动态链接库了。Windows下的DLL文件就是动态链接库。

Continue reading »

 

LLVM2.7已经发布好几天了。今天尝试一下:)

1,下载相关源码包:

wget -c http://llvm.org/releases/2.7/llvm-2.7.tgz
wget -c http://llvm.org/releases/2.7/clang-2.7.tgz
wget -c http://llvm.org/releases/2.7/llvm-gcc-4.2-2.7.source.tgz
wget -c http://llvm.org/releases/2.7/llvm-test-2.7.tgz

llvm-2.7.tgz是LLVM的主要源码包,clang-2.7.tgz:Clang前端,llvm-gcc-4.2-2.7.source.tgz:GCC4.2前端,llvm-test-2.7.tgz:LLVM 测试验证包。
Continue reading »

 

因为之前的两篇博文前瞻-全时优化和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都能从这里找到。

Continue reading »

 

2010年美国高校计算机系排行榜出炉–《U.S. News》公布了新一期美国大学计算机系实力排名。前四:卡内基-梅隆大学(CMU)、麻省理工学院(MIT)、斯坦福大学(Stanford U)和加州大学伯克利分校(UC Berkely).

前四名具体排名


Continue reading »

 

最近想折腾用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 Continue reading »
 

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:打印符号信息;
Continue reading »

 

emerge一个软件包时Portage的工作方式:
1,Portage下载源码tar包和补丁(如果需要的话)
2,Portage解压缩tar包到指定位置,所有的编译将在该目录展开,Portage默认使用/var/tmp/portage/packagename/work
3,解压和打补丁(如果需要的话)后(ebuild中的src_unpack()函数),Portage开始编译,一般情况下在特定目录(ebuild使用${WORKDIR}变量指定目录)下执行configure和make命令.
4,编译完成后,portage将所有指定目录下的文件合并到正在运行的系统中.(通常为/,但通过合并时设置ROOT=”/路径”可以修改),为了避免非法或不正确的ebuild对整个文件系统造成不可逆的破坏,我们需要严格限制文件系统的哪个区域允许portage在解压和编译时修改,这就是沙盘工作的路径,默认时,沙盘启动,并限定ebuild(和它执行过程中的明林)都在指定的区域内写磁盘.若ebuild越过沙盘保护的环境,试图在外部区域写磁盘,就构成了沙盘越界.
Continue reading »

 

注,这份表格并非本人整理,来自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

 

这两天在折腾小例子,用来表现对语言做某种扩展后将可更高效的编程。我那蹩脚的coding技术捉襟见肘。一个小例子要言简意赅,写在半页ppt里,要有对比,有突出,又要很直观。尝试了很多次。写小例子很能考察编程能力,指针,静态,数组,寄存器变量,各个类型长度等等。要达到瞄一眼就能印象深刻,被震撼的感觉,难!

眼见为实,看下面的小例子,简单的写个循环:

[code lang="cpp"]
ip (short int* fb, short int* bb,short int* res)
{
int i=0;
for (; i< 8; i++)
res[i] = fb[i] + bb[i]+1;
}[/code]

在龙芯上用simd(单指令多数据,一条指令可以存多个数据)来实现的话,需要这么写,别忘了包含loongson.h头文件,这段代码在gcc4.3之后才支持: Continue reading »

2009-2011© 编译点滴 Suffusion theme by Sayontan Sinha

无觅相关文章插件,快速提升流量