A program counter can be a register in a register file. For example in the aarch32 specification:
register R : Bits<4> -> Bits<32> // general purpose register file
[next next] // PC points to the end of the following instruction
alias program counter PC : Bits<32> = R(15) // program counter
When writing to the register (in this case R(15)) the program counter changes. If the index of the write is not statically known (e.g. when it is from a format field), then determining when a program counter read/write happens is not trivial. The CounterAccessResolvingPass (previously StaticCounterAccessResolvingPass) can help with that. Slicing may also be involved (see #939 ).
A program counter can be a register in a register file. For example in the aarch32 specification:
When writing to the register (in this case
R(15)) the program counter changes. If the index of the write is not statically known (e.g. when it is from a format field), then determining when a program counter read/write happens is not trivial. TheCounterAccessResolvingPass(previouslyStaticCounterAccessResolvingPass) can help with that. Slicing may also be involved (see #939 ).