Archive

Archive for the ‘编译’ Category

2015开源开发工具大会(aka. HelloGCC 2015)

October 25th, 2015 No comments

转自: http://www.hellogcc.org/?p=34190

【大会简介】
2015开源开发工具大会是由HelloGCC(www.hellogcc.org)工作组举办的年度开源技术大会。我们希望通过自由,开放,共享的方式来增进大家相互的交流。目前话题主要涉及开源工具链,开源开发工具方面。感谢演讲者为我们贡献精彩的话题 ,感谢各单位和朋友对我们的赞助和支持,欢迎大家免费报名参加。
往年活动:
*) HelloGCC Workshop 2014: http://www.hellogcc.org/?p=33910
*) HelloGCC Workshop 2013: http://www.hellogcc.org/?p=33518
*) HelloGCC Workshop 2012: http://linux.chinaunix.net/hellogcc2012
*) HelloGCC Workshop 2011: http://linux.chinaunix.net/hellogcc2011
*) HelloGCC Workshop 2010: http://linux.chinaunix.net/hellogcc2010
*) HelloGCC Workshop 2009: https://sites.google.com/site/hellogccworkshop/hui-yi-ri-cheng

【日程安排】

2015年11月21日(周六)中国科学院计算技术研究所
14:00 – 14:30 入场、签到
14:30 – 15:30 Clang内部实现,邢明杰
15:30 – 16:30 SDCC,史斌
16:30 – 17:00 自由讨论

题目:Clang内部实现
演讲者:邢明杰
简介:基于clang-3.5.0版本的代码,介绍下clang(http://clang.llvm.org/)的总体架构和各模块的实现,主要包括:驱动器(Driver),前端(Frontend),核心库(Lex,Parser,Sema,AST)。

题目: Introduction to SDCC – A light-weight cross-compile tool-chain targetting 8-bit MCUs
演讲者:史斌
简介: SDCC is a retargettable, optimizing ANSI – C compiler suite that targets the Intel MCS51 based microprocessors (8031, 8032, 8051, 8052, etc.), Maxim (formerly Dallas) DS80C390 variants, Freescale (formerly Motorola) HC08 based (hc08, s08), Zilog Z80 based MCUs (z80, z180, gbz80, Rabbit 2000/3000, Rabbit 3000A, TLCS-90) and STMicroelectronics STM8. Work is in progress on supporting the Microchip PIC16 and PIC18 targets. It can be retargeted for other microprocessors. It includes sdcpp (the preprocessor), sdcc (the compiler), sdas (the assembler), sdld (the linker), ucsim (the simlulator), and a lots of other useful components.

Ben Shi works for a private company as a technical manager. He joined SDCC community in Nov 2013 for filling his spare time, and has made 130+ commits since then, invloving bug fixes in the front end and assembly optimization for the STM8 back end. He will brief introduce SDCC features and his work on it.

【大会地址】

中国科学院计算技术研究所,北京海淀区中关村科学院南路6号(大门在中关村南三街)

http://www.hellogcc.org/?p=34190

【赞助单位】

场地支持 http://www.ict.ac.cn

开源开发工具大会2015话题和赞助征集

June 27th, 2015 No comments

原文链接 http://www.hellogcc.org/?p=34145

*************************************************************************
话题和赞助征集

开源开发工具大会2015
中国 北京
2015年9月xx日(暂定)
HelloGCC工作组 (www.hellogcc.org)
************************************************************************

开源开发工具大会(原HelloGCC技术讨论会)是开源软件开发者的大会,您可以在这里分享自己在开源软件方面的开发工作,研究成果,经验学习。我们的话题主要面向开源开发工具。

话题内容可以为:
* GNU工具链(gcc,gdb,binutils等)
* LLVM等其它开源编译器
* 其它开源开发、调试、模拟工具

话题形式可以为:
* 对自己工作的介绍
* 对已有工作的介绍
* 教程,经验等
* 其它形式,比如闪电演讲

如果您有相关话题,欢迎和我们联系:
* 发送邮件到 hellogcc@freelists.org (需要先订阅:http://www.freelists.org/list/hellogcc)
* 登陆freenode IRC #hellogcc房间

重要日期:
* 话题征集截止日期:2015年8月1日

往届会议:
* OSDT 2014: http://www.hellogcc.org/?p=33910
* HelloGCC 2013: http://www.hellogcc.org/?p=33518
* HelloGCC 2012: http://linux.chinaunix.net/hellogcc2012
* HelloGCC 2011: http://linux.chinaunix.net/hellogcc2011
* HelloGCC 2010: http://linux.chinaunix.net/hellogcc2010
* HelloGCC 2009: http://www.aka-kernel.org/news/hellogcc/index.html

如果贵公司有意提供赞助,欢迎和我们联系 hellogcc.workgroup@gmail.com。

从头写一个JIT?从这篇文章开始吧 :-)

June 15th, 2013 No comments

http://blog.reverberate.org/2012/12/hello-jit-world-joy-of-simple-jits.html

JIT非常的复杂——我学了好多年都没有学会 🙂 ——但是如果你想象一下最简单的JIT是什么样子, 那么它其实就是一个printf语句而已. 根据一些输入, 打印一些二进制的字符串到内存, 恰好这个内存是可执行的, 事就这样成了. 作为Demo, 作者在这篇文章中为 Brainf_ck 这种异类的语言实现了一个简单的JIT.

Multicore JIT in .NET 4.5

October 28th, 2012 No comments

前不久微软推出了 .NET 4.5,其中包含了一个 Multicore JIT。

这个Multicore JIT的目标是减少应用程序的启动时间,提高启动速度。根据相关的介绍,.NET程序在运行时需要先从平台无关的字节码翻译到本地码,这个过程就依赖JIT。如此JIT的运行时间就包含在了应用程序的启动时间内了。为了提高应用程序的启动时间,微软的做法是将JIT从主线程中拆出来,放在一个单独的线程中。在目前的多核平台上,这一个单独的线程可以和主线程并行的执行,减少用户的等待时间。

但是这样会遇到一个问题:一般情况下JIT是在程序的函数即将被执行的时候进行翻译的,这样就会导致主线程执行一个函数时,需要等待JIT进行即时编译,效果上跟把JIT放在主线程中没有什么区别。为了使JIT线程在翻译的时候主线程不至于停顿,就需要JIT能够提前判断接下来要执行的函数并进行编译。JIT不是神仙,能够未卜先知,于是微软给出来一个Profile-based的方案:启用Multicore JIT之前,首先要对应用程序进行Profiling,记录下程序在启动时调用的函数(代码)序列,并保存在文件中。下次应用程序启动的时候,Multicore JIT从Profile中读取函数调用序列并提前进行翻译。

理论上Multicore JIT最大能够缩短50%的启动时间,如果Profile信息和当前程序运行的情况是相同的话。最坏情况是Profile跟应用程序的当前执行情况完全不懂,那么可能就反而有降速了。

为什么只有一个JIT线程?用两个JIT线程会不会将启动速度缩短到原来的三分之一?我想,大概是因为以下的几个原因:

  • .NET环境中还有别的线程执行,应用程序本身也可能是多线程的,JIT能够使用的空闲核心不会太多;
  • 有不少的运行环境还是双核平台的,两个JIT线程不会增加速度;
  • 多个JIT线程会导致更多的并发数据访问和线程上下文切换开销,性能反而可能会下降;
  • 多个JIT线程开发难度更大,非确定性的bug会让调试的人发疯。

另外,看相关的文档,似乎微软的.NET环境中,应用程序只会被JIT一次,而不是像JVM(如Oracle HotSpot)一样有多个JIT编译器可以对一个函数生成多种不同的本地码。

以下是微软开发人员关于Multicore JIT的访谈视频,中间的是Multicore JIT程序经理Dan Taylor,右边是.NET性能架构师(Performance Architect)Vance Morrison,左边是Windows软件工程师Rick Brewster。Dan和Vance介绍Multicore JIT原理和初心,Rick现身说法用了Multicore JIT之后他开发的大型.NET桌面程序启动时间上的改进。

LLVM 3.0 发布

December 16th, 2011 No comments