Aniket 做得很好,但我也要试一试。
首先,了解在最低级别,计算机程序和所有数据只是数字(有时称为单词),存在于某种形式的记忆中。最常见的是这些字是 8 位(1 和 0)的倍数(例如 32 和 64),但不一定,在某些处理器中,每个字要大得多。无论如何,它只是表示为一系列 1 和 0 的数字,或者如果您愿意,也可以是开和关。这些数字的含义取决于正在阅读它们的内容/谁,在处理器的情况下,它一次读取一个单词,并根据它看到的数字(指令)采取一些行动。此类操作可能包括从内存中读取值、将值写入内存、修改已读取的值、跳转到内存中的其他位置以从中读取指令。
在早期,由于没有键盘、屏幕等,程序员会按字面意思打开和关闭开关以更改内存,打开或关闭灯以读出 1 和 0。随着时间的推移,内存变得越来越大,处理器变得越来越复杂,出现了显示设备和用于输入的键盘,并且有了更简单的编程方式。
释义 Aniket:
OPCODE 是指令字的一部分,处理器将其解释为表示要执行的操作,例如读、写、跳转、加法。许多指令也将具有影响指令执行方式的操作数,例如从内存中读取或写入的位置,或跳转到的位置。因此,例如,如果指令的大小为 32 位,则处理器可能使用 8 位作为操作码,并为两个操作数中的每一个使用 12 位。
从切换开关开始,可以使用称为“监视器”的程序将代码输入机器。程序员会使用简单的命令说出他们想要修改的内存,并以数字形式输入机器代码,例如以 16 为基数(十六进制),使用 0 到 9 和 A 到 F 表示数字。
虽然比切换开关好,但输入机器代码仍然很慢且容易出错。更进一步的是汇编代码,它使用更容易记住的助记符代替代表指令的实际数字。ASSEMBLER 的工作主要是将程序的助记符形式转换为相应的机器码。这使得编程更容易,特别是对于跳转指令,其中部分指令是要跳转到的内存地址或要跳过的多个字。用机器码编程需要艰苦的计算来制定正确的指令,如果添加或删除一些代码,可能需要重新计算跳转指令。汇编器为程序员处理这个问题。
这留下了与机器代码基本相同的 BYTECODE,因为它描述了低级操作,例如读取和写入内存以及基本计算。字节码通常被认为是在编译高级语言(例如 PHP 或 Java)时生成的,并且与许多基于硬件的处理器的机器代码不同,它可能具有支持高级语言的特定功能的操作。一个关键的区别是字节码的处理器通常是一个程序,尽管已经创建了用于解释某些字节码规范的处理器,例如用于 Smalltalk 字节码的称为 SOAR(Smalltalk On A RISC)的处理器。虽然您通常不会将本机机器代码称为字节码,但对于某些类型的处理器,例如 CISC 和 EISC(例如 Linn Rekursiv,来自制造电唱机的人),