CPU如何区分数据和指令?

问题描述 投票:0回答:1

处理器如何分辨打算用作数据的存储器值和打算用作指令的存储器值之间的区别?

assembly cpu-architecture processor
1个回答
1
投票

不是。它具有一个通常称为指令指针的寄存器,该寄存器指向要执行的下一条指令。无论执行该地址处的内容是什么,指令指针都将更新(通常是在当前指令之后,或者在跳转指示的地方跳转时,通常更新到该地址)。如果数据碰巧碰到了它,那么该数据将被解释为一条指令。

[在某些情况下,可能需要使用(自变异程序),但是一般而言,此类数据将不会形成有效的指令(在这种情况下会发生异常),或者会形成无意义的指令(无论如何都会执行) 。

[基本上,程序只是一种特殊的数据:要执行的数据,在执行时才有意义。

编辑:在更高级的系统(基本上是当前体系结构的所有系统)中,内存区域可以标记为non-executable,即使找到有效指令,处理器也可以将其标记为refuse execution。数据和指令之间仍然没有区别;放置数据的空间是否标记为可执行:在NX区域中的指令可能会被拒绝执行,在非NX区域中执行随机数据可能仍然会造成破坏。

© www.soinside.com 2019 - 2024. All rights reserved.