Hi all,

Here is a draft of a new complete x86 and x87 reference, made out by me. It should be useful as general opcode and instruction reference. It is intended originally as a quick and complete reference for coding an advanced disassembler.
It should be quicker than, for instance, Intel manuals, because it should cointain (almost) all important informations about an opcode or an instruction in one row.
It should also clearly present the differencies between x86-32 and x86-64 instruction set.

When it will be complete, I'm planning to release it in public domain, and therefore I'd like to discuss it in this draft stage. Your comments and corrections are welcomed.

The document is attached. After download, change its extension to .htm.
It can be seen also on-line here: http://mazegen.webpark.cz/newopcodes04a.htm
The attachment is always synchronized with the on-line version.
(Note that the hosting made a few dirty tricks with the html source, but it is still well browsable.)

In this draft I tried to show the most important features of the reference. I don't plan any surprising news at the moment.

As for media, it is intended for both on-line, off-line and printable version. I tried to print this draft and it seems to be well readable.

As for blanks rows, here are missing opcodes that will be added in the final version.

Not implemented features yet:
The following feature was added in revision 0.4a:

The printable version could be formatted differently (white backgroud etc.). It would be obtainable using a hypertext reference, which will make printable version using different CSS.


Notes about browsers are inside the reference from revision 0.4a.

As for browsers:
I recommend Firefox 1.5 or Opera 8.52.
Internet Explorer 6.0 doesn't support some features and therefore the table doesn't contain any thick borders. Hopefully, new version 7.0 will be better.


As for HTML code:
The document validates as HTML 4.01 Strict and also as CSS 2. It is as simple as possible. I wrote it by hand. Note I'm not HTML coder.
The table is formatted using <table> element. Each opcode and opcode extension uses <tbody> element. Each row uses <tr> element.
Attachments:
Posted on 2006-03-01 03:43:02 by MazeGen
I've uploaded fixed version:

Prefixes FS and GS were introduced in 80386. Fixed.

Added the source of information about POP CS (8086 only).
Posted on 2006-03-01 08:53:51 by MazeGen
New revision uploaded. Added and fixed a few things.
Posted on 2006-03-02 05:29:47 by MazeGen

Internet Explorer 6.0 doesn't support some features and therefore the table doesn't contain any thick borders. Hopefully, new version 7.0 will be better.


I've got MSIE6.0, Mozilla Firefox, & Netscape7 for testing web design. MSIE6.0 doesn't support most of the features of CSS2+ but you aren't using any of those features. Page looks the same in all of them mate :) Nice job btw, and I really like how the structure of the table is layed out.

Regards,
Bryant Keller
Posted on 2006-03-02 12:08:49 by Synfire
Hi Synfire, thanks for your support.

I use IE version 6.0.2900.2180.xpsp_sp2_rtm.040803-2158 and it doesn't support border-width feature. My winxp is not updated, so the fix might come with some of the updates.

According to my tests with http://jigsaw.w3.org/css-validator/, border-collapse feature comes with CSS2.

Stay tuned, new feature is coming 8)
Posted on 2006-03-02 12:38:27 by MazeGen
Original post edited, new revision released: Very nice browsing feature - hover to highlight the row :) (works only with Firefox, but the solution is valid and simple).
Posted on 2006-03-03 03:15:53 by MazeGen

Hi Synfire, thanks for your support.

I use IE version 6.0.2900.2180.xpsp_sp2_rtm.040803-2158 and it doesn't support border-width feature. My winxp is not updated, so the fix might come with some of the updates.

According to my tests with http://jigsaw.w3.org/css-validator/, border-collapse feature comes with CSS2.

Stay tuned, new feature is coming 8)


You're right, it doesn't support border-width, but it DOES support shorthand border with argument two as the width.


table.thickborder { border: solid 5px black; }
table.thinboarder { border: solid 1px black; }


The shorthand support has been around since CSS1 and MSIE has supported it since IE4 ;)
Posted on 2006-03-13 23:16:31 by Synfire
Thanks for the info, Synfire, but I can't get it working as I want.

When I use:

table.thinborder {border: solid 2px black;}
<table cellpadding="2" class="thickborder">


it works, but I need to use it with thead and tbody and anything of the following doesn't work:


table.thickborder {border: solid 3px black;}
table.thinborder {border: solid 2px black;}
<thead class="thickborder"> <!-- does not work -->
<tbody class="thinborder"> <!-- does not work -->

(this is how it is in the reference below)



thead.thickborder {border: solid 3px black;}
tbody.thinborder {border: solid 2px black;}
<thead class="thickborder"> <!-- does not work -->
<tbody class="thinborder"> <!-- does not work -->


You could look at http://mazegen.webpark.cz/newopcodes03b.htm (with IE; thead and first two tbody tags are marked with class)

Is there any way how to apply it to tbody and thead?
Posted on 2006-03-15 12:50:52 by MazeGen
Original post edited, new revision released.

The reference is now divided among main parts. For navigation, there are references to these parts also at the beginning.
Main new feature is complete support for printing, with how-to-print instructions and notes. In order to get nice printer layout, any opcode extension gets its own row (see opcodes 80, 82, C0, D8, DB, 0F00, and 0F01). It seems to be better readable now, at least for me. Any part (and also notes below the tables) starts at new page.

And I stop announcements in this thread until there is some more interest in this reference.
Posted on 2006-04-06 11:03:09 by MazeGen
MazeGen, I haven't spotted this thread until now - but I'm very interested! I will probably be writing my own / adapting (heavily) an existing disassembly engine in the near future for various purposes, and a good (and bugfree, unlike intel's!) reference would be great!
Posted on 2006-04-06 13:31:00 by f0dder
This reference could be your primary source then :)

It seems the basic layout is finished. When there will be no other suggestions, I'll complete it in one month.

And yes, this subforum is probably poorly visited...
Posted on 2006-04-06 13:39:21 by MazeGen
Sounds very good!

Btw, rather than attaching the file, would it be possible for you to have it hosted somewhere else and update the URL? I've sometimes experienced caching problems with attachments on this board :(
Posted on 2006-04-06 13:44:28 by f0dder
The URL gets updated whenever new version is attached, don't worry.

The only difference is that the on-line version is a bit harmed by my horrible hosting, but it doesn't matter for now.
Posted on 2006-04-06 15:05:52 by MazeGen

The URL gets updated whenever new version is attached, don't worry.

The only difference is that the on-line version is a bit harmed by my horrible hosting, but it doesn't matter for now.


You could put it in a .zip then, if your host allows it... but well, I guess it works as it is now :)
Posted on 2006-04-06 16:18:00 by f0dder

...I'll complete it in one month.


FYI, I probably won't. I finally decided to rewrite the reference to XML, because I have more plans with it now. I wouldn't rewrite final version, because it would be much more complicated.

I'll transform it also to HTML so the announced version will be available, don't worry.
Posted on 2006-04-24 06:33:37 by MazeGen

FYI, I probably won't. I finally decided to rewrite the reference to XML, because I have more plans with it now. I wouldn't rewrite final version, because it would be much more complicated.

Sounds good - hopefully with a schema that's easy to parse and extract interesting things from :)


I'll transform it also to HTML so the announced version will be available, don't worry.

Hopefully an automatic transform and not painstaking handwrite :)
Posted on 2006-04-24 10:30:34 by f0dder

Sounds good - hopefully with a schema that's easy to parse and extract interesting things from :)


Yeah, the schema will be basically the same like the HTML structure.


Hopefully an automatic transform and not painstaking handwrite :)


Yeah, I meant automatic XSL transformation 8) Handwrite would kill me, the final document will be quite large.

From the user's point of view, such transformations will be very useful - one can extract only needed informations without unnecessary columns.
Posted on 2006-04-24 11:00:07 by MazeGen