Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Generally, the Microsoft ARM assembler uses the ARM assembly language, which is documented in the ARM Compiler armasm Reference Guide. However, the Microsoft implementations of some assembly directives differ from the ARM assembly directives. This article explains the differences.
Microsoft Implementations of ARM Assembly Directives
AREAThe Microsoft ARM assembler supports these
AREAattributes:ALIGN,CODE,CODEALIGN,DATA,NOINIT,READONLY,READWRITE,THUMB,ARM.All except
THUMBandARMwork as documented in the ARM Compiler armasm Reference Guide.In the Microsoft ARM assembler,
THUMBindicates that aCODEsection contains Thumb code, and is the default forCODEsections.ARMindicates that the section contains ARM code.ATTRNot supported.
CODE16Not supported because it implies pre-UAL Thumb syntax, which the Microsoft ARM assembler doesn't allow. Use the
THUMBdirective instead, along with UAL syntax.COMMONSpecification of an alignment for the common region isn't supported.
DCDONot supported.
DN,QN,SNSpecification of a type or a lane on the register alias isn't supported.
ENTRYNot supported.
EQUSpecification of a type for the defined symbol isn't supported.
EXPORTandGLOBALSpecifies exports using this syntax:
EXPORT|GLOBALsymbol{[type]}symbolis the symbol to be exported.[type], if specified, can be either[DATA]to indicate that the symbol points to data or[FUNC]to indicate that the symbol points to code.GLOBALis a synonym forEXPORT.EXPORTASNot supported.
FRAMENot supported.
FUNCTIONandPROCThe assembly syntax lets you specify a custom calling convention on procedures: you list the registers that are caller-save, and the ones that are callee-save. However, while the Microsoft ARM assembler accepts the syntax, it ignores the register lists. The debug information that's produced by the assembler supports only the default calling convention.
IMPORTandEXTERNSpecifies imports using this syntax:
IMPORT|EXTERNsymbol{, WEAKalias{, TYPEt}}symbolis the name of the symbol to be imported.If
WEAKaliasis specified, it indicates thatsymbolis a weak external. If a definition for it isn't found at link time, then all references to it bind instead toalias.If
TYPEtis specified, thentindicates how the linker should attempt to resolvesymbol. These values fortare possible:Value Description 1 Don't search libraries for symbol.2 Search libraries for symbol.3 symbolis an alias foralias(default).EXTERNis a synonym forIMPORT, except thatsymbolis imported only if there are references to it in the current assembly.MACROThe use of a variable to hold the condition code of a macro isn't supported. Default values for macro parameters aren't supported.
NOFPNot supported.
OPT,TTL,SUBTNot supported, because the Microsoft ARM assembler doesn't produce listings.
PRESERVE8Not supported.
RELOCRELOC ncan only follow an instruction or a data definition directive. There's no "anonymous symbol" that can be relocated.REQUIRENot supported.
REQUIRE8Not supported.
THUMBXNot supported, because the Microsoft ARM assembler doesn't support the Thumb-2EE instruction set.
See also
ARM Assembler Command-Line Reference
ARM Assembler Diagnostic Messages