Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3150036
  • 博文数量: 117
  • 博客积分: 10003
  • 博客等级: 上将
  • 技术积分: 5405
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-23 09:34
文章分类

全部博文(117)

文章存档

2011年(1)

2010年(10)

2009年(69)

2008年(37)

分类: LINUX

2008-03-17 13:30:06

在嵌入式Linux中,我们使用gnu的工具链来编译程序。
 
在做系统优化时,有些性能可能是软件的方法所无法达到的,那么我们就需要硬加速,采用硬件的方法。这里包括使用DSP等。
 
如果使用硬件加速,那么不可避免的CPU要扩展指令,但GNU的工具链将如何支持扩展指令呢?
 
这里有两种方法:
1、在C程序里,内嵌汇编程序。在gcc编译时是不会分析其语法,因此对于新的指令符,其不会报错;在转化为汇编语言之后,下一步要转化为机械语言,这时你需要修改GNU的汇编器GAS,来将汇编语言转化为机器代码。GAS的代码修改起来相对容易。
 
2、如果你想直接通过C语言来支持硬件加速,那么你将不得不更改GCC编译器,修改其前台和后台,GCC的编译器修改起来还是相当的困难。
 
我认为比较可行的办法,对于需要使用硬加速的地方,使用嵌入式汇编,编译成动态库,供上层应用调用;修改GAS汇编器,以便生成相应的机器代码。
 
阅读(2476) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~