【问题标题】:Why aren't programs written in Assembly more often? [closed]为什么不经常用汇编编写程序? [关闭]
【发布时间】:2011-02-10 16:17:44
【问题描述】:

似乎主流观点认为汇编编程比 C 等高级语言需要更长的时间并且更难编程。因此似乎建议或假设最好用高级语言编写出于这些原因以及更好的便携性。

最近我一直在用 x86 汇编编写代码,我突然意识到,除了可移植性之外,这些原因可能并不是真的。也许更多的是熟悉和知道如何编写好汇编。我还注意到汇编编程与 HLL 编程完全不同。也许一个优秀且有经验的汇编程序员可以像一个有经验的 C 程序员用 C 编写程序一样容易和快速地编写程序。

也许是因为汇编编程与 HLL 有很大的不同,因此需要不同的思维、方法和方式,这使得在不熟悉的情况下编程看起来很尴尬,因此也给它起了一个不好的名字来编写程序。

如果可移植性不是问题,那么真的,C 相对于 NASM 等优秀的汇编程序有什么好处?

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

【问题讨论】:

  • 写?读代码呢?您(和其他人)阅读代码的次数会比编写代码的次数多得多
  • 为什么我的程序要在新平台上运行就必须学习一门新语言?为什么我必须构建我的程序以适应 CPU 的想法,即有多少寄存器以及你可以用它做什么?我尝试解决问题,而不是计算机出价。
  • 编辑总结:可以使用 C 编译器。
  • @Simon 也许我错了,但我很惊讶我们在 2010 年辩论 ASM 与“像 C 这样的高级语言”。特别是 C 是一个例子的部分高级语言
  • @changelog:你不是这样拼写programming.reddit.com的。

标签: c programming-languages assembly


【解决方案1】:

组件不能在不同的微处理器之间移植。

【讨论】:

  • 现代处理器和汇编程序并非如此,您可以像在 C 中一样针对不同的处理器。当然,在这种情况下您将无法使用完整的指令集,但是如果你用 C 语言编写它,那么你也不会。可移植性不是主要问题。
  • 也许你的意思是架构
  • @Blindy - 您可以针对 x86 系列中的不同处理器,但在 x86 变体和 ARM 处理器或 Z80 或 8051 之间的汇编指令绝对没有共同点。
  • 是的,但是您也不能在 c 中对 z80 进行编程。我想我们在这里都在谈论普通的 x86/x64 处理器。
  • 全世界都不是 x86。 “不同的微处理器”并没有表明它们都执行相同的指令集。
【解决方案2】:

嗯,我“在过去”写了很多汇编,我可以向你保证,当我用高级语言编写程序时,我的工作效率会更高。

【讨论】:

  • “程序集是拉丁语”。
  • @Adriano:除了有很多很多不同的方言而且没有两个看起来像。
  • 当然,但我的意思是,学习在其中任何一个中进行编程可以让您深入了解机器的架构,从而帮助您获得更高的水平。除非你处理分页内存,否则你最终会伤痕累累。就像读卡图卢斯的《卡门 16》。
  • @Adriano “Assembly 是拉丁语”,没有 asm 是穴居人的咕噜声。 1 次摇滚,2 次鹿,3 次火 - 适合简单的东西,但很难经营一个帝国。
  • @Martin:你试过用罗马数字做复杂的算术吗?
猜你喜欢
  • 2010-10-21
  • 2010-11-02
  • 2010-10-29
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
相关资源
最近更新 更多