zyantific / zydis

Fast and lightweight x86/x86-64 disassembler and code generation library
https://zydis.re
MIT License
3.39k stars 438 forks source link

Decoder and formatter issues #134

Open 0xd4d opened 4 years ago

0xd4d commented 4 years ago

Some instructions should use the address size not the operand size to select the register:

vmload doc: "The portion of RAX used to form the address is determined by the effective address size"

clzero doc doesn't say anything about the effective address size but it seems logical that it also uses it.


EVEX vpblendmd/etc can use {z}

62 F24D9D 64 50 01 = disassembled without {z} 62 F24D9D 65 50 01 = disassembled without {z} 62 F2CD9D 64 50 01 = disassembled without {z} also: vblendmps vblendmpd ...


62 E30D1B 0A D3 A5 = {sae} is displayed twice


0F0F CD 97 = pfsqrt should be pfrsqrt 0F0F CD A6 = pfcpit1 should be pfrcpit1


62 E17C18 2E D3 = missing {sae} 62 E1FD18 2E D3 = missing {sae} 62 E17C18 2F D3 = missing {sae} 62 E1FD18 2F D3 = missing {sae}


flobernd commented 4 years ago

Thanks for reporting again! I will have a look on wednesday.

flobernd commented 4 years ago

Some instructions should use the address size not the operand size to select the register

clzero/vmload Fixed with https://github.com/zyantific/zydis-db/commit/8d3d5272af45756ced9b927f1bc1be5924ecf68f

there are more similar instructions

Could you please report them as well? Found a few but do not want to miss any.


EVEX vpblendmd/etc can use {z} {sae} is displayed twice missing {sae}

These ones all seem to be formatter issues - I will look at that later.


pfsqrt should be pfrsqrt pfcpit1 should be pfrcpit1

We might have picked the wrong mnemonics here. Having a look at the official AMD 3DNOW documentation later.


I will re-generate the Zydis tables when I'm completely done fixing to avoid too many commits with auto-generated code.

0xd4d commented 4 years ago

Could you please report them as well? Found a few but do not want to miss any.

I'd check all instructions with reg ops that reference memory.