( bucko | 2025. 02. 06., cs – 12:10 )

Igen, ezeket az utasításokat megtalálod a PIC18 extended utasításkészletében. (pl. PIC18F24K50 , TABLE 27-3) Mivel a CPU nem rendelkezik soft stackkel, ezért (x86-hoz hasonlítva) az SP, BP, FP emuláláshoz és ugrótábla (offset) kezeléshez való utasításokra van szükség. Az indexregiszterek lineárisan kezelik a memóriát, tehát lényegtelen a lapozási mechanizmus. V[iszont 8 biten a 16 bites index kezelése sok esetben 2 bájt LD/ST, ami két utasítás is lehet.

No, szinte meg is vagyunk a "magasszintű nyelvek támogatására" alkalmas CPU emulálásával. Sajnos az index, offset, loop, esetleg a rep kezelésének mindig ára van, különösen ha több regiszter összeadogatásával kívánod a struct kezelését megvalósítani. A példához nem kell egy olyan CPU, ami alapvetően NEM erre készült. Ott van a 8086/88, ahol a hasonló mutatványokat mikrokóddal végzik (mikroprogramozott utasítások), ami keményen növeli a futásidőt. Ugyanezeknek a japán klónjai a V30/V20 (NEC μPD70116/μPD70108) ezekre a számításokra mikrokód helyett külön ALU-t használ, amivel a kompatibilis utasítások futásideje lényegesen csökken. A PIC18-nál ráadásul nem a háttérben futó mikrokód, hanem valódi kód végzi a számításokat - ezért nő a kód mérete.

Igy jár aki "hordozható" kódot szeretne írni egy olyan processzorra, ami nem arra készült.

The name PIC initially referred to Peripheral Interface Controller

Induljunk ki ebből! A feladathoz ki kell választani a kellő fajtájú és mennyiségű perifériát tartalmazó modellt. És erre ne írjunk hordozható adatbáziskezelő szoftvert! A feladat elegánsan elvégezhető (macro)assembler segítségével, amellyel akár index/offset kezelésére is meg lehet tanítani a CPU-t, sokkal hatékonyabban, mint a C és egyéb magasszintű nyelv emulálásával való görcsöléssel.