eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingktóre języki 'historyczne' są ważneRe: które języki 'historyczne' sš ważne
  • Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.PO
    STED!not-for-mail
    From: Jędrzej Dudkiewicz <j...@n...com>
    Newsgroups: pl.comp.programming
    Subject: Re: które języki 'historyczne' sš ważne
    Date: Wed, 02 Feb 2011 02:01:13 +0100
    Organization: http://onet.pl
    Lines: 56
    Message-ID: <iiaacp$8mk$1@news.onet.pl>
    References: <2...@n...onet.pl>
    <f...@t...askar.com.pl>
    <4d470681$0$2436$65785112@news.neostrada.pl>
    <r...@4...com>
    <4d47519c$0$2437$65785112@news.neostrada.pl> <ii8g1j$768$1@news.onet.pl>
    <4d47d675$0$2447$65785112@news.neostrada.pl> <ii8l0l$7j3$1@solani.org>
    <4d47fdf5$0$2456$65785112@news.neostrada.pl> <ii90a6$hdr$1@news.onet.pl>
    <4d480625$0$2456$65785112@news.neostrada.pl> <ii9256$prk$1@news.onet.pl>
    <ii9v6d$vi$1@news.onet.pl> <iia75c$f2o$1@inews.gazeta.pl>
    NNTP-Posting-Host: 234-dzi-16.acn.waw.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.onet.pl 1296608473 8916 82.210.159.234 (2 Feb 2011 01:01:13 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Wed, 2 Feb 2011 01:01:13 +0000 (UTC)
    User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101209
    Fedora/3.1.7-0.35.b3pre.fc14 Thunderbird/3.1.7
    In-Reply-To: <iia75c$f2o$1@inews.gazeta.pl>
    Xref: news-archive.icm.edu.pl pl.comp.programming:188514
    [ ukryj nagłówki ]

    On 02/02/2011 01:06 AM, Andrzej Jarzabek wrote:
    > On 01/02/2011 21:50, Marek Borowski wrote:
    >>
    >> Cos mam wrazenie ze mylicie systemy z systemami. Operacje bliskie
    >> hardware najwygodniej sie robi w C. Jak np w innych jezykach wysokiego
    >> poziomu deklarujesz wywolanie funkcji z pod konkretnego adresu he ?
    >>
    >> W C prosze bardzo:
    >>
    >> void (*fun)(void) = (void (*)(void))0xFC00;
    >> fun();
    >
    > Naprawdę muszę pisać, jak to można zrobić w C++?
    >
    >> Jak po odebraniu pakietu dobierzesz sie do jego pol, bez dodatkowych
    >> narzutow ?
    >>
    >> W C jest to trywialne:
    >>
    >> uint8_t *buffer;
    >>
    >> a po odebraniu;
    >>
    >> struct Packet* usb = (struct Packet*) buffer;
    >>
    >> usb->requestType i jedziemy.
    >
    > Naprawdę? Szkoda tylko, że jak piszesz tę strukturę, to musisz pilnować,
    > żeby wszystkie pola były na swoim miejscu i żeby Ci kompilator nie
    > namieszał paddingiem na przykład.

    __attribute__((packed)), pola struktury nie mogą być przekładane.

    > Jak w C zapiszesz pole pakietu, które jest zaczyna się od ósmego bajta i
    > jest czterobajtową liczbą, powiedzmy bez znaku, zapisaną w formacie -
    > uwaga - big endian?

    Rozumiem, że chodzi o deklarację tego pola w strukturze? Otóż wstawię na
    początek pól na łączną wartość 7 bajtów, potem wstawię czterobajtową
    zmienną, a potem wywołam funkcję "preprocess_packet", która mi zawoła
    ntohl i pochodne na wskazanych polach, w tym na tej zmiennej.

    > W C++ za to możesz bez problemu wrapnąć bufor bajtowy w klasę, która
    > jako dane pole udotępnia ci dajmy na to 14 bajt bufora albo wartość
    > liczbową w natywnym formacie, zapisaną jako big endian na bajtach od 4
    > do 7.

    Jasne, ale w środku albo będziesz kopiował dane do oddzielnych pól, albo
    będziesz trzymał wskaźniki do nich i wołał ntohl przy dostępie, albo
    wstawisz powyższy syf. To trzecie ma najmniejszy narzut pamięciowy i
    obliczeniowy w czasie wykonania.

    Tak czy owak, zaletą C++ jest to, że jakby co, to można tego rozwiązania
    użyć, ale znacznie ładniej zapakowanego.

    JD

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: