scientica, there is no SIB
00 000 000 - is byte moder/m
00 - mod = mem operand in m/r field specified by reg pointer only
000 - reg operand
000 - reg as memory pointer operand.

Byte SIB is extention of m/r field, presence of
byte sib is specifyed if m/r field has value 100.
8B with sib present would look in binary like
1000 10dw :** *** 100 :ss iii bbb
where ** *** any bits except for 11 as the greates two.
and ss iii bbb - bits of sib.
Byte sib is present only when byte modr/m is present too.
Thus the least size of opcode with sib would be 3 bytes:
At least one byte for code block
One byte for modr/m
And one byte for sib.
Your second post for realvampier looks even better than the first.
It's good to have you here :)

:o ModR/M not SIB, you're right I mixed them up in my mind (I should have re-read the post before falling asleep, {/me studying for a physics test}).

Thanks Svin! I'm glad to be around and to have you as my opcode teacher/master. :) :)
Posted on 2003-03-05 23:47:10 by scientica
Thanks Svin! I'm glad to be around and to have you as my opcode teacher/master.

I agreed. :alright:
Posted on 2003-03-06 01:13:14 by realvampire
hi the Svin,
iv got a prob with the prefix doesn't seems to be in english, i loaded it up and it has gibrish text (weird chars)..was that in russian (no fonts here)..?
mabye it can be fixed :confused:
Posted on 2003-03-13 19:07:43 by wizzra
Of course it's in russian.
And you should fix it -it's the task.
Read explonation about prefixes, analyze source and replace russian strings with english ones - it's a task for better memorizing prefix values and descriptions - nobody was able to do the task yet, you could be the first.
Posted on 2003-03-13 19:24:13 by The Svin
ahh, i see now, didn't know that was your intention! sorry :)
keep up the good work mate, irs awsome.
in a night i doubled my knowledge ofo opcodes from ur tuts :alright:
weird enough, your source doesn't seems to compile under masm (or i need to use fasm/tasm?)..
problem that it doesn't recognize SendMessageLVM and mm0.
Posted on 2003-03-14 01:38:37 by wizzra
Change it to SendMessage and mm(0)
or add line
SendMessageLVM equ SendMessage
the same about mmx registers.
SendMessageLVM was a way with RadAsm to use
lookup for constants for functions.
SendMessage is havinly used to call different window styles functions, for each style there is common to
all functions (Messages) and group of functions that relates only to it.
To look up for those functions in RadAsm I created alias
names for SendMessage (SendMessageLVM,SendMessageED,SendMessageTV etc.)
All they made in a way
SendMessage*** equ SendMessage
This allowed me to include in masmAPIconst.api
lines like:

So I can look up for window message functions used
with SendMessage, and for every window style lookup
invokes messages for only particular group.
Posted on 2003-03-14 03:49:27 by The Svin
heya. yeah now it compiles OK, thnx
thus when running the exe it fails on leading its resource:

77E3EA56 FF15 8439E677 CALL NEAR DWORD PTR DS:[77E63984] ; KERNEL32.FindResourceExA

there for it quits the exe with exitprocess.
Posted on 2003-03-14 04:12:48 by wizzra
Then you haven't compiled rc files or didn't include their
object in linking.
It's in RadAsm project, so I didn't suply make file.
Those projects has lines for making inside itself when used in RadAsm.
Make sure that you compiled rc file and include it in linking.
Posted on 2003-03-14 04:34:38 by The Svin
ok, great, got it to work now
compiled under masm8.

i'll put the prefix masm fixed as attachment.
Posted on 2003-03-14 04:50:49 by wizzra