In most processors, the instruction pointer is incremented immediately after fetching a program instruction; this means that the target address of a branch instruction is obtained by adding the branch instruction's operand to the address of the next instruction (byte or word, depending on the computer type) after the branch instruction. The address of the next instruction to be executed is always found in the instruction pointer.
Program Counters almost always point to the NEXT instruction or address to be executed. There are rare processors/occasions where it points to the current address being executed. The program counter was developed as a means for the programmer to keep track of where the processors next execution is, making it easier to debug programs. Some programmers reference to program counter as the data counter. Both terms are correct, however, the term program counter is more accurate because it points to the next address (Memory Location) to be executed where data is going to be altered or stored.
Some assembly language programmers use the "NOP" or "NOOP" meaning No Operation as a reference for an important address that the program counter points to. This is an old programming technique but is still used today by some programmers.
US Patent Issued to Verisilicon Holdings on Jan. 10 for "Instruction Fetch Pipeline for Superscalar Digital Signal Processors and Method of Operation Thereof" (Texas Inventors)
Jan 17, 2012; ALEXANDRIA, Va., Jan. 17 -- United States Patent no. 8,095,781, issued on Jan. 10, was assigned to Verisilicon Holdings Co. Ltd....
Patent No. 7,620,941 Issued on Nov. 17, Assigned to Sun Microsystems for Lossless User-level Tracing Mechanism (California Inventor)
Nov 18, 2009; ALEXANDRIA, Va., Nov. 24 -- Adam H. Leventhal, San Francisco has developed a mechanism for lossless user-level tracing on an...