In a memory-memory architecture, all instruction operands can be in memory. This makes the memory-memory architecture ideal for the CISC philosophy. Memory-memory architectures also have registers, which are used either for addressing memory or for faster access to data values.
The standard three operand arithmetic or logical instruction has variable length, depending on how many operands are in registers and how many are in memory. Many memory-memory architectures also provided one and two operand forms of some arithmetic instructions in order to conserve code space.
A = B*(C + D)
| Instruction | Code Size | Data | |
|---|---|---|---|
| add | R, C, D | 6 (1 + 1/2 + 2 + 2) | 8 (4 + 4) |
| mul | A, B, R | 6 (1 + 2 + 2 + 1/2) | 8 (4 + 4) |
| Total | 12 | 16 | |