design considerations for microprogramming languages
Historically, microprograms have been developed using tools which are appropriate to logic designers (block diagrams, register transfer languages), or systems programmers (microcode assemblers). With the growth of user microprogramming, and the increased demands placed upon computer manufacturers for firmware support, improved tools and techniques have been suggested. In particular, microprogram compilers, i.e., compilers which translate high level source statements into sequences of microprogram control words, have been proposed and implemented. The larger issue to be faced is the nebulous task of supporting the needs of a community which includes:  Manufacturers developing one particular computer (target machine) using microprogramming as a design and implementation technique.  Manufacturers developing a computer system , integrating hardware, operating systems, and programming language support, utilizing microprogramming to tie system functions together.  Users developing their own target machines tailored to applications such as computer graphics, signal processing, or interpretation of higher level languages.  Users or manufacturers who utilize hardware which is microprogrammable to directly solve one or more specific problems, without formally defining a target machine (i.e., simply programming the hardware, or host machine).
microprogramming languages user microprogramming target machine horizontal machines pumpkin language tailcred language systems programming languages