일반적으로 Microsoft ARM 어셈블러는 ARM 컴파일러 armasm 참조 가이드에 설명된 ARM 어셈블리 언어를 사용합니다. 그러나 일부 어셈블리 지시문의 Microsoft 구현은 ARM 어셈블리 지시문과 다릅니다. 이 문서에서는 차이점을 설명합니다.
ARM 어셈블리 지시문의 Microsoft 구현
AREAMicrosoft ARM 어셈블러는 다음
AREADATAREADONLYARMCODETHUMBCODEALIGNREADWRITENOINIT특성을ALIGN지원합니다.THUMBARM 컴파일러 armasm 참조 가이드에 설명된 대로 제외 및ARM작동합니다.Microsoft ARM 어셈블러
THUMB에서 섹션에 Thumb 코드가CODE포함되어 있으며 섹션의 기본값CODE임을 나타냅니다.ARM는 섹션에 ARM 코드가 포함되어 있음을 나타냅니다.ATTR지원되지 않습니다.
CODE16Microsoft ARM 어셈블러에서 허용하지 않는 UAL Thumb 이전 구문을 의미하므로 지원되지 않습니다.
THUMB대신 UAL 구문과 함께 지시문을 사용합니다.COMMON공통 영역에 대한 맞춤 사양은 지원되지 않습니다.
DCDO지원되지 않습니다.
DN, ,QNSN레지스터 별칭의 형식 또는 레인 사양은 지원되지 않습니다.
ENTRY지원되지 않습니다.
EQU정의된 기호의 형식 사양은 지원되지 않습니다.
EXPORT및GLOBAL다음 구문을 사용하여 내보내기를 지정합니다.
EXPORT|GLOBALsymbol{[type]}symbol은 내보낼 기호입니다.[type]지정된 경우 기호가 데이터를 가리키도록 나타내거나[FUNC]기호가 코드를 가리키도록 나타낼 수 있습니다[DATA].GLOBAL와EXPORT는 동의어입니다.EXPORTAS지원되지 않습니다.
FRAME지원되지 않습니다.
FUNCTION및PROC어셈블리 구문을 사용하면 프로시저에 대한 사용자 지정 호출 규칙을 지정할 수 있습니다. 호출자 저장 레지스터와 callee-save인 레지스터를 나열합니다. 그러나 Microsoft ARM 어셈블러는 구문을 수락하지만 레지스터 목록은 무시합니다. 어셈블러에서 생성되는 디버그 정보는 기본 호출 규칙만 지원합니다.
IMPORT및EXTERN다음 구문을 사용하여 가져오기를 지정합니다.
IMPORT|EXTERNsymbol{, WEAKalias{, TYPEt}}symbol는 가져올 기호의 이름입니다.지정된 경우
WEAKalias약한 외부임을symbol나타냅니다. 링크 타임에 정의를 찾을 수 없는 경우 해당 정의에 대한 모든 참조가 대신 에 바인딩됩니다alias.지정한
t경우TYPEt링커에서 해결symbol을 시도하는 방법을 나타냅니다. 이러한 값t은 다음과 같습니다.값 Description 1 에 대한 라이브러리를 symbol검색하지 마세요.2 에 대한 라이브러리를 symbol검색합니다.3 symbol는 (기본값)의alias별칭입니다.EXTERN는 현재 어셈블리에IMPORT참조가symbol있는 경우에만 가져오는 것을 제외하고 동의어입니다.MACRO변수를 사용하여 매크로의 조건 코드를 보유하는 것은 지원되지 않습니다. 매크로 매개 변수의 기본값은 지원되지 않습니다.
NOFP지원되지 않습니다.
OPT, ,TTLSUBTMicrosoft ARM 어셈블러는 목록을 생성하지 않으므로 지원되지 않습니다.
PRESERVE8지원되지 않습니다.
RELOCRELOC n는 명령 또는 데이터 정의 지시문만 따를 수 있습니다. 재배치할 수 있는 "익명 기호"는 없습니다.REQUIRE지원되지 않습니다.
REQUIRE8지원되지 않습니다.
THUMBXMicrosoft ARM 어셈블러는 Thumb-2EE 명령 집합을 지원하지 않으므로 지원되지 않습니다.