各位大神俺解惑,不感激~!
始看王爽的,上根CS:IP的值(存地址)行指令.
那么我它的是一地址,我并有明指令度,它是如何知道我要取的指令度是多少呢?
上有人:MOV AX 1FEDH,倏指令中MOV翻成器言就包含了度信息.起似乎合情合理.
但是如果我的指令指向的存上第一容是而不是MOV或其它西呢,那么它又是如何分析得到指令度的呢?
大神我解惑,本人不感激!!!!
[解决办法]
就拿MOV举例而言,它后面的立即数的长度,在mov的操作码字节中的MOD字段中给出。这个值是编译器在生成机器代码的时候根据情况填入的。
而且MOV虽然在汇编里面是一个指令,但它从cpu角度来看是一组指令。不同情况的操作码是不同的,这取决于你怎么用它,编译器就帮你怎么翻译成机器码。
而且对于楼上,“CPU的解释器”,计算机尚未入门...
[解决办法]
看下指令的结构组成,这个问题就不难理解吧。指令大致上由“操作码+寻址模式编码+操作数”几个部分组成,cpu 的指令解释机构根据操作码就会知道指令的大致功能,有寻址模式就会知道操作数是在哪里,这样也就确定了指令的长度。其实,同一指令,操作码并不一定是相同的,比如最常见的 MOV 指令,不同的寻址模式组合对应的操作码可能并不相同;MOV 其实只是给汇编软件和写/看程序的人看的。