我正在阅读 Hamacher 的《计算机组织和嵌入式系统》一书,我的问题是:“计算机如何区分二进制模式是指令还是数字?”
谁能帮我理解这个概念?
我正在阅读 Hamacher 的《计算机组织和嵌入式系统》一书,我的问题是:“计算机如何区分二进制模式是指令还是数字?”
谁能帮我理解这个概念?
冯诺依曼处理器(几乎所有处理器)无法区分内存中的代码和数据。CPU 的指令指针指向的任何内容都会作为指令加载到指令解码器中。如果它不是有效指令,它将在 CPU 中引发异常。
这使程序能够在内存中创建新的可执行代码,甚至更改自己的代码。另一方面,这会导致许多代码注入攻击。
计算机区分指令和数字的方式仅取决于读取数据的内容和位置。例如,一个简单的算术逻辑单元 (ALU) 将包括一个用于要完成的操作的输入和两个用于操作数的输入。进入操作数端口的数据被读取为数字,而进入操作符输入的数据被读取为指令。
这完全取决于哪个计算机架构单元正在读取数据,以及该单元正在读取什么输入。