categories of registers and and storage in them

The Wikipedia article on processor registers mentions:

Address registers hold addresses and are used by instructions that indirectly access primary memory.

Which addresses does this sentence refer to?

-

migrated from cstheory.stackexchange.comJan 4 '13 at 21:55

This question came from our site for theoretical computer scientists and researchers in related fields.

1 Answer

RAM addresses or addresses of I/O devices. For example, in x86 architecture an IP (instruction pointer) register holds the memory address of the next instruction that is going to be read and executed. This register cannot be accessed directly (it can be modified by jumps though). Also, in x86 an SP (stack pointer) register shows the top of the stack structure (mostly used to hold local variables of functions) and is implicitly modified by push, pop, call, ret instructions (and interrupts). Of course, there are more examples.

-
Technically, that should be memory addresses. I/O addressing can be mapped onto the memory address space (memory-mapped I/O) and such addresses are not necessarily RAM (accesses can have side effects). The Motorola 68k is an example of an ISA with distinct address and data registers (8 of each). –  Paul A. Clayton Jan 5 '13 at 0:41
what is the stack used for I am trying to understand the stack section –  Registered User Jan 5 '13 at 4:54
@PaulA.Clayton, thanks for pointing that out. I'll try to fix the answer.. –  Karolis Juodelė Jan 5 '13 at 10:18
@RegisteredUser, call is a special kind of jump. You can call one function from anywhere and after executing it you want to go back to where you called it. The solution to this problem is to write down the address of the instruction which has to be executed after the call. Note that one procedure may call another so that a writing down a single address is not enough. Hence a stack is used. –  Karolis Juodelė Jan 5 '13 at 10:24
@RegisteredUser The following might be a decent start: eli.thegreenplace.net/2011/09/06/stack-frame-layout-on-x86-64 Different ISAs (and OSes) have different Application Binary Interface standards (and ABIs are interoperability standards that compilers can--but usually do not--violate for non-exported functions). –  Paul A. Clayton Jan 5 '13 at 13:38