各种类型的“代码”(机器,二进制等)
因此,经过数小时的研究,我得出结论,我不太了解。各种类型的“代码”(机器,二进制等)
-
二进制代码和机器代码/操作码:
机器码是什么,是由CPU的理解,机器代码本身是由纯二进制正确的?
举例来说
000010 00000 00000 00000 10000 000000
。这是机器代码跳转到1024.该机器代码由二进制组成。那是对的吗?000010
是一个OPCode,一个机器码指令,由二进制制成,正确吗? -
汇编语言
汇编语言提供了正确的操作码助记符?因此对于
000010
,汇编器助记符是J
或JMP
是否正确?汇编程序汇编到什么程序?它生成原始机器码吗?原始机器码的文件扩展名是什么?程序集是如何执行的?
-
对象代码/目标文件
有人能解释这是什么意思?这些是组装的输出吗?谢谢大家!
机代码是什么由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寄存器。其中一些作为地址计数器工作,它们指向一个内存位置,在那里放置下一个要执行的操作码。如果这些操作码中的一个最终被执行,则地址计数器正在向前移动到下一个操作码......等等。