BELSIM(ID:5582/bel004)


Macro assembler from Bell Labs


References:
  • Tritter, Alan, "BELSIM," Bell Laboratories, (unpublished). view details
  • Farber, David J. "A survey of the systematic use of macros in systems building" view details Abstract: Assemblers with macro capabilities have been available for over ten years. There has been a limited number of mainly unpublished systematic uses of such capabilities in the construction of a variety of systems. This paper will cover a number of these cases. We will examine the features of the macro systems which allowed their usage as well as the method used in the system implementation. We will comment on the effect on efficiency and flexibility that the use of this facility has produced. Extract: Description
    BELSIM is perhaps the most remarkable example of a system constructed using a macro facility. In the case of BELSIM, the objective was to create a language and system which would then be used to implement very large and long-running traffic simulations. The nature of the environment required a very tight use of storage and at the same time required a traffic engineer to be able to set up and run the system. What was developed was a data definitional apparatus which enabled the user to define aggregates of data in terms of bits, bytes and words and to be able to specify that the data items were packed or aligned. These data definitions were backed up by a set of macros which allowed the manipulation and testing of fields and the control of the flow of the simulator. Also supplied was a language for specifying both the network topology and the analysis of the data. The resulting system worked mainly due to the careful definition of atomic operator macros and the consistent and systematic use of these atomic operators in the definition of the more elaborate operators.
    Extract: BELSIM

    BELSIM is perhaps the most remarkable example of a system constructed using a macro facility. In the case of BELSIM, the objective was to create a language and system which would then be used to implement very large and long-running traffic simulations. The nature of the environment required a very tight use of storage and at the same time required a traffic engineer to be able to set up and run the system. What was developed was a data definitional apparatus which enabled the user to define aggregates of data in terms of bits, bytes and words and to be able to specify that the data items were packed or aligned. These data definitions were backed up by a set of macros which allowed the manipu- lation and testing of fields and the control of the flow of the simulator. Also supplied was a language for specifying both the network topology and the analysis of the data. The resulting system worked mainly due to the careful definition of atomic operator macros and the consistent and systematic use of these atomic operators in the definition of the more elaborate operators.

    While such a system could have been built using PL/I, if it existed, or other languages, it is doubtful that the generated code would have been efficient enough for the use.

    A number of other special purpose simulation languages have been developed along similar lines. In addition, a number of people have noted that one may develop a Data Definition system built about the use of a macro system to define and access the data. The use of such a system can allow, as in higher level languages, fairly large changes to the chosen representation without causing ripples to spread through the entire system. This use of macros as an administrative tool to help ;~ the product from data constraints also can be used in other program production areas. Robert Balzer~'~of RAND developed a set of macros which allowed the IF, THEN, ELSE nested structures which we find useful in higher level languages. The use of this facility in a systematic fashion helps produce programs whose logic structure is at least viewable. Similarly, there have been proposals to develop macro systems which are "self documenting." Finally, the redefinition of the basic machine as a set of macros can allow one to check for behavior that may not be wanted on the part of the programmer.
          in [ACM] SIGPLAN Notices 6(10) October 1971 Proceedings of the SIGPLAN symposium on Languages for system implementation 1971, Lafayette, Indiana, United States; October, 1971 view details