【问题标题】:Assembly language - More than one type?汇编语言 - 不止一种类型?
【发布时间】:2010-08-19 23:16:33
【问题描述】:

我几周后就开始上大学(软件工程学位),并且知道我将在第一年学习的模块之一是“建筑基础”或类似的东西;基本上它是在学习“汇编”中的编程。

我想做一些背景学习,所以我已经做好了准备(我在其他一些单元上做过同样的事情),但不知道是否有不止一种“汇编语言”。那里有多少?是每个制造商一个,32 位和 64 位语言,还是只有一个标准?

如果有不止一种类型,那么在大学阶段最“流行”或最可能教授的类型是什么?

【问题讨论】:

  • 如果您想抢占先机,我建议您联系大学里的某个人(教授或部门秘书)以了解将使用哪种汇编语言。一些大学甚至不使用“真正的”汇编语言,而是更愿意创建一种合成语言供学生学习。
  • @Blair 这是个好主意,我会这样做的。我真的希望我最终不使用合成语言——那太令人失望了。
  • 我的大学使用 MIPS 教授同等课程,这是一种相对简单的 RISC(精简指令集)汇编语言。他们很可能不会使用 x86(英特尔 32 位汇编语言,并且可能是编译器最常针对的目标)进行教学,这仅仅是因为 x86 集中有如此多的神秘指令随着时间的推移而演变以提供各种优化。以下是有关 MIPS 的一些信息:en.wikipedia.org/wiki/MIPS_architecture
  • 如果您确实发现他们正在教 MIPS,您可以使用 SPIM 自己玩一下,这很可能是您在课堂上使用的。您可以在此处找到基于 Web 的 SPIM 版本:cgi.aggregate.org/cgi-bin/cgispim.cgi

标签: assembly


【解决方案1】:

有很多很多类型的汇编语言。目前最流行的是ARM、MIPS和x86。 ARM 用于许多手机和许多嵌入式系统。 MIPS 在 IBM CPU 上很流行,并且可以在 Mac、一些视频游戏机等系统上找到,我确信我错过了一些。 x86 汇编器用于 Intel PC。每种风格都有不同的版本,涵盖从 16 位到 64 位指令的全部范围。组装的问题是旧架构趋于消亡,新架构出现,但 RISC 风格系统所做的基本事情基本相同。这只是学习系统之间的助记符的问题。 Move、Mov、Load 等都加载一个带有值的寄存器。它真的就像任何其他语言一样。一旦你学会了一个,很容易拿起新的。您可能会遇到一些较旧的型号是 Z80、68000、6502 和 6510 - 取决于您想要返回的机器返回多远。

希望对您有所帮助。

【讨论】:

  • 您将 MIPS(与摩托罗拉无关)与 IBM 的 PowerPC(旧 Mac、Xbox 360、PS3、Gamecube/Wii/WiiU 使用)混淆了。
  • 一条指令的操作码在 MIPS 中是 6 位。每条指令总是 32 位。
【解决方案2】:

但不知道“汇编语言”是否不止一种

同一 CPU 的不同汇编器(例如 Gnu 和 Microsoft 的)可能具有不同的汇编语言语法;但区别很小,因为它们都针对同一个 CPU,并且汇编指令和 CPU 操作码之间存在一对一的映射(如果您忽略宏)。

更大的区别在于不同类型的CPU。

有时不同的 CPU 支持相同的操作码(因此可以被相同的汇编程序作为目标),因为它们被设计为通过执行相同的机器语言来相互兼容或相互竞争。

但有时它们会有所不同:请参阅 List of Instruction Set Architectures

【讨论】:

    【解决方案3】:

    一般:

    • 对于每种不同类型的 CPU,必须至少有一种完全不同的汇编语言(因为汇编语言与机器代码直接相关)。

    • 其中的每一个都可能有 2 个或更多类别的汇编语言(例如“英特尔语法”与“AT&T 语法”)。

    • 对于其中的每一个,可能有许多方言,指令的语法略有不同,完全不同的预处理器和完全不同的指令。

    如果(使用凭空提取的随机数)您假设有 50 种不同类型的 CPU,每个 CPU 平均使用 1.5 个类别,每个类别平均使用 2 个方言;那么它会适用于 150 种不同的汇编语言。

    【讨论】:

    • x86 的语法家族和方言可能比任何其他 ISA 都多。但是,是的,如果您考虑汇编程序指令(而不是指令语法本身),那么对于相当数量的 CPU,就会有多种方言。我猜,随着 Go 语言发明了自己的 asm 语法,这是许多 ISA 移植到的另一种风格。
    • @PeterCordes:有趣的是,我渴望发明自己的“dest OP src”语法,以便轻松查看指令依赖关系等(例如,对于“这个寄存器的值从哪里来从?”您将能够扫描左列)。只是普通的文本编辑器正确地证明“dest”部分是痛苦的。
    • 有趣。您可以通过 OP \t dst, \t src 的编码风格获得大部分好处,该风格将两个操作数对齐到一致的列。但是,是的,emacs 的 asm 模式在那里有些欠缺。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 2015-05-04
    • 2010-12-24
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    相关资源
    最近更新 更多