Na tom je asi nejzajimavejsi to, ze LDIR mel byt tim spravnym resenim, ale asi bylo nejjednodussi ho implementovat tak, ze se vlastne porad opakuje jeho nacitani z pameti, Jako asi to chapu - resi se tak problem preruseni apod. - ale pres zasobnik to tusim jde napsat skoro az 2x rychleji.
(na 6502 to je uplne jina debata, tam se bez automodifukujiciho kodu asi neda rozumne obejit - zadny LDIR nemame :/).
No, ono to kopírovaní přes zásobník není až tak velká výhra. Ten statickej příklad v článku je opravdu rychlej, ale v praxi chce člověk mít to kopírování přece jen ve smyčce, obzvlášt když přenáší několik kilobajtů dat. A tam narazí na to, že pro každou iteraci potřebujete počítat adresy zdroje a cíle a znovu je vložit do registru SP. Ve výsledku je kopírování přes zásobník přinejlepším jen o trochu rychlejší než rozvinutá smyčka LDI.
Když se na to člověk podívá v kontextu toho, že limitem reálného 8 bitového počítače je rychlost paměti, tak na 6502 je obrovský problém s tím, že na kopírování jednoho bajtu (jeden read, jeden write) je potřeba hodně čtení instrukcí (opcode fetch). Na stejně rychlé paměti nejde prostě kopírovat tak rychle jako pomocí LDI.
6809 má podobný problém, ale má dvě výhody: dva zásobníky a zvláštní implementaci push a pull ze zásobníku. Jde o to, že PSH,PUL instrukce jsou implementované jako jeden opcode pro PUL a jeden PSH, a za nimi následuje parametrický bajt. Každý bit parametrického bajtu určuje, který registr se vloží/načte ze zásobníku. Takže PSH/PUL má na 6809 nejlepší poměr přenesených dat a načtených instrukcí. I tak je rychlá kopírovací rutina přes dva zásobníky jen o malinko rychlejší než LDI a má samozřejmě problém s přerušením.
Nástupci 6502 a 6809, tedy 65816 a 6309 už mají dedikované instrukce pro blokové kopírování.