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?


1 Answer 1


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.

  • $\begingroup$ 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). $\endgroup$ Jan 5, 2013 at 0:41
  • $\begingroup$ what is the stack used for I am trying to understand the stack section $\endgroup$ Jan 5, 2013 at 4:54
  • $\begingroup$ @PaulA.Clayton, thanks for pointing that out. I'll try to fix the answer.. $\endgroup$ Jan 5, 2013 at 10:18
  • $\begingroup$ @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. $\endgroup$ Jan 5, 2013 at 10:24
  • 1
    $\begingroup$ @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). $\endgroup$ Jan 5, 2013 at 13:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.