During the compiling process, certain name resolutions must be made to ascertain whether a particular name has been used previously. If it has been used previously, the attributes this particular name possesses must be noted for use during the execution process. If the name has not been used previously, we assign default attributes. In some block structured languages, such as the procedural languages PL/I and ALGOL, a declaration of a name is made and there is a certain well-defined region of the program over which the declaration is applicable. This region is called the scope of the name established by the declaration. In general, distinct declarations of the same identifier imply distinct names with non-overlapping scopes. In some internal blocks, names are used without being explicitly declared. As a result, situations arise in which a resolution is required to establish the scope of a particular name.   The resolution of a name can occur at compile time or at execution time and these are the static and dynamic cases respectively. In the static case during compilation of a higher level source, the scope of the name must be resolved, using some algorithm which ascertains whether the name is used in another block.   This “naming problem” is one which must be resolved quite frequently during the compiling processes and it appears very attractive, therefore, to develop an architecture which can reduce the speed required to effect this resolution.   It is the purpose of this work to suggest such an architecture. We propose, herein, how a microprogrammed architecture can be applied to the problem described above, that is, the “naming problem” for static identification. We will show the advantages which accrue from such an architecture.   A microprogramming simulator is described, which permits the encoding and de-bugging of the micro-code used to effect the name resolution. We encode the name resolution algorithm in a higher level language consisting of interpretively driven operations which are not tied to any specific instruction set. These instructions, combined with push-down and pop-up stacks, are particularly suited to the translation process. In order to execute each of the operations, an interpretive technique is employed where-by an op-code is fetched and a branch is taken to microprogrammed routines resident in control memory.
['Stanley Habib']
Name resolutions using a microprogrammed interpretive technique