In theory, every computer system may be programmed in its
machine language with no systems software support. Programming of the “bare
machine” was customary for early computer systems. A slightly more advanced
version of this mode of operation is common for the simple evaluation boards
that are sometimes used in introductory microprocessor courses. Programs for
the bare machine can be developed by manually translating sequences of
instructions into binary or some other code whose base is usually an integer
power of 2. Instruction and data are the entered in to the computer by means of
console switches or, perhaps, through a hexadecimal keyboard. Program are
started by loading the program are obtained by examining the contents of the
relevant registers and memory locations. Input/output devices. If any, must be
controlled by the executing program
directly, say, by reading and writing the related I/O ports. Evidently,
programming of the bare machine result in low productivity of both users and
hardware. The long and tedious process of program and data entry practically
precludes execution of medium and large programs in such an environment.
The mechanics of development and preparation of programs in
such environments are quite slow and cumbersome due to serial execution of
programs and to numerous manual operations involved in the process. In a
typical sequence, the editor program is loaded to prepare the source code of
the user program. The next step is to load and execute the language translator
and provide it with the source code of the user program. When serial input
devices such as card readers are used, multiple-pass language translators may
require the source code to be repositioned for reading during each pass. If syntax
errors are detected, the hole process must be repeated from the beginning.
Eventually, the object code produced from the syntactically correct source code
is loaded and executed. If run-time errors are detected, the state of the machine
can be examined and modified by means of console switches or with the
assistance of a program called a debugger.
The described mode of operation was used initially in the
late fifties, but it was also common in low-end microcomputers of the early
eighties with cassettes as I/O devices.
In addition to language translators, systems software
includes the loader and possibly the editor and debugger programs. Most of
these programs use input/output devices and thus must contain some code to
exercise those devices.
While a definite
improvement over the bare-machine approach, this mode of operation is
obviously not very efficient. Running the computer system may require frequent
manual loading of programs and data. This results in low utilization of system
resources. User productivity, especially in multiuser environments, is low as
users await their turn at the machine. Even with such tools as editors and
debuggers, the program development is very slow and is ridden with manual
program and data loading.
No comments:
Post a Comment