Det finns ett par olika metoder för att hålla reda på bankingen...
1. Man kollar själv manuellt allting. Fördelen är att man kan se till att
bank-komandona blir optimala (d.v.s inga i onödan). Nackdelen är att
det är hur lätt som helst att få en bug. Den nackdelen är så stor så
metoden är i praktiken oanvändbar...
2. Man använder BANKSEL för alla minnes acceses. Fördelen är att man
alltid kommer att accessa rätt bank. Nackdelen är att man kommer att ha en
del "onödig" kod, t.ex då man accessar två register efter varandra som
ligger i samma bank. Om man då sätter BANKSEL före båda så kommer den
andra BANKSEL att göra samma sak som den första. Men, det kan ånda vara
en bra metod p.g.a att det hela blir bomb-säkert.
Man kan optimera lite genom att bara ha en BANKSEL, men då får man se
upp om man t.ex lägger in en label så att man kan hoppa direkt till det
*andra* kommandot (som alltså då saknar en BANKSEL)...
3. Man använder macron och andra verktyg i MPASM för att automatiskt
hålla reda på bankningen. Så fungerar t.ex Olin Lathrops utvecklingsmiljö
för PIC (
http://www.embedinc.com/pic/) Olin's motsvarighet till BANKSEL
heter DBANKIF. Skillnaden är att BANKSEL *alltid* sätter RPx bitarna
i STATUS registret oavsett om det behövs eller inte. DBANKIF håller reda
på vilka RPx bitar som sattes förra gången DBANKIF kördes, och om det
inte behövs så blir det inga onödaga BCF/BSF instruktioner. Man kan alltså
"gödsla" med DBANKIF i koden och endå bara få med exakt de banknings
kommandon som faktiskt behövs.