Using C or C++ Symbols in __asm Blocks
The latest version of this topic can be found at Using C or C++ Symbols in __asm Blocks.
Microsoft Specific
An __asm
block can refer to any C or C++ symbol in scope where the block appears. (C and C++ symbols are variable names, function names, and labels; that is, names that aren't symbolic constants or enum
members. You cannot call C++ member functions.)
A few restrictions apply to the use of C and C++ symbols:
Each assembly-language statement can contain only one C or C++ symbol. Multiple symbols can appear in the same assembly instruction only with LENGTH, TYPE, and SIZE expressions.
Functions referenced in an
__asm
block must be declared (prototyped) earlier in the program. Otherwise, the compiler cannot distinguish between function names and labels in the__asm
block.An
__asm
block cannot use any C or C++ symbols with the same spelling as MASM reserved words (regardless of case). MASM reserved words include instruction names such as PUSH and register names such as SI.Structure and union tags are not recognized in
__asm
blocks.
END Microsoft Specific