Nechci být "první", ale... load store architektura je pro překladače transparentnější, tudíš efektivnější - a to platí i o "čtverečných metrech" (přímá implikace), to platí i o taktování, není třeba mnhoha taktů pro zpracování komlexní instrukce, ale o poznání méně taktů v RISC architekruře. Bez HW "tweaků" kolik cyklů trvá zpracování instrukce v CISC architekruře?
PC ať je to registr speciální nebo jen "obyčený", stejně je to paměťový prostor přímý (hardwarowě) k CPU (tím myslím přžímo těch pár křemíkových hradel), u RISC architektury (ARM, AVR nebo komplexnější) je to stejně pár čárek; u CISC to tak přímé nikdy být nemůže..
Háčky, jak lze přistupovat k registrům se dělaly kvůli kompatibilitě "odjakživa", tvrdit, že to jde automaticky lépe lze, ale není to pravda, stojí to sice méně než mikrosekundu, ale musí se to tak dělat.
load/store architektura, zejména AVR, která má jakýsi "barrel shifter" přímo v jádru instrukce, není schopná uchovat všechny konstanty v jádru programu, což se z hlediska vyšších programovacích jazyků může zdát neuspokojivé. Z hlediska často používaných algoritmů je to však v pořádku :-)
Jakýkoliv překladač nemá problém překládat volání externích procedur/metod/podprogramů, existuje několik různých techik jak zavolat vzdálený kód, proto se ostatně začalo v minulosti mluvit o swapu...
Strojová opimalizace kódu pro CISC architektury je mnohem optížnější (matematicky prokazatelně), stačí si jen uvědomit fakt, že existuje několik instrukcí v sekvenci, které vyřesí daný problém; je možné sai celý problém kvantifikovat do množství operací, které musejí hradla v obvodu provést, aby se vyřešila instrukce, to je sice optížnější na představivost, ale jako model pro výuku použitelnější a dnešní "grafiky" do dokážou znázornit, pokud si dají (učitelé|lektoři|pedagogové|profesoři a kantoři) práci :-)
Optimalizace "nevhoné" konstanty spočívá právě v načtení datového prostoru z jiného "datového" (paměťového) prostoru, tudíž ta instrukce není o nic delší datově, ale je třeba adresace a trvá déle. Nicméně je to pořád zanedbatelná obstrukce vůči translaci některých komplexních instrukcí u CISC architektur.
Ano, překladač je nucen "překládat" nikdo nechtěl po strojovém kódu zpětnou přeložitelnost, to je jen implikace naivního výkladu opkódů CISC architektur. Sám jsem si pár programů v assembleru napsal, používal jsem návěští na adresy (jmp), ale stejně po dekompilaci jsem se v tom nevyznal. Děrné štítky jsem nepoznal, ale kdo by je dneska chtěl číst??
ARM neřeší problémy kodéra, ale "křemíku" a to kompromisní formou.

