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.