No0b question here. All the tutorials I've done use 'option casemap :none'. What are the alternatives to :none? And why and where would I use them? Also what other kinds of calling conventions are there besides stdcall?
Posted on 2002-08-28 08:15:07 by devilmech
if you do not want your label names to be case sensitive then use one of the other values to casemap.
I would advise against this though.
Option casemap:link

Here's the masm reference at MSDN. It's not really complete but it's better than nothing.
MASM reference

Posted on 2002-08-28 08:46:57 by MArtial_Code
Ah, thanks. Another bit of knowledge in my journey to the top of the heap. Or stack if you prefer
Posted on 2002-08-28 09:04:13 by devilmech

Its mainly because win32 API functions are case sensitive names and without specifying

casemap : none

You cannot properly address the functions you need. DOS assembler was generally not case sensitive so it was not needed as you were calling interrupts most of the time but for any case sensitive work, its required otherwise you get case errors with names.

Posted on 2002-08-28 09:40:03 by hutch--
That totally puts it in perspective. Now I get it. Without retaining the case of the characters, Win API programming is impossible.
Mwwwwwwwwwahhhahahahahahaha!!!!!!!! Soon software companies will cringe at my name. After of course, I ask a few thousand more questions and get the answers.

My next question, since I don't want to clutter up the board with a lot of topics, is: I've seen a lot of sample code with .386 at the top. I assume this is to make it compatible with old computers. Is this the case? And where can I find more info on this. M$'s MASM reference is woefully incomplete, and I don't know a whole lot of other places to look for reference
Posted on 2002-08-28 10:27:54 by devilmech
It specifies what instructions you can use. With .386 you can only use 386 instructions, with .486 you can also use instructions added in the 486 and so on. I believe MASM supports up to .586. Also, to support mmx you have to add .mmx and you use something similar for other extended instructions sets like XMM.

This is all in the docs though.
Posted on 2002-08-28 10:38:05 by Qweerdy
Hmmm. what docs would those be? I've looked through all the help files that came with MASM, but I can't find this
Posted on 2002-08-28 10:42:54 by devilmech
there alot of docs to look into ...
if you are looking for masm docs take alook at this thread
the last post has some good links ...
Posted on 2002-08-28 11:57:09 by code1101
.386 is the minimum needed to support 32 bit instructions. :)
Posted on 2002-08-28 17:16:45 by S/390
Ok, I've done all the reading my brain can handle, and I think I understand a little bit. Tell me if I'm wrong. If I didn't place .386 at the beginning of my code, I wouldn't be able to use the extended registers like eax. Correct? My question now, is what does .486 and the like add to the mix?
Posted on 2002-08-29 02:21:44 by devilmech
If I got it right, then the other entries (.486, .486p, .586 etc) enable you to use the new instructions, these processors brought to our life.

MMX for example :)

Greets YaWNS
Posted on 2002-08-29 04:29:18 by YaWNS
Posted on 2002-08-29 04:42:45 by bazik

Posted on 2002-08-29 04:43:57 by YaWNS


:stupid: :)

eXtended MultiMedia System.

But I know you are kidding :)
Posted on 2002-08-29 04:45:00 by bazik
There are lots of instructions that have been added over the years...
BSWAP is one that was added in the 486 for instance.

They go up to .686 in the current version of MASM.
In .686 for instance you've got the CMOVxx instructions.

This selection also effects the timing listings that you can produce with the /Sc option.
The execution length of instructions changed with the different architectures, and so will effect the timing listing produced. Note there is no timings listing with .686 as it becomes horribly unreliable, what with its out of order execution and what not.

As others have said, to enable the MMX instruction, and SSE instructions, you need to specify them as .MMX and .XMM. This is because you could target say a P3 / Athlon combination that would therefore differ in their support for .XMM, and so if you try to use SSE stuff in there then the assembler will fail with unknown instructions (similarly, there were Pentiums, and Pentium MMXs which were essentially the same core, just one had the extra instructions tacked on...).

Posted on 2002-08-29 05:58:47 by Mirno