是什么运code FF350E204000吗? [英] what does opcode FF350E204000 do?

查看:252
本文介绍了是什么运code FF350E204000吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经得到了32位运算code: 35 FF 20 0E 40 0​​0 。是否有人知道一个好的作品code表,给一个答案? (我知道我可以使用反汇编器,但我想知道,如何与运算code表确定此)。我发现网页,但也有 7不同的解决方案FF 。我没有得到它。

I've got the 32bit opcode: FF 35 0E 20 40 00. Does anybody know a good OpCode table that gives an answer to this? (I know I could use a disassembler, but I'd like to know, how to determine this with an opcode table). I found this webpage, but there are 7 different solutions for FF. I'm not getting it.

推荐答案

您正在寻找在错误的地方。你应该英特尔或AMD的官方文档中寻找此。

You're looking in the wrong place. You should looking this in Intel's or AMD's official documentation.

附录A运算code地图 英特尔®64的 2B卷的和IA-32架构软件开发人员手册综合卷:1,2A,2B,3A和3B 表示, FF INC / DEC Grp5 1A

Appendix A Opcode Map of Vol 2B of Intel® 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes: 1, 2A, 2B, 3A and 3B says that FF is INC/DEC Grp51A.

表A-6欧普code扩展为一个和两个字节操作codeS按组号 的2B卷表示, FF / 第5组或者 INC的 DEC CALLN CALLF JMPN JMPF PUSH ,根据第5位通过在 MODR / M 字节3,后面的字节。 (0x35 >> 3)及7 = 6或二进制110。所以,这是 PUSH EV

Table A-6 Opcode Extensions for One- and Two-byte Opcodes by Group Number of Vol 2B says FF/Group 5 either of INC, DEC, CALLN, CALLF, JMPN, JMPF, PUSH, depending on bits 5 through 3 of the ModR/M byte, the byte that follows. (0x35>>3)&7=6 or 110 in binary. So, this is PUSH Ev.

第2章指令格式解释的指令包括哪些部分,包括 MODR / M 字节,什么不是。

Chapter 2 Instruction Format of Vol 2A explains what parts an instruction consists of, including those ModR/M bytes and what not.

附录A使用卷2B 告诉你的的运算code表 Ë

Appendix A Using Opcode Tables of Vol 2B tells you for E:

一个MODR / M字节后面的运算code和指定操作数。操作数是一个通用寄存器或存储器地址。如果它是一个存储器地址,该地址是从段寄存器计算和任何下列值:一基址寄存器,一个变址寄存器,一个比例因子,位移

A ModR/M byte follows the opcode and specifies the operand. The operand is either a general-purpose register or a memory address. If it is a memory address, the address is computed from a segment register and any of the following values: a base register, an index register, a scaling factor, a displacement.

它还告诉你 v

字,双字或四字(64位模式),这取决于操作数大小属性。

Word, doubleword or quadword (in 64-bit mode), depending on operand-size attribute.

所以,你知道, EV 表示一个寄存器或内存操作数,因为这是32位code和没有指令prefixes ,操作数大小为32位。因此, EV 32位寄存器或内存中的32位变量。

So, you know that Ev means a register or a memory operand and since this is for 32-bit code and there are no instruction prefixes, the operand size is 32 bits. So, Ev a 32-bit register or a 32-bit variable in memory.

现在,你需要弄清楚从MODR / M字节的剩余部分才结束。

Now you need to figure out the rest of the bytes from ModR/M until the end.

图2-1。英特尔64位和的IA-32架构指令格式卷2A 。它会告诉你,在 MODR / M = 0x35:

Look at Figure 2-1. Intel 64 and IA-32 Architectures Instruction Format of Vol 2A. It tells you that in ModR/M=0x35:

mod = 00(二进制)结果
注册 = 110(二进制;我们以前提取这3位)结果
R / M = 101(二进制)

Mod = 00 (binary)
Reg = 110 (binary; we've extracted these 3 bits before)
R/M = 101 (binary)

表2-2。 32位寻址形式与卷2A 的MODR / M字节告诉你,mod = 00且 R / M = 101的手段 disp32 ,IOW,有由32位内存操作数位移在指令

Table 2-2. 32-Bit Addressing Forms with the ModR/M Byte of Vol 2A tells you that Mod = 00 and R/M = 101 means disp32, IOW, there's a memory operand consisting of a 32-bit displacement in the instruction.

MODR / M 字节的注册字段已用来选择的七个指令之一,因此本场不带codeA寄存器操作数。

The Reg field of the ModR/M byte has already been used to choose one of the seven instructions and therefore this field does not encode a register operand.

所以,你的指令是 PUSH DWORD [0x0040200E]

和与我反汇编的输出一致。

And that agrees with my disassembler output.

这篇关于是什么运code FF350E204000吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆