extend.texi (Asm Labels): Break out text for data vs functions.

2015-09-28  David Wohlferd  <dw@LimeGreenSocks.com>

         * doc/extend.texi (Asm Labels): Break out text for data vs
	 functions.

From-SVN: r228212
This commit is contained in:
David Wohlferd 2015-09-28 16:45:31 +00:00 committed by Sandra Loosemore
parent 2876a13f6c
commit 0a53bd6d4d
2 changed files with 29 additions and 21 deletions

View File

@ -1,3 +1,8 @@
2015-09-28 David Wohlferd <dw@LimeGreenSocks.com>
* doc/extend.texi (Asm Labels): Break out text for data vs
functions.
2015-09-28 Jiong Wang <jiong.wang@arm.com>
Revert:

View File

@ -8367,7 +8367,13 @@ asm ("fyl2xp1" : "=t" (result) : "0" (x), "u" (y) : "st(1)");
You can specify the name to be used in the assembler code for a C
function or variable by writing the @code{asm} (or @code{__asm__})
keyword after the declarator as follows:
keyword after the declarator.
It is up to you to make sure that the assembler names you choose do not
conflict with any other assembler symbols, or reference registers.
@subsubheading Assembler names for data:
This sample shows how to specify the assembler name for data:
@smallexample
int foo asm ("myfoo") = 2;
@ -8379,33 +8385,30 @@ the assembler code should be @samp{myfoo} rather than the usual
@samp{_foo}.
On systems where an underscore is normally prepended to the name of a C
function or variable, this feature allows you to define names for the
variable, this feature allows you to define names for the
linker that do not start with an underscore.
It does not make sense to use this feature with a non-static local
variable since such variables do not have assembler names. If you are
trying to put the variable in a particular register, see @ref{Explicit
Reg Vars}. GCC presently accepts such code with a warning, but will
probably be changed to issue an error, rather than a warning, in the
future.
GCC does not support using this feature with a non-static local variable
since such variables do not have assembler names. If you are
trying to put the variable in a particular register, see
@ref{Explicit Reg Vars}.
You cannot use @code{asm} in this way in a function @emph{definition}; but
you can get the same effect by writing a declaration for the function
before its definition and putting @code{asm} there, like this:
@subsubheading Assembler names for functions:
To specify the assembler name for functions, write a declaration for the
function before its definition and put @code{asm} there, like this:
@smallexample
extern func () asm ("FUNC");
func (x, y)
int x, y;
/* @r{@dots{}} */
int func (int x, int y) asm ("MYFUNC");
int func (int x, int y)
@{
/* @r{@dots{}} */
@end smallexample
It is up to you to make sure that the assembler names you choose do not
conflict with any other assembler symbols. Also, you must not use a
register name; that would produce completely invalid assembler code. GCC
does not as yet have the ability to store static variables in registers.
Perhaps that will be added.
@noindent
This specifies that the name to be used for the function @code{func} in
the assembler code should be @code{MYFUNC}.
@node Explicit Reg Vars
@subsection Variables in Specified Registers