From: pito <pi...@vo...> - 2011-05-26 21:40:31
|
In my newest float libs (1/2011) I am handling T this way - pushing an poping it into r14.7. It worked with 4.0 and 4.2. Is it possible you set the T in 4.0/4.2 within the inner interpreter only (it means before entering a word) and now you set the T anytime when interrupt fires- it means maybe during e.g. __SUBF12?? ..... ld R30, Y+ ld R31, Y+ ; ############ BLD R14, 7 push R28 push R29 CALL __SUBF12 pop R29 pop R28 BST R14, 7 ; ############ ; store B st -Y , R31 st -Y , R30 .... P/ ----- PŮVODNÍ ZPRÁVA ----- Od: "pito" <pi...@vo...> Komu: mt...@we..., pi...@vo..., amf...@li... Předmět: Re: [Amforth] Interrupts - T flag, asm float problem Datum: 26.5.2011 - 22:07:18 > Matthias, I do understand.. The point is not how > huge the asm > snippets are, but that the .asm user cannot use > the status register > freely. As the speed of the amforth is concerned, > you know well the > floating point without fast asm. libraries is not > usable. Maybe as a > floating point l'art pour l'art exercise..P. > > ----- PŮVODNÍ ZPRÁVA ----- > Od: "Matthias Trute" <mt...@we...> > Komu: "pito" <pi...@vo...> > Předmět: Re: [Amforth] Interrupts - T flag, asm > float problem > Datum: 26.5.2011 - 21:52:12 > > > Hi Pito, > > > > > I need the Status Register as well, of course > > > (;-)). > > > > It cannot be changed during an interrupt > > > > event > > > > > > (you are manipulating > > > > the T flag there). > > > > That is part of the magic how the forth VM > > synchronizes interrupt > > handling with the controller state. Its not a > > convential way, yes. > > > > > Imagine you run a routine and somebody changes > > > a > > > > > flag there in SR. > > > > No problem. Remember: amforth is a runtime > > environment for > > forth code, not for (huge) assembler code > > snippets. They > > are useful, no doubt, but they must follow the > > rules > > (expressed and implied ones). > > > > > Would it be possible to use, as the interrupt > > > signalling, a bit outside the status > > > register??P. > > > > > Not really. There is nothing as speedy as the > > status > > register based jumps. And the inner interpreter > > checks > > that interrupt signalling bit every time it is > > called. > > Speed is a must-have there. > > > > What about you? Why do you not change the code > > to > > > use > > something else? e.g. some empty/ununsed/pushed > > register? > > floating point division is not well known for > > speed, regardless > > of the implementation..... > > > > You could even disable interrupts during your > > assembly code, thats > > not really a smart solution but it will prevent > > collisions. > > > > Matthias > > > > -- IHNED.cz je nový, přehlednější a rychlejší. Přesvědčte se na: www.ihned.cz |