From what I read the Program Counter can hold the address of the current instruction or the next instruction.
1) Does that mean it can only hold one of the two at one time? If so, why is this?
I also read an instruction needs to get fetched, is the program counter doing the fetching too? I thought it was its job is to hold address of an instruction.
2) When an instruction gets fetched: what does it mean for a program counter to increased its stored value by 1? Is it as easy as adding the number 1 to this value?
3) Is the address of the instruction binary or hexadecimal? Is it encoded beforehand before the program counter fetches it?
4) If the program counter is holding the address of the next instruction, is the instruction register holding the address of the current instruction?
5) Who does the decoding of any of the two addresses of the instructions?
I am trying to make sense of both sources I read and it is pretty fuzzy of what is actually happening.