Microsoft KB Archive/79159

= FIX: Incorrect Code Generated If Operand Is [esp][esp] =

Article ID: 79159

Article Last Modified on 11/19/2003

-

APPLIES TO


 * Microsoft Macro Assembler 6.0 Standard Edition

-



This article was previously published under Q79159



SYMPTOMS
In the Microsoft Macro Assembler (MASM) version 6.0, incorrect code is generated for instructions using operand [esp][esp], such as the following instructions:

lea esi, [esp][esp]

mov esi, [esp][esp]



CAUSE
The operand [esp][esp] is not supported in the Intel instruction set. An error such as:

error A2029 : multiple base registers not allowed

should have been generated by the assembler.



STATUS
Microsoft has confirmed this to be a problem in MASM version 6.0. This problem was corrected in MASM version 6.0a.



MORE INFORMATION
A listing file from the following program will show that the instruction lea esi, [esp][esp] is encoded as 8D 34 24. This is incorrect.

Sample Code
; Assembler options needed: none

.386 .MODEL flat .STACK 4096

CODE32 SEGMENT PUBLIC USE32 main PROC near lea esi, [esp][esp]     ; An error A2029 should be generated. ret main ENDP CODE32 ENDS

END

Additional query words: 6.00 buglist6.00 fixlist6.00a

Keywords: kbfix KB79159

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.