【问题标题】:Is assembly language helpful for a fortran programmer? [closed]汇编语言对 Fortran 程序员有用吗? [关闭]
【发布时间】:2014-02-10 21:19:54
【问题描述】:

我的印象是,汇编语言知识对任何高级程序员都有好处,因为它可以帮助他们了解计算机的真正工作原理,从而更智能地编写高级代码。

出于这个原因,我很想开始学习汇编语言,但我也想知道,作为一名 fortran 程序员,真正能够编写汇编语言是否对我有用。

我能否发现自己用汇编语言重写简单的 fortran 程序以更好地解决科学问题?

如果此问题已在其他地方得到解答,我们深表歉意。

【问题讨论】:

  • 了解更多信息总是有帮助的,恕我直言... ;) 我认为它不会真正有助于更快地编写科学程序,但它可能有助于优化此类程序,即使没有实际编写汇编中的东西,我认为在大多数情况下这是一个相当糟糕的主意。
  • 有一个问题Learning Assembly 已经问过,您可能想仔细阅读答案。请注意,使用 gfortran,您可以键入 gfortran -S codename.f90 并获取汇编输出,这样您就可以看到您的代码与手写代码相比如何。
  • 我认为您为学习如何阅读汇编语言提出了合理的论据。至于手工制作紧凑、快速、节省内存的数字汇编器来替代 Fortran 编译器的产品……好吧,我刚刚描述了一些更好的 BLAS 实现(etc)。你能找到自己编写汇编语言例程来打败那些吗?难以破解。
  • 我怀疑你会发现汇编语言对解决科学/数字问题很有用。现代编译器非常好,以至于你很难击败它们。有时汇编可能在设备驱动程序和操作系统中有用,尽管 C 更常用。更多地了解计算机的工作原理可能会有所帮助。

标签: assembly fortran


【解决方案1】:

我真的很惊讶有多少程序员认为他们应该在掌握一些高级语言之前学习汇编甚至尝试它。 有些场景需要组装(系统级编程、工具链编程(后端)、非常小的嵌入式 CPU),但除此之外(不再有用)。

出于您的目的,您可能应该了解 CPU 如何进行计算(以便能够更好地组织数据和算法),也许检查您的 CPU 的一些架构细节等。Agner Fog 写了a bunch of optimization manuals(免费提供)。 能够读取程序集,检查编译器生成的代码会有所帮助,但不是绝对要求。

如果您想加快科学算法的速度,我假设您已经对并行化(和 [GPGPU])了解得够多了2

【讨论】:

  • 学习一些程序集与掌握它是不同的。对于大多数对汇编有所了解的人,至少能够阅读和理解简单的示例,无论他们使用哪种高级语言,都会有所帮助。
猜你喜欢
  • 2014-12-26
  • 2011-10-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
相关资源
最近更新 更多