flat assembler
Message board for the users of flat assembler.
![]() Goto page 1, 2 Next |
Author |
|
MazeGen 01 Mar 2006, 09:42
News: This project was reborn, refer to http://ref.x86asm.net
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: outdated link removed (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 version 0.4a: MazeGen originally wrote:
Notes about browsers are inside the reference from version 0.4a. MazeGen originally wrote:
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.
Last edited by MazeGen on 05 May 2008, 12:32; edited 6 times in total |
|||||||||||
![]() |
|
Tomasz Grysztar 01 Mar 2006, 14:01
revolution wrote: I am sceptical about whether it actually works in the 8086. Nevertheless, it does. ![]() |
|||
![]() |
|
vid 01 Mar 2006, 14:39
Tomasz: have YOU tried it?
|
|||
![]() |
|
MazeGen 01 Mar 2006, 14:47
I've uploaded fixed version.
As for FS and GS: yeah, it's a bug, but they are 386+. Fixed. As for POP CS, I have added it for fun, but it is documented in opcode.lst by PHG. I remember we discuss it already in some thread in Compiler internals subforum. I have added the source into the document. |
|||
![]() |
|
vid 01 Mar 2006, 15:05
good thing, i was missing good fast description WITH FLAGS. thanks
|
|||
![]() |
|
Reverend 01 Mar 2006, 15:29
Nice thing but you have to browse through whole description at first to get the idea what is what. But it's a good work. Some time ago, when I was coding my Length Disassembly Engine I was looking for something similar and ended up jumping from AMD and Intel manuals
![]() |
|||
![]() |
|
MazeGen 01 Mar 2006, 15:41
Reverend wrote: Nice thing but you have to browse through whole description at first to get the idea what is what. Yes, you have to get familiar with it first. The columns have to be compressed as far as possible, otherwise the row lenght would be too long and the document would get unprintable (and unreadable). Reverend wrote: Some time ago, when I was coding my Length Disassembly Engine I was looking for something similar and ended up jumping from AMD and Intel manuals Exactly: 1. These manuals are huge. 2. The Opcode Map is too brief. 3. The Instruction Reference is too detailed ![]() And thanks for your kind words, guys ![]() |
|||
![]() |
|
vid 01 Mar 2006, 22:28
acording to what does bitwise instructions (XOR, OR) set carry or overflow flag? is it just original value compared to result?
btw, shouldn't this be in Main section? I am not sure if this can be called "project", it's done anyway. |
|||
![]() |
|
MazeGen 02 Mar 2006, 06:26
That's exactly the right quick question for the reference. Just look, for instance, at OR mnemonic:
Code: tested f modif f def f undef f f values o..szapc o..sz.pc .....a.. o......c You'll see that f values column contains o......c, what means 0F and CF are always set to some specific value. These flags are lower-case, what means these are always set to zero. I'd like to see it in the Main subforum because of more readers. And the project is not done, I'm still willing to modify it according to your comments and suggestions. |
|||
![]() |
|
vid 02 Mar 2006, 08:40
oh.. "undefined" flag means that flag value after instruction cannot be determined?
|
|||
![]() |
|
Madis731 02 Mar 2006, 08:42
Yeah, too bad it can be viewed only at 1600x...
I tried on 1152x... but I had to smallen (Ctrl+"-") two times to fit the width. There are two #r_note1 and "instruction extensions opcodes" goes no-where ![]() btw, what does "<img src="newopcodes01a_files/a.gif" alt="" align="right" height="1" width="1">" do? Couldn't you make the "description, notes" two lines or something so it would grow in length not width. Maybe replace binary=bin, decimal=dec, general=gen, logical=log, etc. With "po" 06 and 07 you have two multilined rows, you can make 41 multiline too and the 0F 10..12. Otherwise its great and I'm out of ideas ![]() Maybe you can add some CSS-style to the tables so you can hover and highlight the rows. Oh, you can put a <title> tag in the notes and it will be displayed like the image shows: I'll also post the version with <title> tags: EDIT: I deleted the old version to preserve space
Last edited by Madis731 on 08 Apr 2006, 21:29; edited 1 time in total |
||||||||||
![]() |
|
MazeGen 02 Mar 2006, 10:35
vid wrote: oh.. "undefined" flag means that flag value after instruction cannot be determined? Exactly. (in case of OR instruction and Adjust Flag it is nothing weird though) |
|||
![]() |
|
MazeGen 02 Mar 2006, 11:21
Hi Madis, thanks for your comments
![]() Madis731 wrote: Yeah, too bad it can be viewed only at 1600x... I, personally, use 1024x768. I start from the fact that for most of the users is the description almost needless, because the reference is not intended for beginners. Using 1024x768, you can see all but the description. And yes, one can always scale it down in the browser. Madis731 wrote: There are two #r_note1 and "instruction extensions opcodes" goes no-where Thanks, fixed. Madis731 wrote: btw, what does "<img src="newopcodes01a_files/a.gif" alt="" align="right" height="1" width="1">" do? This weird, not valid line is added by the hosting probably because of a counter or something ![]() ![]() Therefore you should always use the attachment. Madis731 wrote: Couldn't you make the "description, notes" two lines or something so it would grow in length not width. I don't want do alocate more than one row for one opcode, only in cases when it is neccessary, because it will be too long. As I said, the description is rather marginal. Madis731 wrote: With "po" 06 and 07 you have two multilined rows I changed it to single row now. Madis731 wrote: you can make 41 multiline too Why? Madis731 wrote: Maybe replace binary=bin, decimal=dec, general=gen, logical=log, etc. Your right. I have made the Main Group six-char (I can't shorten x87FPU more): Code: prefix - pref general - gen I was thinking about it, but how to shorten the following names and let the name still readable at the same time? From Sub-group: Code: shftrot simdint mxcsrsm pcksclr From Sub-sub-group: Code: shunpck Madis731 wrote: Maybe you can add some CSS-style to the tables so you can hover and highlight the rows. Yes, I'd like to add it, you mean something like this? Madis731 wrote: Oh, you can put a <title> tag in the notes and it will be displayed like the image shows: Good idea, added. I'll update the attachment and the on-line version in a few minutes. |
|||
![]() |
|
Madis731 02 Mar 2006, 11:39
Mazegen wrote:
Yeah, exactly. It doesn't matter weather its darker or brighter - just different ![]() |
|||
![]() |
|
MazeGen 03 Mar 2006, 09:19
Original post edited, new revision released: Very nice browsing feature - hover to highlight the row
![]() (Works only with Firefox, but the solution is valid. Opera probably contains some bug.) |
|||
![]() |
|
revolution 03 Mar 2006, 11:43
Highlights don't work with IE6.0 either.
|
|||
![]() |
|
Madis731 03 Mar 2006, 11:58
Works under Mozilla AS 1.7.12, Seamonkey 1.0, IE 7.0 beta 2 (extremely slow), Firefox 1.5.0.1.
Tables don't work under IE6 as you mentioned - maybe they have broken CSS ![]() I don't have Opera, I have no idea why doesn't it support CSS2 - did you try the latest? |
|||
![]() |
|
MazeGen 03 Mar 2006, 14:29
revolution:
I know, but it shouldn't be so difficult to open the reference in Firefox, even if you don't have Firefox as a default browser. I hope IE 7.0 (coming soon) will be useful (and not slow). Madis: IE 6.0 lacks very many CSS features. I use much slower computer than you in these days and my IE 6.0 loads it as quick as Firefox. As for Opera, I have the latest version (8.52) and it has nice CSS support, but there is probably some bug with the hover pseudoclass ![]() |
|||
![]() |
|
MazeGen 06 Apr 2006, 15:52
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. |
|||
![]() |
|
Goto page 1, 2 Next < Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.