Joh*_*nny 8 format x86 assembly intel opcode
专家,我不知道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,// instruction2 bbbbbbbb,bbbbbbbb // instruction3}
----> {bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb}
我不知道确定一条指令的长度(大小)的重要位或字节.
任何人都会告诉我如何确定?(操作码的大小,前缀示例.)感谢您的帮助.
您需要的详细信息位于Intel\xc2\xae 64 and IA-32 ArchitecturesSoftware Developer\xe2\x80\x99s Manual Volume 2B:Instruction Set Reference, NZ 中。看看附录A,它包含了你需要的一切。
\n