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.
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. GNU CC does not as yet have the ability to store static variables in registers. Perhaps that will be added.