在内存中数据和代码不是在内存联系存放的吗,CPU它是怎么知每次取一条指令应该取多少个字节的?

来源:百度知道 编辑:UC知道 时间:2024/06/07 20:02:48
刚才用DEBUG进行调试程序,在用参数-D来显示,内存单元的内容时,想到个问题,,内存是按像;

0B03:0010 67 50 17 03 67 05 56 05-01 01 01 00 02 FF FF FF
0B03:0020 ......
像上面那样一系列的字节存放,CPU每次都要取指令,,但它是怎么知道每条指令应该有多少个字节的,,
因为不同指令字节不同,,,
像上面那样,,从 67 到那个数才是一条指令,,CPU怎么确定,,,

呵呵,放心吧。
CPU执行指令的时候,它会多得比需要的内容多。也就是说有部分内容它读了但是是不用的。那么你是不是会担心它把下条指令读了一部分导致下条指令读错了?这也不会。因为CPU中有个地址寄存器,是用来存放当前指令的开始地址的。虽然cpu读的多,但是它执行完当前指令后,会将正确的长度累计到地址寄存器上,使得下次读指令时不会出错。