The easy ones ...
A 32 bit register contains 32 bits.
A 64 bit bus contains 64 bits.
A 16 bit ALU operates on 16 bits.
Addresses
A 32 bit address contains 32 bits (duh). Note that an address may be stored in two separate registers; this is called a segmented address. For example, DOS addresses are 20 bits; an address is stored in two registers.
Programs
Programs contain addresses - they are commonly called pointers by C++ programmers. If a program uses 32 bit addresses, it is called a 32 bit program. If a program contains a mixture of address sizes, use the larger size. For example, if a program contains 16 bit and 32 bit addresses, it is called a 32 bit program.Confusion #1 - A compiler is a program. If someone says they have a 32 bit compiler, she can mean three things. It can be difficult to find out which:
- The compiler contains 32 bit addresses.
- The compiler produces code containing 32 bit addresses.
- Both of the above.
Confusion #2 - DOS programs often use 20 bit addresses but they are refered to as 16 bit programs. The segmented address causes the confusion because some programs only use the lower 16 bits of the address. But, in any case, a 20 bit DOS program is never called that (except in CSC 315).
CPU - now it gets complicated
The correct definition of a 32 bit CPU is one that can execute 32 bit programs. But, many people use other definitions that confuse the issue. Some misused definitions (you won't do it):
- The width of the internal registers and buses.
- The width of the data bus.
- The width of the address bus.
- The memory word size.
- The width of an address subset (like DOS 16-bit)
- The size of instructions.