GLOBAL
is the other
end of EXTERN
: if one module declares a symbol as
EXTERN
and refers to it, then in order to prevent linker
errors, some other module must actually define the
symbol and declare it as GLOBAL
. Some assemblers use the
name PUBLIC
for this purpose.
The GLOBAL
directive applying to a symbol must appear
before the definition of the symbol.
GLOBAL
uses the same syntax as EXTERN
, except that it must refer to symbols which are defined in the same module as the GLOBAL
directive. For example:
global _main _main: ; some code
GLOBAL
, like EXTERN
, allows
object formats to define private extensions by means of a colon. The elf
object format, for example, lets you specify whether global data
items are functions or data:
global hashlookup:function, hashtable:data
Like EXTERN
, the primitive form of GLOBAL
differs from the user-level form only in that it can take only
one argument at a time.