汇编语言有什么优点吗?

时间:2016-05-22 06:24:21

标签: linux assembly

我听说有些开发人员在嵌入式系统中使用汇编语言。

我想知道他们学习汇编语言和使用汇编语言的领域有什么优点。

你有经验吗?

1 个答案:

答案 0 :(得分:2)

对汇编代码的需求与缺少特定编译器支持成正比。

嵌入式系统是根据特定需求量身定制的,例如德州仪器DSP拥有一些异国情调的产品。地址模式,如circular and bit reversing addressing modes,不存在于其他架构中 C语言无法以标准方式解决所有这些差异。

然而,C标准并不禁止供应商扩展,而针对特定环境的编译器带有内置功能,目的是暴露一些低级功能。这些函数称为内在函数,是非标准保留关键字,它们以下划线开头。

例如,TMSxC6000 Optimization Manual列出 7.5.4 的内在函数 在DSP中完成的一个非常常见的操作是饱和加法,其中 n 位字(2 n - 1)+ 1 = 2 n - 1,而不是(2 n - 1)+ 1 = 0,用于通常的模块化添加。
在TI C方言中,这转换为

int x1, x2, y;
y = _sadd(x1, x2);   //_sadd mimics the name of sadd assembly instruction

有了适当的内在函数,你可以完全避免使用汇编语言。

但至少有三个情况仍需要汇编语言:

  1. 没有足够的内在函数。
    程序员被迫退回到组装。

  2. 众所周知,编译器在优化代码方面尤其糟糕,而您希望自己编写关键部分。
    在走这条路之前至少考虑三次。

  3. 您需要为不同的平台使用相同的C代码库。
    例如,Linux内核就是这种情况,他们使用一小部分程序集来抽象"抽象"执行环境足以用大多数纯C代码处理 通常,多样性如此突出,以至于仅仅调用内在函数是不够的,需要不同的管理,而不是抽象。