Sida 2 av 2

Postat: 8 mars 2006, 11:03:29
av vfr
Hmm... Även programvarustack borde kunna vara helt ISR-kompatibel. Så länge det bara är samma kompilator (eller en medveten assemblerkodare) som genererar koden till både ISR:en och huvudprogrammet så borde det kunna fungera precis lika säkert som en hårdvarustack.

Postat: 8 mars 2006, 11:34:16
av sodjan
Visst !
Men diskutionen tidigare rörde bl.a om en kompilator lägger till
egna disable/enable av interrupt. Just kodavsnitt som
hanterar en programvarustack kan vara kondidater för just det.

Det var bl.a det jag menade med "synkning" mellan main och ISR,
att interrupt helt enkelt stängs av under "känsliga" partier.

Med rätt hantering i alla led, så ska det naturligtsvis fungera... :-)

Postat: 8 mars 2006, 13:06:19
av vfr
Då är jag med på vad du menade. :-)

Jag tolkade det först som att du menade att en programvarstack i sig själv skulle bli osäker om den användes vid avbrott. Som du säger, så det ju en given kandidat för att stänga av under vissa delar där själva stacken hanteras.

Postat: 8 mars 2006, 15:17:50
av bearing
Ja, det är sant. En programvarustack skulle ju kunna implementeras.

Knudsens kompilatorer är kända för att generera en liten mängd instruktioner, vilken antagligen även betyder att det går snabbt. Finns exempel på att storleken blivit mindre än hälften vid byte till hans kompilator. (vid bästa/sämsta kombinationen)

Det kanske till stor del är tack vare att han inte använder programvarustack som han lyckas minska storleken så mycket. Jag menar; det går ju åt mycket mer kod att inför varje funktion spara varje argument indirekt i minnet än om man bara flyttar dem till en fast ledig minnesplats, tar även kortare tid. Förmodligen har han ansett att det är så sällan en programvarustack verkligen behövs att vinsterna i storlek/hastighet överväger stackens möjlighet till flexibilitet.

Tillägg: Jag är inte köpt av knudsen... :lol:

Postat: 8 mars 2006, 21:11:45
av henkebenke
Det är inte helt ovanligt att kompilatorn använder en speciell stack i interrupt. IAR gör det iallafall.