Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly x86 CPU如何区分具有相同字节表示形式的操作码?_Assembly_X86_Cpu Architecture_Machine Code - Fatal编程技术网

Assembly x86 CPU如何区分具有相同字节表示形式的操作码?

Assembly x86 CPU如何区分具有相同字节表示形式的操作码?,assembly,x86,cpu-architecture,machine-code,Assembly,X86,Cpu Architecture,Machine Code,我刚刚注意到x86中某些指令的字节表示是相同的,例如一些类型的JMP(FF/5)和INC(FF/0): 它们都可以有一个r/m32操作数,因此它们也不能通过操作数的大小来区分,那么x86 CPU如何区分它们并知道哪个是正确的呢?引用:“斜杠后跟数字,如/2,表示指令的操作数之一是内存地址或寄存器(表示为mem或r/m,大小可选)。这将被编码为有效地址,带有ModR/m字节[…],ModR/m字节的备用(寄存器)字段应为给定的数字(从0到7,因此适合三位)

我刚刚注意到x86中某些指令的字节表示是相同的,例如一些类型的JMP(FF/5)和INC(FF/0):

它们都可以有一个r/m32操作数,因此它们也不能通过操作数的大小来区分,那么x86 CPU如何区分它们并知道哪个是正确的呢?

引用:“斜杠后跟数字,如/2,表示指令的操作数之一是内存地址或寄存器(表示为mem或r/m,大小可选)。这将被编码为有效地址,带有ModR/m字节[…],ModR/m字节的备用(寄存器)字段应为给定的数字(从0到7,因此适合三位)