The BLISS-M Compiler Project
What is BLISS?
The BLISS language was developed at Carnegie-Mellon University in the 1970’s for systems programming. It was adopted and used extensively by Digital Equipment Corporation for development of systems software across their 16-bit, 32-bit, 36-bit, and 64-bit systems. It is a typeless, block-structured, language with an extensive lexical processing (macro) facility. See the Wikipedia article on BLISS for more information about the language.
What is BLISS-M?
BLISS-M (the M for multi-target) is a compiler for BLISS that runs on modern systems. The front end is written in C, and should be portable to a wide variety of hosts. The initial back end code generation support uses LLVM as its intermediate representation, but should be extendable to other IRs for other platforms.
Why a BLISS compiler?
My main reasons for starting this project, in no particular order:
- I used to read and write a lot of BLISS code back when my main job involved software development for DEC VMS systems. There were aspects of the language I really liked, particularly for low-level systems software, and I wanted to have a way to experiment around with using BLISS for more modern systems.
- I have been thinking about starting some projects involving older microprocessors, and I thought BLISS could be a good language for cross-development on those CPUs, instead of coding everything in assembly language.
- I have never written a compiler before, and was interested in learning more about compiler design and implementation.
The compiler is a work-in-progress, and is not yet ready for general release. The parser (front-end) is basically working, and interfaces with LLVM for code generation. Still to do are:
- an implementation of its own backend, modeling a BLISS machine
- implementation of the important low-level statements/keywords for setting up subroutine linkages, psect layouts, etc.
- OTS/runtime definitions for one or more target OS environments
Sources are available here on GitHub under a BSD 2-clause license. See the README in the source repository for the latest status information. You can also use the issue tracker and visit the wiki for additional information.
Authors and Contributors
This project was started by Matt Madison (@madisongh). If you are interested in contributing to the project, contact Matt here or via e-mail at madison at acm.org.