专家,请问intel x86机器代码/汇编代码转换是singleSide还是bothSide?p>
表示: assemblyCode ---> machineCode 和 machineCode ---> assemblyCode 都可用。
由于x86机器码的大小不同(1-15字节),而操作码的大小不同(1-3字节),如何确定一个操作码是1字节、2字节还是3字节?
我从来没有找到x86指令前缀的例子,如果这里是1字节前缀,如何确定它是前缀还是操作码?
当然, assemblyCode ---> machineCode 、助记符 + oprand[w/b] 的标识可以通过映射某个 MappingTable 来确定响应的 machineCode 是什么。
但是,当过程相反时:
{ bbbbbbbb,bbbbbbbb,bbbbbbbb,//指令1 bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,//指令2 bbbbbbbb,bbbbbbbb//指令3 }
----> {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,它包含您需要的一切。
关于assembly - intel机器码转汇编代码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2409612/