举个例子,假设我正在构建一台虚拟机。我有一个字节数组和一个while循环,那么我如何知道从字节数组中读取多少字节以解释下一条Intel-8086式的指令?
编辑:(评论)
CPU在指令指针处读取操作码,在8086和CISC中,你有一个字节和两个字节的指令。我怎么知道下一条指令是F还是FF?编辑:
在这篇关于http://www.swansontec.com/sintel.html的文章中,我自己找到了答案。操作码或opcode在任何可选前缀之后。操作码告诉处理器执行哪个指令。此外,操作码包含描述要期望的操作数大小和类型的位字段。例如,NOT指令具有操作码1111011w。在此操作码中,w位确定操作数是字节还是字。OR指令具有操作码000010dw。在此操作码中,d位确定哪些操作数是源和目标,w位再次确定大小。一些指令有几个不同的操作码。例如,当使用累加寄存器(AX或EAX)和常量时,OR具有特殊的节省空间的操作码0000110w,这消除了单独的ModR/M字节的需要。从大小编码的角度来看,记住确切的操作码位是不必要的。更重要的是,对于特定指令可用的操作码类型有一个大致的概念。