gpt4 book ai didi

c++ - x86 架构中的指令解码

转载 作者:太空狗 更新时间:2023-10-29 19:40:32 24 4
gpt4 key购买 nike

<分区>

我正在为我的实验室开发一个操作系统项目,我必须在其中使用指令指针和指令操作码。现在我只需要知道它是什么类型的指令。为此,我从指令指针指向的地址读取数据。该数据的第一个字节为我提供了指令类型。例如,如果第一个字节是 0xC6,它就是一个 MOVB 指令。现在有些情况下指令指针的第一个字节是0x0F。根据文档 0x0F 这意味着它是一个两字节指令。我的问题是这种类型的指令。我不确定如何找出两字节指令的指令类型。

之后,我的第二个优先任务是找出指令的操作数。我不知道如何从代码中做到这一点。任何示例代码将不胜感激

第三是需要找出指令的大小。由于 x86 是可变长度的,我想知道每条指令的大小。起初我计划使用一个查找表,我将在其中维护指令名称及其大小。但是后来我发现同一条指令可以有可变长度。例如,当我在 .o 文件上使用对象转储时,我发现了两条指令 C6 00 62 用于 MOVB $0x62,(%EAX) & C6 85 2C FF FF FF 00 用于 MOVB $0x0,-0xD4(%EBP)。看这里,两种指令类型相同(C6)但长度不同。

所以我需要这些问题的答案。如果有人能给我一些解决方案,我将不胜感激。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com