<feed xmlns='http://www.w3.org/2005/Atom'>
<title>yaxpeax-x86/test/protected_mode, branch inst-behavior</title>
<subtitle>yaxpeax x86 decoder</subtitle>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/'/>
<entry>
<title>3dnow was still supported on K8, K10. 32-bit mode should learn about uarch tweaks too</title>
<updated>2025-06-01T23:51:42+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2025-06-01T23:51:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=016cb77445857b63b3c5ba3ea095c5a36a357fbd'/>
<id>016cb77445857b63b3c5ba3ea095c5a36a357fbd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>expand isa feature selection to more bits</title>
<updated>2025-06-01T09:21:37+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2024-08-17T04:21:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=08eed360fea81ab9328fd0859b813ee01937b5b1'/>
<id>08eed360fea81ab9328fd0859b813ee01937b5b1</id>
<content type='text'>
this is backed by the new IsaSettings trait. the existing InstDecoders
are unchanged, except that they implement this new trait.

also add new `DecodeEverything` structs with `IsaSettings` impls that
are unconditionally set to permit anything the decoder can be configured
to conditionally accept or reject.

in the process, add new `_3dnow` flag and stop accepting 3dnow
instructions in uarch-specific decoder settings that would not have
3dnow instructions.

update AMD microarchitectures and cross-ref chip directory
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
this is backed by the new IsaSettings trait. the existing InstDecoders
are unchanged, except that they implement this new trait.

also add new `DecodeEverything` structs with `IsaSettings` impls that
are unconditionally set to permit anything the decoder can be configured
to conditionally accept or reject.

in the process, add new `_3dnow` flag and stop accepting 3dnow
instructions in uarch-specific decoder settings that would not have
3dnow instructions.

update AMD microarchitectures and cross-ref chip directory
</pre>
</div>
</content>
</entry>
<entry>
<title>rename most operand variants, make them structy rather than tupley</title>
<updated>2024-06-24T19:48:45+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2024-06-24T19:48:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=1b8019d5b39a05c109399b8628a1082bfec79755'/>
<id>1b8019d5b39a05c109399b8628a1082bfec79755</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>add additional `call` test cases</title>
<updated>2024-06-23T22:15:50+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2024-06-23T22:15:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=2002347272391dc6a70d83fe8293f2ce35ed26ee'/>
<id>2002347272391dc6a70d83fe8293f2ce35ed26ee</id>
<content type='text'>
fix 32-bit 66-prefixed ff /2 call not having 16-bit operands

fix momentary regression in rendering `call` instructions to string
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fix 32-bit 66-prefixed ff /2 call not having 16-bit operands

fix momentary regression in rendering `call` instructions to string
</pre>
</div>
</content>
</entry>
<entry>
<title>fix hreset being disassembled as having second operand of "Nothing"</title>
<updated>2023-12-17T00:12:25+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2023-12-17T00:12:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=58913fc4e1bb153fe9d8735164ef922f71c2fa97'/>
<id>58913fc4e1bb153fe9d8735164ef922f71c2fa97</id>
<content type='text'>
just report it having one operand...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
just report it having one operand...
</pre>
</div>
</content>
</entry>
<entry>
<title>fix incorrect register selection for `vpbroadcastm{b2q,w2d}` with `rex.b` set</title>
<updated>2023-12-16T23:24:26+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2023-12-16T23:24:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=2db223a16d1559c152170fe2a602c827a5a95fb3'/>
<id>2db223a16d1559c152170fe2a602c827a5a95fb3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix incorrect register selection for `vpmov*2m` with `rex.r` set</title>
<updated>2023-12-16T23:05:08+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2023-12-16T23:05:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=d7d84b3be6c929ee9d1b425a82b7121936a7cd34'/>
<id>d7d84b3be6c929ee9d1b425a82b7121936a7cd34</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix incorrect register selection for `vpmovm2*` with `rex.b` set</title>
<updated>2023-12-16T22:47:02+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2023-12-16T22:47:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=2d303b6121e318e30572dd1134ddb0cf12bd0776'/>
<id>2d303b6121e318e30572dd1134ddb0cf12bd0776</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>abnormal memory sizes for keylocker instructions are not bugs</title>
<updated>2023-12-16T22:44:07+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2023-12-16T22:12:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=4d2e196e616162726c6211abc46c043078425322'/>
<id>4d2e196e616162726c6211abc46c043078425322</id>
<content type='text'>
new `does_not_decode_invalid_registers` fuzzer found other bugs! the
384-bit accesses for 128b keylocker instructions are an
otherwise-unknown size and had a memory size of `BUG`. they are not
bugs. give the memory size a real name.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
new `does_not_decode_invalid_registers` fuzzer found other bugs! the
384-bit accesses for 128b keylocker instructions are an
otherwise-unknown size and had a memory size of `BUG`. they are not
bugs. give the memory size a real name.
</pre>
</div>
</content>
</entry>
<entry>
<title>more RegSpec constructor validation, fix bug in x86_64 1b reg specs</title>
<updated>2023-12-16T01:26:59+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2023-12-16T01:26:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=003183a4ce31cfb718f4e4083d32c845352c2321'/>
<id>003183a4ce31cfb718f4e4083d32c845352c2321</id>
<content type='text'>
* the first four 1-byte registers, `al`, `cl`, `dl`, `bl`, can be
  constructed in two ways that produce "identical" `RegSpec` that are..
  not.
  e.g. `RegSpec::al() != Regspec::rb(0)` even though
  `RegSpec::al().name() == RegSpec::rb(0).name()`.

  this corrects the `rb` constructor at least, but instructions like
  `4830c0` and `30c0` still produce incompatible versions of `al`.

* also fix register numbering used explicit qword-sized RegSpec
  constructors, r12 and r13 used to produce r8 and r9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* the first four 1-byte registers, `al`, `cl`, `dl`, `bl`, can be
  constructed in two ways that produce "identical" `RegSpec` that are..
  not.
  e.g. `RegSpec::al() != Regspec::rb(0)` even though
  `RegSpec::al().name() == RegSpec::rb(0).name()`.

  this corrects the `rb` constructor at least, but instructions like
  `4830c0` and `30c0` still produce incompatible versions of `al`.

* also fix register numbering used explicit qword-sized RegSpec
  constructors, r12 and r13 used to produce r8 and r9
</pre>
</div>
</content>
</entry>
</feed>
