Controlling Names Used in Assembler Code
========================================
You can specify the name to be used in the assembler code for a C
function or variable by writing the `asm' (or `__asm__') keyword after
the declarator as follows:
int foo asm ("myfoo") = 2;
This specifies that the name to be used for the variable `foo' in the
assembler code should be `myfoo' rather than the usual `_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 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 Note: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.
You cannot use `asm' in this way in a function _definition_; but you
can get the same effect by writing a declaration for the function
before its definition and putting `asm' there, like this:
extern func () asm ("FUNC");
func (x, y)
int x, y;
...
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.