gpt4 book ai didi

code-generation - x86指令编码表

转载 作者:行者123 更新时间:2023-12-04 03:30:59 24 4
gpt4 key购买 nike

我正在重写我的汇编器。在此期间,我也对实现反汇编感到好奇。我想使其简单而紧凑,并且在此过程中我可以利用一些概念。

可以从操作码中确定其余的x86指令编码(也许也需要前缀字节)。我知道很多人都为此写了表格。

我对助记符不感兴趣,但对指令编码不感兴趣,因为这是一个实际的难题。对于每个操作码编号,我需要知道:

  • 该指令是否包含modrm?
  • 该指令有多少个立即数字段?
  • 立即使用哪种编码?
  • 是字段中的立即数,是指令指针的相对地址吗?
  • modrm将哪种寄存器用于操作数和寄存器字段?

  • sandpile.org有很多我需要的东西,但是格式不容易解析。

    在我自己开始编写和验证这些表之前,我决定编写此问题。您知道某处存在的这种 table 吗?以不需要太多努力来解析的形式。
    b   byte
    w word
    v word or dword (or qword), depends on operand size attribute (0x66)
    z word or dword (or dword), depends on operand size attribute
    J instruction-relative address (next character describes type)
    G instruction group, has modrm-field (next character describes operand type)
    R has modrm-field (next two characters describe register and operand type)
    M modrm, but operand field must point to memory
    O direct offset (next character describes type)
    F FPU
    T separate table
    _ defined, but no arguments

    x 0 1 2 3 4 5 6 7 8 9 A B C D E F
    0 Rbb Rvv Rbb Rvv b z Rbb Rvv Rbb Rvv b z T
    1 Rbb Rvv Rbb Rvv b z Rbb Rvv Rbb Rvv b z
    2 Rbb Rvv Rbb Rvv b z Rbb Rvv Rbb Rvv b z
    3 Rbb Rvv Rbb Rvv b z Rbb Rvv Rbb Rvv b z
    4 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    5 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    6 _ _ Mvv z Rvvz b Rvvb
    7 Jb Jb Jb Jb Jb Jb Jb Jb Jb Jb Jb Jb Jb Jb Jb Jb
    8 Gbb Gvz Gbb Gvb Rbb Rvv Rbb Rvv Rbb Rvv Rbb Rvv Mvv
    9 _ _ _ _ _ _ _ _ _ _ _ _
    A Ob Ov Ob Ov _ _ _ _ b z _ _ _ _ _ _
    B b b b b b b b b v v v v v v v v
    C Gbb Gvb w _ _ b _ _
    D Gb Gv Gb Gv F F F F F F F F
    E Jz Jz Jb
    F _ _ Gb Gv _ _ _ _ _ _ Gb Gv

    在这里,我有了第一个操作数的表。格式使得可以解析表
    直接从包含它的文本文件中删除。我省略了一些与CISC和分割相关的说明。

    对于两字节的指令,我可能需要四个这样的表。对于三字节指令,我将需要两个以上的表。 FPU指令需要8个表,幸运的是非常简单。之后,我将覆盖大量的x86指令。虽然我只用一两个 table 就可以了。

    此外,很少有指令组可能需要一些小的数组来识别指令类型。

    最佳答案

    我相信ref.x86asm.net可能会找到您想要的东西。它是所有x86-64指令的列表,采用XML格式,应该易于解析。

    关于code-generation - x86指令编码表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2855418/

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