计算机如何区分二进制模式是指令还是数字?

How does a computer distinguish whether a binary pattern is an instruction or just a number?

我正在阅读 Hamacher 的书 "Computer Organization and Embedded Systems",我的问题是:"How does a computer distinguish whether a binary pattern is an instruction or just a number?"

谁能帮我理解这个概念?

计算机区分指令和数字的方式仅取决于读取数据的内容和位置。例如,一个简单的算术逻辑单元 (ALU) 将包括一个用于要完成的运算的输入,以及两个用于操作数的输入。进入操作数端口的数据被读取为数字,而进入操作员输入的数据被读取为指令。

这完全取决于读取数据的计算机体系结构单元,以及该单元读取数据的输入。

冯诺依曼处理器(几乎所有处理器)都无法区分内存中的代码和数据。 CPU 的指令指针指向的任何内容都将作为指令加载到指令解码器中。如果它不是有效指令,它将在 CPU 中引发异常。

这使程序能够在内存中创建新的可执行代码,甚至更改自己的代码。另一方面,这会导致许多代码注入攻击。