Can somebody explain why anybody would want to put up with PIC in 2020 when ARMs are so cheap and energy efficient and development tools got to a point where you get working toolchain with no time or money expense (for example with stm32cubeide and st-link)?
<p><pre><code> Technically, the second block of code is not 100% equivalent.
Why? Well, it uses more instructions (so more memory and
also takes longer to execute) but it also sets ALL bits of
the Program Counter, not just the ones that a goto or call
can.
We could use the second block of code to goto to a correct
page, but it would be annoying to use in practice because it
would mangle the W register.
</code></pre>
Does the code even work at all? I don't know anything about PIC microcontrollers, but I would have expected that writing to PCLACH would cause a jump immediately, meaning that the write to the low bits in PCL would never even happen.