<feed xmlns='http://www.w3.org/2005/Atom'>
<title>yaxpeax-x86/src/long_mode, branch 0.0.15</title>
<subtitle>yaxpeax x86 decoder</subtitle>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/'/>
<entry>
<title>unused import</title>
<updated>2020-08-09T09:33:25+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2020-08-09T09:33:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=77e59d39e3f6adda7713ae5558ac51b770369d58'/>
<id>77e59d39e3f6adda7713ae5558ac51b770369d58</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>no more incomplete decoder for vex instructions</title>
<updated>2020-08-09T09:33:05+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2020-08-09T09:33:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=c3257be8b0b5c9f6f5c1c2ad6d48dfa726ec6413'/>
<id>c3257be8b0b5c9f6f5c1c2ad6d48dfa726ec6413</id>
<content type='text'>
for now
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
for now
</pre>
</div>
</content>
</entry>
<entry>
<title>support four-reg operand forms, new tests</title>
<updated>2020-08-09T09:07:52+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2020-08-09T09:07:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=4e61dc5e3ea882022e815814ed324fa7515923a6'/>
<id>4e61dc5e3ea882022e815814ed324fa7515923a6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>avoid a bunch of checks in the likely display path</title>
<updated>2020-08-09T08:39:01+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2020-08-09T07:47:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=e433752d59c1bb790c2de86f2b5e327de8de793d'/>
<id>e433752d59c1bb790c2de86f2b5e327de8de793d</id>
<content type='text'>
rep_any will get speculated `false` quite quickly, whereas checking if
the opcode is a string instruction will be costly no matter what. in the
rare case rep_any is true, i don't care how costly displaying the
instruction is - string instructions are relatively rare, and rep movs
is typically not more than one instance when it shows up.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
rep_any will get speculated `false` quite quickly, whereas checking if
the opcode is a string instruction will be costly no matter what. in the
rare case rep_any is true, i don't care how costly displaying the
instruction is - string instructions are relatively rare, and rep movs
is typically not more than one instance when it shows up.
</pre>
</div>
</content>
</entry>
<entry>
<title>display opt, aykm</title>
<updated>2020-08-09T08:39:01+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2020-08-09T07:32:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=2bf6df7ff4101b4e7cf14807b5e9def85d92e1cd'/>
<id>2bf6df7ff4101b4e7cf14807b5e9def85d92e1cd</id>
<content type='text'>
the arms of the match in regspec_label referenced tables that were not
const. consequently, they would be rebuilt when reached, every time the
match is incanted. this holds through even when regspec_label is
inlined.

each arm could be a const array for a small and easy change, but to
avoid the indirect dispatch on spec.bank i've reorganized register names
into a single const array and selected values for `RegisterBank` such
that indices into that array can be formed.

for my next trick, i may make `REG_NAMES` a `*const u8`, with indices
  picking offsets into the table - 8-byte offsets might do? this should
  compact down size a little more by removing a pointer and size qword
  for each string.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
the arms of the match in regspec_label referenced tables that were not
const. consequently, they would be rebuilt when reached, every time the
match is incanted. this holds through even when regspec_label is
inlined.

each arm could be a const array for a small and easy change, but to
avoid the indirect dispatch on spec.bank i've reorganized register names
into a single const array and selected values for `RegisterBank` such
that indices into that array can be formed.

for my next trick, i may make `REG_NAMES` a `*const u8`, with indices
  picking offsets into the table - 8-byte offsets might do? this should
  compact down size a little more by removing a pointer and size qword
  for each string.
</pre>
</div>
</content>
</entry>
<entry>
<title>significantly reorganize what operands are unlikely</title>
<updated>2020-08-09T08:39:01+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2020-08-09T07:16:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=a3f848e3426175d9ac782c19de4855de260d76a9'/>
<id>a3f848e3426175d9ac782c19de4855de260d76a9</id>
<content type='text'>
likely operands are now also required to have contiguous special cases
0..31. this is to avoid generating a massively sparse jump table for no
reason twice - once for unlikely_operands is quite enough as-is.

this will undoubtedly be a wildly annoying maintenance burden. if this
pans out (initial expiriments suggest it might) then maybe a macro will
do...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
likely operands are now also required to have contiguous special cases
0..31. this is to avoid generating a massively sparse jump table for no
reason twice - once for unlikely_operands is quite enough as-is.

this will undoubtedly be a wildly annoying maintenance burden. if this
pans out (initial expiriments suggest it might) then maybe a macro will
do...
</pre>
</div>
</content>
</entry>
<entry>
<title>those operands are unlikely</title>
<updated>2020-08-09T08:39:01+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2020-08-09T06:19:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=c1586163d7aafd3db8799c0883208e749d63e38e'/>
<id>c1586163d7aafd3db8799c0883208e749d63e38e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "speculative code motion"</title>
<updated>2020-08-09T08:39:01+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2020-08-09T06:16:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=a3281056c07a325990c6b679ccca9d120f4651eb'/>
<id>a3281056c07a325990c6b679ccca9d120f4651eb</id>
<content type='text'>
This reverts commit 21cc850afc108c147871c70240eda62ad13f34e0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 21cc850afc108c147871c70240eda62ad13f34e0.
</pre>
</div>
</content>
</entry>
<entry>
<title>speculative code motion</title>
<updated>2020-08-09T08:39:01+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2020-08-09T06:14:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=eb1aba27bf244986820bdac61674fa5302ed1abb'/>
<id>eb1aba27bf244986820bdac61674fa5302ed1abb</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "bad idea"</title>
<updated>2020-08-09T08:39:01+00:00</updated>
<author>
<name>iximeow</name>
<email>me@iximeow.net</email>
</author>
<published>2020-08-09T06:06:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.iximeow.net/yaxpeax-x86/commit/?id=c9ef98a4a703e202994ae73f43d7bb8e999f879d'/>
<id>c9ef98a4a703e202994ae73f43d7bb8e999f879d</id>
<content type='text'>
This reverts commit 23cbcb390c723c4c39113ce93ccff89308b6623c.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 23cbcb390c723c4c39113ce93ccff89308b6623c.
</pre>
</div>
</content>
</entry>
</feed>
