Variation du topic : mon assembleur est mieux que le tien. J'avais déjà écrit ça pour les symboles :
Syntax
------
Labels may contain: ^[A-Za-z_:\@][A-Za-z0-9_:\@]*
Labels must start at the beginning of a line, with anything else than a figure.
Trailing ':' are ignored and useless.
Labels containing only ':' are valid but not addressable.
There is no reserved names.
Length is arbitrary.
Scope
-----
Labels not beginning with '\' are global. They are visible in all the source (even from the files included in the source, or by the files including the source).
Labels beginning with '\' are local. Their scope of visibility is restricted to the surrounding global labels.
Labels beginning with '\\@' and defined in a macro are local to that macro.
Nevertheless, the same label may be defined and used in the same scope than the macro without conflict.
Continuons, en étudiant un peu les questions de scope local/global.
A68k utilise des symboles pour :
- les labels
- les définitions de macro
- les equates
On a donc :
- les constantes (equ) peuvent être locales, et suivent les règles de scoping
- un label local peut être exporté (xdef), mais continue à suivre les règles de scoping
- les directives equ et macro ont besoin d'un label sur la ligne même, une ligne avant ça ne marche pas
- une définition de macro définit aussi une borne de scope
- une macro locale peut-être appelée de partout, en faisant abstraction des règles de scoping (contrairement aux labels et aux equates !
)
Voilà voilà, joie !
(ps -> ce post est éligible au bug des backslash \o/)