eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming[Laik] C przerwanie działania funkcji.Re: [Laik] C przerwanie dzia?ania funkcji.
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!.POSTED!not-for-mail
    From: Edek <e...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Re: [Laik] C przerwanie dzia?ania funkcji.
    Date: Fri, 30 May 2014 16:01:39 +0000 (UTC)
    Organization: ATMAN - ATM S.A.
    Lines: 45
    Message-ID: <lmaa13$9vj$1@node1.news.atman.pl>
    References: <5387149d$0$2153$65785112@news.neostrada.pl>
    <g...@n...chmurka.net> <lm8gcf$f1d$1@node1.news.atman.pl>
    <o...@4...com>
    <53882f4e$0$2147$65785112@news.neostrada.pl>
    NNTP-Posting-Host: 77-255-215-81.adsl.inetia.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-Trace: node1.news.atman.pl 1401465699 10227 77.255.215.81 (30 May 2014 16:01:39
    GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Fri, 30 May 2014 16:01:39 +0000 (UTC)
    User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508 git://git.gnome.org/pan2)
    Xref: news-archive.icm.edu.pl pl.comp.programming:205879
    [ ukryj nagłówki ]

    Szarym od mżawki świtem Fri, 30 May 2014 09:12:18 +0200, Andrzej W.
    wyrzucił pustą ćwiartkę i oznajmił:

    > W dniu 2014-05-30 04:35, A.L. pisze:
    >> Procedyra obslugi pzrerwania mzoe zmienic wartosc jakiegos elementu
    >> pamieci ktory moze byc testowany przez funkcje F. W zaleznosci of tego
    >> elementu pamieci funkcja F mzoe po sobie "posprzatac' Jedyny problem
    >> to taki, ze jak funkcja F sie wykonuje, to nei wladomo w ktorym
    >> momemncie nastapi pzrerwanie. Wiec nei da sie procedury F pzrerwac
    >> natychmniast i z neij wyjsc.
    >
    > To jest oczywiste i czyste podejście.
    > Ja chciałbym mieć coś co pozbędzie się funkcji F bez jej wiedzy i zgody.
    > Czyli z funkcji obsługi przerwania wrócimy nie w miejsce w którym główny
    > program został zatrzymany ale do punktu B.
    > Problemem jest posprzątanie po F.

    Dokładnie: można w procedurze obsługi przerwania zamiast tak jak
    zazwyczaj wraca się z przerwania po prostu robić co innego. Pytanie
    jest faktycznie jak posprzątać, a tu brak danych. Zazwyczaj byłoby to:
    - jeżeli return adress i rejestry F są na stosie: podmienić i iret
    (instrukcja bodajże 8086).
    - stos wypadałoby zresetować. Przed wykonaniem F wypadałoby zapisać
    SP i jakąś magiczną trampoliną po przerwaniu przywrócić SP sprzed F,
    albo lepiej: zapisać sobie w znajomym miejscu rejestry i SP sprzed
    wykonania F i w procedurze obsługi przerwania a) sub sb, ile-trzeba,
    b) przywrócić pozstałę rejestry, c) jakoś zakończyć obsługę przerwania
    - hardware: wypadałoby posprzątać wszystko co F robiła z hardware,
    ale jak rozumiem przerywa się F bo coś jej i tak ze sprzętem nie idzie,
    może jakiś reset? reinicjalizacja?

    No a potem jak dobrze pójdzie mamy stan taki jakby F nigdy nie była
    wykonana...

    Wszystko co napisałem powyżej zależy też od samego CPU, mechanizmu
    przerwań, reguł obsługi rejestrów, zestawu instrukcji itp.

    > Wygląda na to, że ten pomysł może przynieść więcej problemów niż ich
    > rozwiązać.
    > Zostanę chyba przy WDT...

    Tak czy inaczej bez odrobiny assemblera się nie da, chyba że przez setjmp.

    --
    Edek

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: