工作地点:北京海淀区科学院南路6号,中国科学院计算技术研究所
单位网站:www.ict.ac.cn
部门:计算机系统结构重点实验室

岗位职责: 从事C/C++/Fortran优化编译器的开发与调试
具体包括:
1. 编译优化的设计和开发
2. 面向异构多核的编译系统的设计和开发

岗位要求:
1. 计算机相关专业本科以上学历,对计算机系统结构有深入理解者优先。
2. 熟悉C/C++编程,熟悉Linux操作系统者优先。
3. 熟悉GCC/Open64/LLVM编译器者优先, 有编译相关工作经验者优先。
4. 熟悉一种或多种脚本语言优先。
5. 同时接受校招与社招。

其他要求:
1. 做事认真负责,具有强烈的责任心。
2. 具有团队意识,较强的沟通能力。
3. 有敬业和钻研技术的精神。
4. 有较强的英文阅读和写作能力。

有意者请将简历以附件形式发送至 lianruiqi@ict.ac.cn,邮件主题:(姓名)应聘编译开发职位。
符合职位要求者单位会电话通知尽快安排面试。

附:计算所&&计算所机体系结构实验室简介

中国科学院计算技术研究所是中国第一个专门从事计算机科学技术综合性研究的学术机构。在这里工作或学习过的院士有二十余位,先后获得国家、院、市、部级重大科技奖励194项。曙光高性能计算机和龙芯通用处理器均在这里诞生。

计算机体系结构实验室是我国在计算机体系结构方面唯一的一个国家重点实验室。实验室主要研究方向:高端计算体系结构;微处理器与VLSI;编译和操作系统;测试与容错;非传统体系结构。

发展目标:建设一支高水平、跨学科、结构合理的研究队伍,将学术骨干培养成为所在研究领域中享有国际声誉的科学家,在国际上代表国内最高水平,建立计算机体系结构领域国际一流的科学研究、技术创新和人才培养的基地。

计算所体系结构实验室链接:http://carch.ict.ac.cn/introduction/brief/brief.html

 

现在虽说卖硬件的比不上卖软件的,卖软件的比不上卖服务的。但软件仍然是服务的基石。
而且不管是软件、硬件、还是服务,背后都是一行行的代码,以及基于这些代码所形成的软件功能、硬件系统、技术人员的经验等等。
这些代码有的用C/C++、Java、C#写,有的用PHP、JavaScript、Ruby写,有的用Verilog写。 Continue reading »

 

一晃一年又过去了,这一年总体是充实、有压力、有成长的一年。2011不再回来了,所以用了永别。 Continue reading »

 

接触过内核的朋友肯定在源码中看到许多.S文件,这些文件中基本都是汇编。
这些文件是干什么的,为什么要这么写? Continue reading »

 

最近调程序,出现illegal instruction问题,没有头绪。 索性把illegal instruction好好窥探一下。 Continue reading »

 

start_kernel is the first function that kernel runs, like the main function in user space program.
In this post, I will try to get a detailed understand of how start_kernel is called on X86_64 and MIPS architecture. Continue reading »

 

SOURCE: https://jobs.qualcomm.com/public/jobDetails.xhtml?requisitionId=1887529&page=jobSearch

Division Qualcomm CDMA Technology
Job Area Engineering – Software
Location California – San Diego
Job Function The JIT compiler and Virtual Machines team in the Web Technologies group at Qualcomm Innovation Center focuses on development and optimization of software virtual machines (both interpreter and JIT compiler based), for languages like Java, JavaScript, Action Script, etc, commonly used in Web Browsers, for Qualcomms various MSM platforms. This role requires the following essential duties and responsibilities:

  • Research, design, develop, enhance, and implement the different components of the software in a virtual machine by efficiently utilizing/interfacing the HW in Qualcomms SOCs, leading to optimized performance, power, memory usage, and user experience.
  • Collaborate with chipset architecture and hardware engineers, and come up with software solutions best suited for Qualcomms SOCs.
  • Develop and execute benchmark and test scenarios for the virtual machines based on the different use-cases in a web browser.
  • Work with Product and Systems teams to understand and improve the design and working of the software involved in the virtual machines.
  • Analyze and identify system level integration issues, interface with the browser integration and test teams.
  • Follow Qualcomms open source design practices
  • Keep up with the web technology landscape (HTML5, CSS, JavaScript, etc) and help drive design aspects of Qualcomm CDMA Technology’s (QCT) chipsets necessary for supporting these technologies
  • Plan and integrate new features into the software for virtual machines based on open web standards such as W3C and the language standards (e.g. ECMA for JavaScript).
Skills/Experience
  • Experience in compiler development – compiler intermediate representations, machine independent and machine dependent optimizations, instruction selection, scheduling, register-allocation, back-end optimizations.
  • Working knowledge of Operating System concepts, process/thread, memory management, garbage collection algorithms, threads scheduling.
  • Working knowledge of assemblers, linkers, loaders, object file formats, instruction set simulators and experience using them.
  • Knowledge of the structure & function of the virtual machine internals byte-code formats, heap, constant pool resolution, garbage collection, execution mechanisms, etc.
  • Understanding of the compilation challenges and potential solutions for languages like Java (e.g., dynamic dispatch, polymorphism, inline caching) and JavaScript (e.g., dynamic types, dynamic addition/deletion of properties/values to objects, prototype based inheritance).
  • Knowledge of computer architectures – pipeline structure & hazards, cache & memory organization, etc.
  • Knowledge of the software architecture and internals of a web browser, JavaScript to Webkit bindings, JavaScript engines interaction with DOM and Plugins.
  • Strong background in embedded software development, experience in assembly language programming and optimization.
  • 5 to 10 years of programming experience in C/C++.
  • Should have exposure to large scale software build, integration and test environments
  • Strong communication and interpersonal skills required
Responsibilities
  • Knowledge and experience in Android or Chrome OS mobile platforms.
  • ARM architecture knowledge and assembly code optimization experience.
  • Experience with scripting languages used in build systems and hands-on experience on debugging embedded systems.
  • Experience with JTAG and ICE debuggers
Education Requirements Masters degree in Computer Science, Computer Engineering or related field, with experience in the technical domain. PhD degree and research work in the related technical area also encouraged. Candidates close to graduating with Masters or PhD in Computer Science/Engineering with project experience in the technical area can also apply.
 

Compiler Software Engineer:
Responsibilities:
• Design and develop next generation graphical language representations and then examine the compilation, optimization, and scheduling of those representations when mapped to highly parallel computing platforms such as FPGAs and many-core processor architectures.
• Explore state-of-the-art technology in compiler as well as system level design
• Carrying out and managing each step in software life cycle – requirements analysis, designing, coding, and testing.
• Writing product documents for end users in English.
• Taking on short-term training in the United States for product development

Requirements:
• M.S. or above in computer science, electrical engineering, or related majors
• Development methodology including object-oriented analysis and design, data structures
• Experience in high-level programming languages (C/C++)
• In-depth knowledge of compiler optimization design

Prefer knowledge and experience
• Experience in hardware description language such as VHDL
• General system level synthesis and optimization methodology
• High-level synthesis from fairly high-level languages (e.g. C/C+ +/ SystemC) into RTL for FPGAs

有兴趣的同学可以把中英文简历发送给我们:china.jobs@ni.com

或者直接发送给 ying.yu2  __AT__ ni.com

http://ni.com/china

 

写这篇文章,是为了纠正上篇关于编译技术职业发展的帖子中自己的观点可能带来的误导。
尽量让面临硕士、博士选方向的学弟学妹了解编译知识在未来计算机技术职业生涯中的重要性,以及光明的未来方向。
Continue reading »

 

报名网址:http://linux.chinaunix.net/hellogcc2011

2011年9月24日(周六)下午

【演讲主题】

1、Introduction to GCC Backend

演讲者:刘佳

拿一个简单而具体的例子介绍了GCC的工作流程,尤其GCC后端的工作流程。主要介绍了gcc是怎么处理rtl模版从而生成代码的。最后通过LLVM的后端对比一下异同。

2、GNU Tools for ARM Embedded Processors

演讲者:叶锦云

简介: 作为维护和改进GCC上ARM架构的工作的一部分,ARM将维护一个GCC工具链的分支,特别针对嵌入式内核,如ARM Cortex-R/Cortex-M系列。此外,ARM将定期的从这个分支上构建、测试并发布二进制包。发布的包可以任意的整合到工具链中,或直接使用。 这个话题将主要介绍ARM建议的工作模式和计划改进GCC的要点。您将了解到更多关于GCC在嵌入式方面的应用及挑战。并期待听到您独特的见解。

3、多核时代更快断点 — Displaced stepping以及对Thumb-2指令集的实现

演讲者:齐尧

简介: 多核处理器逐渐成为主流,一些传统的调试技术无法适应新的编程方式(比如多线程编程)。如何实现一种对多线程程序更加快速的断点机制进入的调试器开发人员 的视野,而displaced stepping也就应运而生。本文介绍了displaced stepping的工作原理和实现方式。结合ARM Thumb-2指令集,讲述了如何为一种新的指令支持displaced stepping。同时还介绍了基于displaced stepping的GDB non-stop工作模式。最后,会对今后的多线程调试或者多核处理器调试做一个展望。本文会帮助读者理解displaced stepping的机制和移植工作,也为读者从GDB的内部剖析了non-stop工作模式。

4、TCG与LLVM生成二进制代码性能分析

演讲者:徐国伟

简介: 现在很多模拟器采用了LLVM作为二进制翻译的后端,相对于解释执行的模式,得到了巨大的性能提升,而且由于LLVM的多平台性,通用性可以做的很好。本 文基于Skyeye和Qemu两种模拟器,给出了Benchmark程序在用户态模拟下的TCG和LLVM生成的宿主机代码与x86本地编译的代码性能对 比。

5、走进GCC插件时代

演讲者:邢明杰

简介:GCC从4.5开始支持插件,使得开发者可以使用插件技术来扩展编译器功能,一时间也出现了一些第三方插件。插件技术的引入,是否意味着 GCC又进入了一个新的时代,它又会带来哪些问题?本话题介绍了GCC 插件技术的原理,实现,以及现有一些第三方插件;同时,也和大家分享一些插件技术背后的故事。

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

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