mcForth - Speicheraufteilung

Die Aufteilung des Speichers erfolgt in Programmbereich (Flash) und RAM. Weil bei vielen 16-Bit-Controller der Flash größer als 64K ist, wird für den Programmspeicher ein doppeltgenauer Zeiger verwendet. Beim RAM wurden die einfachgenauen Adressen beibehalten um den Standard einzuhalten. Aktuell sind mir auch keine Controller bekannt, die erweitere Adressen zum Zugriff ihres RAMs brauchen.



RAM-Bereich:
 #varend
evtl. Befehlszeilenpuffer#lbl*(#lbsize + 2) chars
 #lb
evtl. Flash-Schreibpuffer#pbsize
 #pb
Diskpuffer für Task0#fbsize
 #fb #r0
Returnstack für Task0#rsize ccells
  
Eingabepuffer für Task0 #tbsize chars
 #t0 #r0
Datenstack für Task0 #ssize cells
 #p0
PAD für Task0 #psize chars
 #h0
evtl. Heap 
 <= heap
freiunused
 <= var
Variablen und USERs 
  
USER0#usize cells
 <= Zeiger in Task
Variablen 
 #varstart



Programmbereich (Flash oder RAM):



Task-Bereich: