C9203005: Dollar Symbol ($) May Work Improperly in Inline Code

ID Number: Q82288

6.00 6.00a 6.00ax 7.00 | 6.00 6.00a

MS-DOS | OS/2

buglist6.00 buglist6.00a buglist6.00ax buglist7.00

Summary:

PROBLEM ID: C9203005

SYMPTOMS

In the Microsoft C Compiler versions 6.0, 6.0a, and 6.0ax, and the

C/C++ version 7.0 compiler the dollar sign symbol ($) when used as

the current location counter in inline assembly does not generate

correct values under some circumstances. The following source produces

bad code when compiled:

_asm LOOP $

Instead of looping back to the current location as it should, this

statement jumps to an unknown location in memory.

RESOLUTION

If the dollar symbol is causing unpredictable results in your

program, using a label instead at the intended location will resolve

the problem. The following source will resolve the problem listed

above:

_asm label01: LOOP label01

Although it is an infinite loop, the above line illustrates the

principles involved.

Also, compiling with the /qc (quick compile) option will cause the

correct code to be generated.

STATUS

Microsoft has confirmed this to be a problem in Microsoft C version

6.0, 6.0a, 6.0ax, and C/C++ version 7.0. We are researching this problem

and will post new information here as it becomes available.

Additional reference words: 6.00 6.00a 6.00ax 7.00