Skip to content

Incorrect registry access on several versions of x86 POP #1726

@keenk

Description

@keenk

Several of the special versions of POP such as POPDS, POPSS, etc list the operand as ignore instead of write. Pull request #1725 corrects the issue.

Actual cstool output for POPDS (note missing WRITE on operand[0]):
./cstool -d x32 "1f"
0 1f pop ds
Prefix:0x00 0x00 0x00 0x00
Opcode:0x1f 0x00 0x00 0x00
rex: 0x0
addr_size: 4
modrm: 0x0
disp: 0x0
sib: 0x0
op_count: 1
operands[0].type: REG = ds
operands[0].size: 2
Groups: privilege not64bitmode

Expected output from cstool for POPDS (note inclusion of WRITE on operand[0]):
./cstool -d x32 "1f"
0 1f pop ds
Prefix:0x00 0x00 0x00 0x00
Opcode:0x1f 0x00 0x00 0x00
rex: 0x0
addr_size: 4
modrm: 0x0
disp: 0x0
sib: 0x0
op_count: 1
operands[0].type: REG = ds
operands[0].size: 2
operands[0].access: WRITE
Registers modified: ds
Groups: privilege not64bitmode

EDIT: The two files changed by this pull request indicate they are auto generated. I have had similar changes rolled back in the past (see #1512 ). If there is a better place to make these changes please let me know.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions