Machine code
The majority of computers, individual instructions are stored as machine code with each instruction being given a unique number (its operation code or opcode
for short). The command to add two numbers together would have one
opcode; the command to multiply them would have a different opcode, and
so on. The simplest computers are able to perform any of a handful of
different instructions; the more complex computers have several hundred
to choose from, each with a unique numerical code. Since the computer's
memory is able to store numbers, it can also store the instruction
codes. This leads to the important fact that entire programs (which are
just lists of these instructions) can be represented as lists of numbers
and can themselves be manipulated inside the computer in the same way
as numeric data. The fundamental concept of storing programs in the
computer's memory alongside the data they operate on is the crux of the
von Neumann, or stored program,
architecture. In some cases, a computer might store some or all of its
program in memory that is kept separate from the data it operates on.
This is called the Harvard architecture after the Harvard Mark I computer. Modern von Neumann computers display some traits of the Harvard architecture in their designs, such as in CPU caches.
While it is possible to write computer programs as long lists of numbers (machine language) and while this technique was used with many early computers, it is extremely tedious and potentially error-prone to do so in
practice, especially for complicated programs. Instead, each basic
instruction can be given a short name that is indicative of its function
and easy to remember – a mnemonic such as ADD, SUB, MULT or JUMP. These mnemonics are collectively known as a computer's assembly language.
Converting programs written in assembly language into something the
computer can actually understand (machine language) is usually done by a
computer program called an assembler.
No comments:
Post a Comment