cpu怎么知道一条指令有多少个字节?
因8086 指令长度是不同的,cpu怎么知道要从CS:IP指定的位置读出几个字节才是一条完整的指令?
[解决办法]
CPU内部逻辑会根据指令字中的各位域值推算或查表得到当前指令长度的。
[解决办法]
到Intel官网上下载那些手册,里面有指令的详细结构。
[解决办法]
指令译码一般有几个过程(部件):指令预取、指令预分析(预解码)、解码。预取是从cache或者内存取一系列的字节(大小可以保证至少包含一条指令),并设置一个待分析的位置,预分析从此位置逐字节分析,如果是前缀就设置分析状态(因为前缀可能改变默认地址尺寸和操作数的大小,影响后续指令长度),直到不是前缀,就认为是操作码,x86的op code长度一般为1字节,某些2字节,查表就可以直接找出指令长度了。