|
|
The syntactic descriptions that follow are presented
in the style used in
``C language compiler''.
The syntactic classes
type-specifier, identifier, and parameter-list
have the same form as in that chapter.
A syntactic description enclosed in square brackets (``[]'') is optional,
unless the right bracket is followed by a ``+''.
A ``+'' means ``one or more repetitions''
of a description.
Similarly, ``
'' means ``zero or more repetitions''.
asm macro:
asm [ type-specifier ] identifier ( [ parameter-list ] )
{
[ storage-mode-specification-line
asm-body ]
}
An asm macro consists of the keyword asm, followed by
what looks like a C function declaration.
Inside the macro body there are one or more pairs of
storage-mode-specification-line(s)
(patterns)
and corresponding asm-body(ies).
If the
type-specifier
is other than void, the asm macro should return a value
of the declared type.
storage-mode-specification-line: % [ storage-mode [ identifier [ , identifier ]] ; ]+
A storage-mode-specification-line consists of a single line (no continuation with \ is permitted) that begins with % and contains the names, (identifier)(s) and storage mode(s) of the formal parameters. Modes for all formal parameters must be given in each storage-mode-specification-line (except for error). The % must be the first character on a line. If an asm macro has no parameter-list, the storage-mode-specification-line may be omitted.