PL/D(ID:5310/pld001)


DAIR Computer Systems high-level assembler.


Related languages
PL/D => PLD2   Evolution of

References:
  • Eckhouse, Richard "PL/D acts like a compiler, looks like an assembler" view details Extract: Description
    PL/D Release 5.80 from DAIR Computer Systems is one of the most unusual languages I’ve encountered. With an assembly-like syntax, no runtime library, a left-to-right expression evaluation, and one-pass compilation, you might think PL/D is primitive. Yet here is a language (and compiler) that includes scope rules, conditional structures (with both macro and pragma control), and an open-ended ability to add new definitions. To paraphrase its designers, what you get is a new language with the speed and control of an assembler and the ease of expression of a compiler.
    Clearly, PL/D is not for the average PC user. The syntactic constructions are both familiar and unfamiliar. As a result, it’s not hard to read PL/D programs - but what is intended is not always clear.
    [...]
    PL/D code is inherently capable of relocation for ROM-based applications. Thus, a typical program begins with an assignment of the segments that will hold the code and data, much like any macro assembler would. And every program must end with an end-of-file statement.
    The memory model is compact, so code and data will reside in the same segment as pointed to by the CS register. However, the Comn directive can be used to override the assignment so data storage is pointed to by the DS register. Now all of that should make sense to the average assembly programmer, but other programmerswill be lost.
    Two unusual PL/D features of are how it handles side effects and conditional assembly. The manual gives an example of the former: The value of a equated symbol in the symbol table is changed in a constant expression by the store operator. An example of the latter takes advantage of the fact that the compiler maintains two stacks during compilation. One stack is used for compiling structures but the other is for the user. This comes in handywhen generating object code that needs to be patched as the result of an unresolved forward reference.

          in IEEE Software 5(4) July 1988 view details