各种类型的"代码" (机器,二进制等)

时间:2014-11-05 19:16:51

标签: assembly binary machine-code

因此,经过数小时的研究,我得出结论,我不太了解。

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

    机器代码是CPU理解的,机器代码本身是纯二进制正确的吗?

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

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

  • 汇编语言

    汇编语言为OpCodes提供的助记符是否正确?那么对于000010,汇编程序助记符是J还是JMP正确?

    汇编程序汇集到什么程序?它是否生成原始机器代码?原始机器代码的文件扩展名是什么?如何执行装配?

  • 目标代码/目标文件

    有人可以解释一下这些是什么吗?这些是装配的输出吗?谢谢大家!

1 个答案:

答案 0 :(得分:2)

  

机器代码是CPU理解的,机器代码本身是纯二进制正确的吗?

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

英特尔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正在将一个引导扇区从bootdrive加载到ram中,并开始执行内部的操作码。

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

CPU的一部分是CPU寄存器。其中一些是作为地址计数器工作,它们指向一个存储位置,在该存储位置放置下一个执行操作码。如果最终执行了其中一个操作码,则地址计数器将前进到下一个操作码......依此类推。