News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

cmovnz not accepted under .586

Started by JFG, September 30, 2005, 10:10:10 PM

Previous topic - Next topic

JFG

Howdy.

I'm using MASM v 6.14, and I'm feeding it a code file with .586 specified at the top for the CPU mode (along with .mmx and .xmm a bit further down), and repeated instances of this line of code:

  cmovnz   eax, edx

For every instance it then complains with

  IO.asm(163) : error A2085: instruction or register not accepted in current CPU mode

as for the first instance of that line of code.  Can somebody explain why?

Farabi

Try to use .686 because cmovxx instruction is new.
Those who had universe knowledges can control the world by a micro processor.
http://www.wix.com/farabio/firstpage

"Etos siperi elegi"

gabor

...or try to use newer MASM. MASM 8.2 is the latest available:

http://www.masm32.com/masmdl.htm

Don't forget to download the Service Pack 2 as well. (it is at the bottom of the page)

May I have a question too? Can you give a simple tip where to look for these cxxx type 585 instructions? Maybe in intels manuals?

Greets, Gábor


MazeGen

CMOVcc instructions were really introduced in Pentium Pro, what means 686 in MASM.

Gábor,
MASM32 package always contains ML version 6.14, regardless of the package version.

For me, the best reference is always Intel Instruction Set Manual.

Farabi

Sorry for my misinformation. I never use that instruction.
Those who had universe knowledges can control the world by a micro processor.
http://www.wix.com/farabio/firstpage

"Etos siperi elegi"

JFG

Thanks for the info.  I thought I had seen a sample program though with the .586 directive and use of the cmovxx instructions in it.  That's what got me thinking that it should be supported under that mode, although indeed, there wasn't that much need for those instructions in regular Pentiums.  It was the 12-stage pipelines and the need to flush and refill them on mispredicted conditional jumps that established a real need for the cmovxx instructions, as a matter of optimization, to avoid having to do that slow flushing and refilling.  (Oh, why don't those Intel people just make an overbloated 10,000-stage 10,000-pipeline 4-billion-instruction VLISC (Very Long Instruction Set Computing) processor already that's actually slower than their original 486?  They could attract herds of ignorant investors just by sticking in there single-instruction hardware acceleration for even all the most obscure and pointless algorithms.  They're already headed in that direction anyway!)  That's good information to have 'cause it should spare some frustration.  But anyway, would anybody happen to know where there's more up-to-date documentation for MASM?  How is it that some people there happen to know about the .586, .586P, etc. directives, and a whole lot of other information not in the MASM32 Help program?  Is Microsoft publishing this information somewhere?  Can it be found on Microsoft's websites somewhere?