• Cでは予約語では無い。ただし、多くのシステムでは処理系定義であると言及。(informative)
  • C++では予約語であり、その構文を定義する。その意味は処理系定義と定める。(normative)


(C11のFCDである JTC1/SC22/WG14 N1570 を調査)
C言語ではasmキーワードは規格定義の本体ではなく、Annex J (informative) Portability issuesにて言及があるのみ。6.4.1 Keywordsでは、asmキーワードを予約語として定義しない。

J.5 Common extensions
The following extensions are widely used in many systems, but are not portable to all implementations. The inclusion of any extension that may cause a strictly conforming program to become invalid renders an implementation nonconforming.

J.5.10 The asm keyword
The asm keyword may be used to insert assembly language directly into the translator output (6.8). The most common implementation is via a statement of the form:
 asm ( character-string-literal );


C++11のFDISである JTC1/SC22/WG21 N3290 を調査*1

2.12 Keywords
The identifiers shown in Table 4 are reserved for use as keywords (that is, they are unconditionally treated as keywords in phase 7) except in an attribute-token (7.6.1) [ Note: The export keyword is unused but is reserved for future use. -- end note ]:
Table 4 -- Keywords
(表4に asm が記載されている)

7.4 The asm declaration [dcl.asm]
1 An asm declaration has the form asm-definition:
 asm ( string-literal ) ;
The asm declaration is conditionally-supported; its meaning is implementation-defined. [ Note: Typically it is used to pass information through the implementation to an assembler. -- end note ]

*1:ISが発行されるとFDISはアクセス不可となるルールだそう。1つ前のWDである N3242 は公開されている。