【问题标题】:How different are assembly language for different kinds of processers?不同类型处理器的汇编语言有何不同?
【发布时间】:2011-07-14 20:58:02
【问题描述】:

每种处理器的汇编语言有何不同?

如果有人学习 x86 英特尔汇编,如果他将汇编与另一种处理器类型 (fx x86-64) 一起使用,他是否必须完全从头开始?

【问题讨论】:

    标签: assembly processors


    【解决方案1】:

    嗯,有些概念是相似的。例如,所有处理器体系结构都有用于快速临时存储的寄存器,它们都有一个指令指针,几乎所有它们都有一个堆栈。 根据我的经验,如果您可以处理 x86(当然还有 amd64,这比添加 32 位更复杂),您将能够非常快速地处理更简单的架构,例如 ARM、z80 或 MIPS。

    如果您想快速上手,请获取 IDA 的免费版本,或者如果您在 Windows 中,还有 Ollydbg。 用 C 写一个小程序,然后反汇编你写的东西。这样你会学到很多东西(这几乎就是我自学的方法)。

    还要注意,就 x86 而言,有两种主要的汇编语法风格 - Intel 和 AT&T。似乎 linux 人群倾向于使用 AT&T 语法,但我个人更喜欢 Intel。

    【讨论】:

    • 感谢您的回答。我不知道 IDA 是什么,但我已经在 linux 上使用 gdb 尝试过(因为在 Hacking: The Art of Exploitation 一书中使用过),但是很难掌握组装部分,我仍然在编程方面也很新。我问的原因是,如果汇编在不同的处理器中完全不同,这似乎是一项无法完成的任务。
    • 完全可以理解。 IDA 是一个伪装者。你不会用它创造任何东西,但它会带你很远的理解。不,我不为他们工作 :) 有一个免费版本,我强烈建议您获取一份副本并拆开一些简单的程序。
    【解决方案2】:

    这实际上取决于特定的汇编语言。 32 位和 64 位 x86 处理器之间的区别并不算太差(额外的寄存器等),但是用于 pc 的 64 位处理器和旧翻盖手机处理器之间的区别将大不相同。但总的来说,大多数概念都能很好地翻译。

    【讨论】:

      【解决方案3】:

      它们通常比不同更相似。 x86 是您要学习的最后一个指令集,它不是一个很好的指令集,非常丑陋。是的,如果您学习它,其他人真的很容易,但最好先学习一个好的指令集。正如您的问题所暗示的那样,一旦您知道一两个,其他的就是语法问题。 msp430 是一个很好的第一个指令集,硬件超级便宜(低于 5 美元)或者只使用模拟器。在主线 binutils 中支持。手臂和拇指是其他很好的学习指令集。同样,硬件很便宜,基于 cortex-m3(只有拇指/拇指 2,没有手臂指令)大约 10 美元,基于手臂/拇指(没有拇指 2)的 40 岁以下。还有免费的模拟器,所以你不必购买硬件。

      【讨论】:

        猜你喜欢
        • 2013-01-19
        • 1970-01-01
        • 2018-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-25
        • 1970-01-01
        相关资源
        最近更新 更多