【问题标题】:Unified assembly language统一汇编语言
【发布时间】:2011-04-16 09:37:13
【问题描述】:

我想知道是否存在某种通用且易于编码的操作码(或汇编)语言,它提供了当今大多数 CPU 中可用的基本指令集(不是一些花哨的 CISC,只有寄存器的计算机,只是普通的一个)。有可能在任何提到的 CPU 上“编译”、微优化和“解释”吗?

我正在考虑类似 MARS MIPS 模拟器(相当简单易读的代码)之类的东西,可以制作真正的程序。不需要库(但如果可能的话,这是一件好事),只是为了以统一的方式使事情(库或类似 UNIX 的工具)更快。

对不起,如果这是个愚蠢的问题,我是汇编程序的新手。我只是觉得 NASM 或 UNIX 汇编语言既不是非常跨平台也不是易于阅读和编码。

【问题讨论】:

  • 你心目中的应用是什么?
  • 好吧,有人开玩笑说C 只是便携式汇编程序。而且由于它经常被用作编译器的目标语言,所以它可能有些道理。
  • jmh:嗯,自 70 年代中期以来,C 语言大部分时间都停滞不前(除了一些小的标准化工作),而如今的汇编程序更先进 :-)

标签: performance assembly bytecode opcode multiplatform


【解决方案1】:

JVM 字节码有点像汇编语言,但没有指针运算。但是,它非常面向对象。从积极的方面来说,它完全是跨平台的。

您可能想查看 LLVM 字节码 - 但请记住以下警告:http://llvm.org/docs/FAQ.html#can-i-compile-c-or-c-code-to-platform-independent-llvm-bitcode

【讨论】:

  • 我同意 LLVM 的建议 :)
【解决方案2】:

第一件事:用汇编语言编写并不能保证速度提高。对手头的工作使用正确的算法对速度的影响最大。当您需要去组装以挤出最后几个辍学时,您只能通过使算法适应相关硬件的特定架构来真正做到这一点。通用 HLA(高级汇编程序)几乎违背了在汇编中编写代码的目的。请注意,我不是在敲Randall Hyde’sHLA,这是一个很棒的产品,我只是说你不会像编译器生成机器代码那样从编写汇编中获得任何好处。大多数 C 和 C++ 编译器都有非常好的优化器,并且可以生成优于 ASM 中几乎所有幼稚实现的机器代码。

看看您能否找到 Michael Abrash 的这些书籍(第二手,已绝版):“汇编语言之禅”和“代码优化之禅”。或者看看你能不能找到他关于 DDJ 的文章。他们将为您提供首屈一指的优化洞察力,

【讨论】:

  • 如果对我的回答投反对票的人会发表评论,解释为什么他们认为我的回答没有帮助,那就太好了。提问者暗示用 ASM 编写会“以统一的方式使事情变得更快”,这不是真的。如果您想更快地编码;去高水平。如果您想要更快的代码,请改进您的算法。 (本机)ASM 的唯一“魔力”是能够更具体地说明您希望 CPU 做什么。使用 UASM(它是高噪声、低信号;与编译的高级语言相比,结果稍好(通常更差))。
【解决方案3】:

相关的东西,所以我希望可能有用:

采用一种便携式汇编器的方法。

有趣的操作系统项目,带有用汇编程序编写的图形用户界面和强大的汇编 API:

【讨论】:

  • OP 询问统一汇编语言,而不是汇编程序
  • 这就是为什么我写了“相关的东西,所以我希望可能有用”,通过“相关”我的意思是它不一定直接回答问题,但恕我直言,密切相关的可能是对其他读者有帮助。
【解决方案4】:

LLVM IR 提供了非常便携的程序集,以强大的compiler, backing many projects including Clang 为后盾

【讨论】:

    猜你喜欢
    • 2010-12-24
    • 2014-10-07
    • 1970-01-01
    • 2013-01-17
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多