MIX(ID:3133/mix001)

MIX Assembly Language 


Paper macro assembler language for Knuth's Art of Computer Programming, for hypothesized MIX machine.




Related languages
MIX => MIX/360   Implementation
MIX => MIXAL   Implementation

References:
  • Knuth, D. E. (1968). The art of computer programming. Reading, Mass., Addison-Wesley Pub. Co. view details
  • Wilkes, MV review of AOCP in COmputer Journal 12(4) 1969 view details Abstract: These two heavy volumes are the first to be published of a
    series of seven forming a work with the general title 'The Art
    of Computer programming'. When completed, this work will
    be an immense achievement. It is impossible to do justice
    even to the first two volumes in a short review, and it would be
    presumptuous to attempt a full evaluation without giving them
    a long and detailed study. I can only attempt to define the
    scope of the work and its flavour, and to make one or two
    scattered comments.
    The books are addressed to people who approach things
    from the mathematical point of view. Such people enjoy proofs
    and like to be set puzzles. They will find plenty here. Some
    25% of Volume 1 is taken up either in setting problems or in
    indicating their solutions. The author has taken the trouble
    to classify the exercises according to their difficulty and degree
    of mathematical orientation.
    There is no doubt that, as well as being a mathematician,
    Dr. Knuth is a practical man when it comes to dealing with a
    computer. He discusses programming down to the level of
    assembly language, and uses for this purpose an imaginary
    computer known as MIX, whose assembly code is fairly
    typical of real assembly codes. He does not attempt to cater
    for the complete beginner, but he does give a comprehensive
    treatment of the finer points. I was delighted, for example, to
    find the first comprehensible account that I have seen of
    co-routines (although we shall have to wait for Volume 4 for a
    treatment of recursive co-routines). Nevertheless, the fact
    remains that the overwhelming, almost overbearing, atmosphere
    of the book is one of mathematics. It would be unfortunate
    if some ordinary mortal, attracted by the title and
    charmed by the style, were, nevertheless, led to conclude that
    he needed a high standard of mathematical knowledge in order
    to understand programming.
    The first 119 pages of Volume 1 are about general mathematics
    and could just as well have appeared in a book on, for
    example, quantum mechanics. After that, the author goes on
    to describe his imaginary computer MIX, and in terms of it to
    discuss fundamental programming techniques such as
    subroutines, interpretive routines, trace routines, etc. He then
    discusses information structures, including stacks, queues,
    linked lists, trees, and so forth. However, it is not long before
    he passes from programming to mathematical problems
    suggested by programming, such as the enumeration of trees.
    Volume 2 deals with random numbers and with algorithms
    for performing arithmetic operations. It is stated in the preface
    to contain a noticeably higher percentage of mathematical
    material than other volumes in the series. Methods of generating
    a series of pseudo-random numbers in a computer are
    exhaustively discussed. It is pointed out that some methods
    are better than others, and statistical techniques for evaluating
    them are developed.
    In the next chapter, the author goes systematically through
    floating-point arithmetic, multi-precision arithmetic, radix
    conversion, rational arithmetic, and polynomial arithmetic.
    The material partly concerns the designer of the algorithms
    that are wired into a computer, and partly the designer of
    subroutines or procedures that are incorporated within
    programming languages. These subjects are of basic importance,
    and much time and money has been wasted because
    people have not understood them properly.
    Here and there in the volumes there are historical notes.
    These, like everything else, are flavoured with the author's
    personality; they are adequate for their purpose, but not
    necessarily definitive from an historian's point of view.
    There can be few people in university computer departments
    who will not get some value and pleasure from browsing
    in these volumes. Those who are able to learn by studying
    details, and who like to follow up interesting side issues, will
    read them systematically. Others will perhaps recall the story
    of the man who apologized for writing a long book, saying
    that, unfortunately, he could not spare the time to write a
    short one. However, Dr. Knuth, generous with his time as
    with his scholarship, has foreseen this criticism and plans to
    publish later a shortened version of the series. I hope that in
    preparing this he will have the non-mathematician in mind.
  • Knuth, Donald E. and Richard L. Sites "MIX/360 user's guide" Report Number: CS-TR-71-197 Stanford University, Department of Computer Science March 1971 view details Abstract: Abstract: MIX/360 is an assembler and simulator for the hypothetical MIX machine, which is described for example in Knuth's The Art of Computer Programming, Section 1.3.1. The system contains several debugging aids to help program construction and verification. pdf
  • Sammet, Jean E., "Roster of Programming Languages 1972" 177 view details
          in Computers & Automation 21(6B), 30 Aug 1972 view details
  • Stock, Marylene and Stock, Karl F. "Bibliography of Programming Languages: Books, User Manuals and Articles from PLANKALKUL to PL/I" Verlag Dokumentation, Pullach/Munchen 1973 390 view details Abstract: PREFACE  AND  INTRODUCTION
    The exact number of all the programming languages still in use, and those which are no longer used, is unknown. Zemanek calls the abundance of programming languages and their many dialects a "language Babel". When a new programming language is developed, only its name is known at first and it takes a while before publications about it appear. For some languages, the only relevant literature stays inside the individual companies; some are reported on in papers and magazines; and only a few, such as ALGOL, BASIC, COBOL, FORTRAN, and PL/1, become known to a wider public through various text- and handbooks. The situation surrounding the application of these languages in many computer centers is a similar one.

    There are differing opinions on the concept "programming languages". What is called a programming language by some may be termed a program, a processor, or a generator by others. Since there are no sharp borderlines in the field of programming languages, works were considered here which deal with machine languages, assemblers, autocoders, syntax and compilers, processors and generators, as well as with general higher programming languages.

    The bibliography contains some 2,700 titles of books, magazines and essays for around 300 programming languages. However, as shown by the "Overview of Existing Programming Languages", there are more than 300 such languages. The "Overview" lists a total of 676 programming languages, but this is certainly incomplete. One author ' has already announced the "next 700 programming languages"; it is to be hoped the many users may be spared such a great variety for reasons of compatibility. The graphic representations (illustrations 1 & 2) show the development and proportion of the most widely-used programming languages, as measured by the number of publications listed here and by the number of computer manufacturers and software firms who have implemented the language in question. The illustrations show FORTRAN to be in the lead at the present time. PL/1 is advancing rapidly, although PL/1 compilers are not yet seen very often outside of IBM.

    Some experts believe PL/1 will replace even the widely-used languages such as FORTRAN, COBOL, and ALGOL.4) If this does occur, it will surely take some time - as shown by the chronological diagram (illustration 2) .

    It would be desirable from the user's point of view to reduce this language confusion down to the most advantageous languages. Those languages still maintained should incorporate the special facets and advantages of the otherwise superfluous languages. Obviously such demands are not in the interests of computer production firms, especially when one considers that a FORTRAN program can be executed on nearly all third-generation computers.

    The titles in this bibliography are organized alphabetically according to programming language, and within a language chronologically and again alphabetically within a given year. Preceding the first programming language in the alphabet, literature is listed on several languages, as are general papers on programming languages and on the theory of formal languages (AAA).
    As far as possible, the most of titles are based on autopsy. However, the bibliographical description of sone titles will not satisfy bibliography-documentation demands, since they are based on inaccurate information in various sources. Translation titles whose original titles could not be found through bibliographical research were not included. ' In view of the fact that nany libraries do not have the quoted papers, all magazine essays should have been listed with the volume, the year, issue number and the complete number of pages (e.g. pp. 721-783), so that interlibrary loans could take place with fast reader service. Unfortunately, these data were not always found.

    It is hoped that this bibliography will help the electronic data processing expert, and those who wish to select the appropriate programming language from the many available, to find a way through the language Babel.

    We wish to offer special thanks to Mr. Klaus G. Saur and the staff of Verlag Dokumentation for their publishing work.

    Graz / Austria, May, 1973
          in Computers & Automation 21(6B), 30 Aug 1972 view details
  • GNU MIX Development Kit (mdk) Jose Antonio Ortega Ruiz view details Abstract: GNU MIX Development Kit (mdk)

    This file documents the GNU MDK utilities to develop, run and debug programs written in the MIXAL programming language. MIXAL is an assembler-like language for programming a virtual computer called MIX. They were created by Donald Knuth in the first volume of The Art of Computer Programming (Addison Wesley, 1997).

    GNU MDK is an official GNU package.

    GNU MDK was written by Jose Antonio Ortega Ruiz and is released under the GNU General Public license (see section A. Copying), so that users are free to share and improve it

          in Computers & Automation 21(6B), 30 Aug 1972 view details
    Resources