rpgurd@watcgl.waterloo.edu (Preston Gurd) (10/25/89)
Bit Slice Software is pleased to announce the availability of a complete software development system for microcoded machines. The system includes a C preprocessor (MCPP), C compiler (MCC), a Fortran compiler (RFC), a peephole optimizer (MCPEEP), a unique compactor/instruction scheduler (MCPACK), a macro assembler (MCASR), a linker (MCLINK), an object librarian (MCLIB), and a simulator (MCSIM). The C preprocessor and compiler conform to the draft proposed ANSI standard. The Fortran compiler conforms to the 1977 ANSI standard (except that support for I/O is omitted) and also supports many common extensions, such as structure types. Optimizations performed by the compilers include automatic assignment of variables to registers (when usage counts warrant), along with global common sub-expression elimination. The compilers support extra syntax to permit you to do loop control using the loop counter which is found in all commonly-available micro-sequencers. You configure the compilers for your hardware by writing a small text file which contains information about the word size and the register sets in your machine. The compilers generate instructions from a standard set of "vertical" instructions, based on a RISC-like machine model, but using the registers which you define. MCPACK converts incoming instructions into compacted and pipelined assembly code. It does so by interpreting a control file which is written by you in the Microcode Definition Language or MDL. The syntax of MDL is derived from C. It is specifically designed for compaction and instruction scheduling. It provides you with the ability to define and fill instruction templates and to attach resource usage information to them. We provide a comprehensive user manual which shows you how to use the language to drive the compaction algorithm. If your machine is not generally suitable to the application of high level languages, you can still use the MDL to create your own machine-dependent low level language which can then be translated by the compactor under the control of your MDL code. The advantage of using MCPACK to implement a low level language, instead of just using assembler macros, is that MCPACK can take advantage of hardware parallelism to produce more compact output code. MCASR, the assembler, allows you to create instructions up to 256 bits wide. It allows you to divide each word up into fields. Each field consists of one or more sub-fields, each of which is a contiguous group of up to 32 bits which starts at any bit position. MCLINK, the linker, supports up to eight independent address spaces, each of which can have a unique word size and location counter increment. Each word can contain up to 32 relocatable fields. Each relocatable field can be aligned to any bit boundary within the word and can be up to 32 bits wide. MCSIM, the simulator, provides you with a means of simulating the code for your machine which comes out of the compilers. This can be helpful for verifying that the compiler generated code works correctly before trying to run the code on the target hardware. We believe that this software system provides an ideal way to quickly generate development tools for new architectures. Binary versions of the software are available for MS-DOS/PC-DOS, for Unix System V/386, and for the Sun/3. Source code licencing is available, as well. If you are interested in the software, but would rather not do the implementation, we would be pleased to make arangements to do it for you. For more information on this product or on our custom development services, please contact Preston Gurd Bit Slice Software 460 Forestlawn Road Waterloo, Ontario, Canada N2K 2J6 (519)746-7925