intel机器码到汇编代码问题

专家,我不知道intel x86 machineCode / assemblyCode转换是singleSide还是BothSide?

意思是:assemblyCode —> machineCode和machineCode —> assemblyCode都可用.

由于x86 machineCode的大小不同(1-15字节),并且操作码在(1-3字节)内变化,如何确定一个操作码是1byte还是2byte还是3byte?

我从来没有找到x86指令前缀的例子,如果这里是1byte前缀,如何确定它是前缀还是操作码?

当然,assemblyCode —> machineCode,助记符oprand [w / b]的标识可以通过maping某些MappingTable来确定响应machineCode是什么.

但是,当过程逆转时:

{bbbbbbbb,bbbbbbbb,bbbbbbbb,// instruction1
  BBBBBBBB,BBBBBBBB,BBBBBBBB,BBBBBBBB,BBBBBBBB,BBBBBBBB,//指令2
  BBBBBBBB,BBBBBBBB // instruction3
}

—->
{BBBBBBBB,BBBBBBBB,BBBBBBBB,BBBBBBBB,BBBBBBBB,BBBBBBBB,BBBBBBBB,BBBBBBBB,BBBBBBBB,BBBBBBBB,BBBBBBBB}

我不知道确定一条指令的长度(大小)的重要位或字节.

任何人都会告诉我如何确定?(操作码的大小,前缀示例.)
感谢帮助.

您需要的详细信息在 Intel® 64 and IA-32 ArchitecturesSoftware Developer’s Manual Volume 2B: Instruction Set Reference, N-Z.查看附录A,它包含您需要的一切.
相关文章
相关标签/搜索