为什么不是更频繁地使用Assembly编写的程序?

这似乎是一个主流的观点,程序集编程需要更长的时间,而且比C这样的高级语言编程更困难。因此,似乎推荐或假设由于这些原因而编写更高级的语言会更好一些并且为了更好的便携性。

最近我一直在使用x86汇编编写代码,它让我意识到可能这些原因不是真的,除了可移植性。 也许这更多的是熟悉和知道如何写好装配的问题。 我还注意到,在汇编中编程与在HLL中编程完全不同。 也许一个优秀且经验丰富的汇编程序员可以像编写C语言的经验丰富的C程序员一样方便快捷地编写程序。

也许是因为程序集编程与HLL完全不同,所以需要不同的思维,方法和方法,这使得编写不熟悉的程序时显得非常尴尬,因此给程序写入程序带来了不好的名称。

如果可移植性不是问题,那么真的,C对于一个好的汇编程序如NASM会有什么影响?

编辑:只需指出。 当你在汇编中编写时,你不必仅仅写入指令代码。 您可以使用宏和过程以及您自己的约定来进行各种抽象,以使程序更模块化,更易于维护并更易于阅读。 这就是熟悉如何编写好的程序集的地方。


与较高级别的语言相比,ASM的可读性较差并且不具备可维护性

而且, ASM开发人员比其他更流行的语言很多,例如C.

此外,如果您使用更高级的语言并且新的ASM指令可用 (例如SSE),则只需更新编译器,旧代码可以轻松使用新指令。

如果下一个CPU有两倍的寄存器会怎么样?

这个问题的反面是:编译器提供了什么功能?

我怀疑你可以/想要/应该优化你的ASM比gcc -O3更好。


地狱,我是一个编译器。

当你读这句话时,我刚刚扫描了数千行代码。 我浏览了数百万种基于大量学术研究的数百种不同优化技术来优化您的单一产品线的数百万种可能性。 当我将三线循环转换为数千条指令以加快速度时,我不会感到任何尴尬,即使是轻微的emb。 我毫不遗憾地去做大量的优化工作或做最肮脏的技巧。 如果你不想要我,也许一两天,我会按你喜欢的方式行事。 我可以随时改变我使用的方法,甚至不需要更改代码的一行。 如果需要,我甚至可以向您展示您的代码在汇编,不同处理器体系结构和不同的操作系统以及不同的汇编约定中的外观。 是的,都在几秒钟内。 因为,你知道,我可以; 你知道,你不能。

PS哦,顺便说一下,你没有使用你编写的代码的一半。 我帮你一个忙,把它扔掉。


我已经为6502,Z80,6809和8086芯片编写了汇编程序。 一旦C编译器可用于我正在处理的平台,我就停止了这种工作,并且立即变得至少提高了10倍。 大多数优秀的程序员使用他们使用的工具是出于合理原因。

链接地址: http://www.djcxy.com/p/31575.html

上一篇: Why aren't programs written in Assembly more often?

下一篇: Performance of FOR vs FOREACH in PHP