处理器,寄存器/存储器中的数据,地址和指令有何区别?

Car*_*zer 1 cpu-registers machine-instruction

在处理器中,如何区分数据,地址和指令?执行程序时,当所有内容都在0 s and 1s内并且寄存器加载数据和地址时,处理器如何区分指令?

Jim*_*hel 5

处理器仅执行您要执行的操作。如您所述,处理器无法分辨内存中“数据”和“代码”之间的区别:它们全都是字节序列。您要告诉它与定义该字节如何处理的那些字节一起使用。

编译程序时,生成的可执行文件中包含信息,该信息说明哪些部分是代码,哪些部分是数据。执行程序时,操作系统将代码和数据加载到内存的不同部分,然后告诉处理器在程序的入口点开始执行代码。处理器从那里获取第一条指令,执行该指令,然后继续执行下一条指令。

当然,这一切都非常简化,但是我想您明白了。

在较旧的处理器和较旧的操作系统中,没有什么可以阻止您告诉处理器开始执行数据段中间的指令。或者,实际上,通过修改代码段中间的“数据”,从而可以进行自我修改的代码。较新的处理器和操作系统通常具有某种形式的数据执行保护和锁定功能,以防止修改代码。否则,自修改代码会成为巨大的安全风险。

简短的答案:处理器将代码视为代码,因为您告诉了它。否则,一切都只是内存中的字节。