> Sodjan: Kan du förklara vad som är så "fiffigt" med CODE taggen?
Av resten framgår att det är CODE *direktivet* i MPASM som avses, eller hur !?
Right, det här handlar om skillnaden mellan det gamla föråldrade sättet
att skriva kod ("absolute mode") och det nya moderna sättet ("relocatable mode").
Det är inte bara CODE som är skillnaden, det är en hel del andra direktiv
som hör till relocatable mode, RES, UDATA_xxx, EXTERN, GLOBAL o.s.v.
En del har jag förklarat på denna sida :
http://www.jescab.se/Rellocmode.html
Fördelarna är många.
- Kod som enklare kan flyttas mellan olika PIC modeller.
Anpassning till olika minnesmappar sker automatiskt via LKR filen och MPLINK.
- Kod som enklare kan återanvändas i olika projekt.
Alla variabler allokeras ju av MPLINK med hänsyn till övriga moduler.
- Ingen risk för att två variabler råkar dela adress.
Lätt gjort om man använder abs.mode och EQU...
- Länkaren kan sprida kod-segmenten runt de delar (som t.ex tabeller) som man har lagt på fasta adresser.
Genom att lägga in flera CODE (de "kostar" inget) så underlättar man för MPLINK som får flera/mindre "pusselbitar" att jobba med.
Samtidigtt får man direkt i MAP filen storleken på sina olika kodsegment och kan direkt se hur stora t.x olika subrutiner är.
- Koden kan enkelt delas upp i flera ASM filer (med separat assemblering), kallas "modules".
Eftersom assmbleringen är beroendestyrd, så kan det snabba upp det hela.
- Labels och variabler kan ha samma namn i olika moduler utan sammanblandning.
Enbart de variabler och labels som görs globala (med directivet GLOBAL) måste vara unika i projektet.
Min personliga rekomendation är att börja att skriva kod i relocatable mode
direkt. Det är inte svårare, det är bara lite annorlunda syntax och det är
mycket bättre när projektet växer. Visst, 99% är (skräp-) koden som
finns "på nätet" är i den äldra absolut mode, men det är oftast bara ett
par monuters job att fixa till det, eller helt enkelt köra den färdiga koden
i abs.mode, men skriva sin egen kod på "rätt" sätt...
De kodmallar och kodexempel som jag håller på att ta fram kommer
alla att använda relocatable mode, så klart. Jag hoppas kunna få upp
ett par exempel på hur jag har tänkt att det ska se ut inom ett par
dagar på
www.jescab.se.