Instructions and Addresses
An important characteristic of the architecture of a computer is the
number of addresses contained in its instruction format. Arithmetic
operations generally require two input operands and produce one
result, so that a three-address instruction format would seem natural.
However, there are arguments against this arrangement, and decisions
about the actual number of addresses to be contained within one
instruction are generally based on the intuitive feelings of the
designer(s) in relation to economic considerations, the expected
nature of implementation, and the type of operand address and its
size. An important distinction exists between register addresses and
store addresses, for example; if the instruction for a particular
computer contains only register addresses, so that its main store is
addressed indirectly through some of these registers, then up to three
addresses can be accommodated in one instruction. On the other hand,
where full store addresses are used, multiple-address instructions are
generally regarded as prohibitively expensive both in terms of machine
complexity and in terms of the static and dynamic code requirements.
Thus one store address per instruction is usually the limit (in which
case arithmetic operations are performed between the content of the
store location and the content of an implicit accumulator), although
some computers have variable-sized instructions and allow up to two
full store addresses in a long instruction format. Included here are
examples of computer systems which have three, two, one and
zero-address instruction formats, together with a discussion in each
case of the relationships which exist between each of these formats
and the corresponding hardware organisation.