计算机硬件主要通过不同的时间段来区分指令和数据,即:取指周期(或取指微程序)取出的既为指令,执行周期(或相应微程序)取出的既为数据。
另外也可通过地址来源区分,从PC指出的存储单元取出的是指令,由指令地址码部分提供操作数地址。
代码本身无法区别它是数据还是指令,CPU在取指令时把从存储器中读取的信息都看作指令,在读取数据时从存储器中读取的信息都看成是数据。 为了区分运算的数据和程序中的指令,程序员在编写程序时需要知道每个数据的存储位置以及指令的存储位置,以避免指令当作数据,或者将数据当然指令。
计算机执行时,先取指令放到指令寄存器中,再分析指令,然后执行指令,根据需要去取数。
cpu给出指令或数据的地址,根据地址去取。我是这么理解的,也不知对不对