Očitno se sklad med izvajanjem programa polni in prazni dinamično. Dejanske zahteve za velikost sklada lahko ocenimo, vendar je še bolje, če zasedenost sklada spremljamo na simulatorju, kjer lahko v spodnjem desnem vogalu zasledimo informacijo, kot je:
Max Stack: 4A
Z njo simulator prikazuje najvišjo do tega trenutka doseženo vrednost, v tem primeru je to 4AH (dokler je pod 7FH, naj vas ne skrbi). Obstaja tudi možnost, ki nam lahko znatno pospeši izvajanje prekinitvenih rutin in prihrani prostor na skladu. Če določimo prekinitveno rutino z možnostjo nosave, npr.: On Timer0 Tim0 Nosave, bo to za Bascom znak, da pri klicih prekinitvene rutine Tim0 ne izvaja shranjevanja registrov na sklad. Vendar bodite pozorni – tega ne moremo uporabiti brez podrobne analize kode, s katero bi ugotovili, katere registre uporablja prekinitvena rutina. Žal lahko to ugotovimo le z analizo generirane šestnajstiške kode, sam postopek pa zahteva veliko potrpežljivosti, nekaj izkušenj in posedovanje osnovne literature (več o analizi kode, ki jo generira Bascom, si preberite v poglavju “Bascom in asembler”). Če npr. ugotovimo, da naša prekinitvena rutina uporablja le registra A in R0, bomo morali poskrbeti za shranjevanje njune vsebine. Ker se to ne izvaja več samodejno, bomo teh nekaj asemblerskih ukazov morali napisati sami, vendar pa bomo pri tem znatno pospešili izvajanje prekinitvene rutine in prihranili na RAM-u…
Virtualna trgovina, nakup brošure in informacije!
Kaj narediti, ko zmanjka RAM-a
Jurij Mikeln, dipl. inž.
Ljubljana, avgust 2007