【问题标题】:Various Types of "Code" (Machine, Binary etc)各种类型的“代码”(机器、二进制等)
【发布时间】:2015-01-02 02:54:19
【问题描述】:

所以,经过数小时的研究,我得出的结论是我不太了解。

  • 二进制和机器码/操作码:

    机器码就是CPU能理解的东西,机器码本身是纯二进制做的对吗?

    000010 00000 00000 00000 10000 000000 为例。这是跳转到 1024 的机器代码。该机器代码由二进制组成。那是对的吗?

    000010是一个OPCode,一个机器码指令,由二进制组成,对吗?

  • 汇编语言

    汇编语言为操作码提供助记符对吗?那么对于000010,汇编程序助记符是JJMP 对吗?

    汇编器组装成什么?它会产生原始机器代码吗?原始机器代码的文件扩展名是什么?汇编是如何执行的?

  • 目标代码/目标文件

    有人能解释一下这些是什么吗?这些是汇编的输出吗?谢谢大家!

【问题讨论】:

    标签: assembly binary machine-code


    【解决方案1】:

    机器码就是CPU能理解的东西,机器码本身是纯二进制的对吗?

    是的,但操作码因 CPU 而异。

    Intel 80386+架构的指令由以下字节组成:

    Instruction Prefix                0 or 1 Byte
    Address-Size Prefix               0 or 1 Byte
    Operand-Size Prefix               0 or 1 Byte
    Segment Prefix                    0 or 1 Byte
    Opcode                            1 or 2 Byte
    Mod R/M                           0 or 1 Byte
    SIB, Scale Index Base (386+)      0 or 1 Byte
    Displacement                      0, 1, 2 or 4 Byte (4 only 386+)
    Immediate                         0, 1, 2 or 4 Byte (4 only 386+)
    

    它会产生原始机器码吗?

    是的。

    原始机器码的文件扩展名是什么?

    在 Linux 中,可执行文件不需要文件扩展名。但是必须设置可执行文件的文件属性。 在 DOS 中,我们可以使用 COM 文件,它们只包含操作码。在 EXE 文件中提供了更多关于操作系统如何启动可执行文件的信息。

    汇编是如何执行的?

    对于 x86 架构,在通电后对 PC 硬件进行自检后,BIOS 会将引导扇区从引导驱动器加载到内存中并开始执行内部的操作码。

    从操作系统的角度来看,操作系统正在从已知文件系统加载可执行文件并开始执行操作码。

    CPU 的一部分是 CPU 寄存器。其中一些用作地址计数器,它们指向放置下一个要执行的操作码的内存位置。如果这些操作码中的一个最终被执行,那么地址计数器将向前移动到下一个操作码......等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-30
      • 2015-03-26
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多