From Tanenbaum's Structured Computer Organization,Most instructions can be divided into one of two categories: register-memory or register-register. Register-memory instructions allow memory words to be fetched into registers, where, for example, they can be used as ALU inputs      in subsequent instructions. (Words are the units of data moved      between memory and registers. A word might be an integer. We will      discuss memory organization later in this chapter.) Other      register-memory instructions allow registers to be stored back into      memory.A typical register-register instruction fetches two operands from the registers, brings them to the ALU input registers, performs      some operation on them (such as addition or Boolean AND), and stores      the result back in one of the registers. The process of running two      operands through the ALU and storing the result is called the data      path cycle and is the heart of most CPUs. To a considerable extent,      it defines what the machine can do. Modern computers have multiple      ALUs operating in parallel and specialized for different functions.      The faster the data path cycle is, the faster the machine runs.Are there memory-memory instructions? Or is a memory-memory operation implemented as two register-memory instructions (one for read and the other for write)?Isn't this inefficient than moving data directly between two places in the same memory without going via a register?
Are there memory-memory instructions?
architecture