eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingasm - przesuwanie wektora bajtowRe: asm - przesuwanie wektora bajtow
  • X-Received: by 10.140.81.170 with SMTP id f39mr274121qgd.30.1444125971763; Tue, 06
    Oct 2015 03:06:11 -0700 (PDT)
    X-Received: by 10.140.81.170 with SMTP id f39mr274121qgd.30.1444125971763; Tue, 06
    Oct 2015 03:06:11 -0700 (PDT)
    Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!news.supermedia.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.g
    lorb.com!kq10no17413503igb.0!news-out.google.com!68ni54470qgg.0!nntp.google.com
    !z77no7853286qge.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-f
    or-mail
    Newsgroups: pl.comp.programming
    Date: Tue, 6 Oct 2015 03:06:11 -0700 (PDT)
    In-Reply-To: <muuvv0$fnl$1@z-news.wcss.wroc.pl>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=159.205.151.161;
    posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
    NNTP-Posting-Host: 159.205.151.161
    References: <a6cvewd1yimk$.1h0av09ee1pjl$.dlg@40tude.net>
    <muuvv0$fnl$1@z-news.wcss.wroc.pl>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <2...@g...com>
    Subject: Re: asm - przesuwanie wektora bajtow
    From: "M.M." <m...@g...com>
    Injection-Date: Tue, 06 Oct 2015 10:06:11 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:208439
    [ ukryj nagłówki ]

    On Tuesday, October 6, 2015 at 1:09:23 AM UTC+2, Waldek Hebisch wrote:
    > szemrany wrote:
    > > Witam
    > >
    > > Potrzebuj? przesun?? tablic?/wektor bajt?w w lewo o zadan? liczb? bit?w. Po
    > > jakim? tam czasie czytania i pr?b zrobi?em prock? opart? o instrukcj? RCL
    > > przesuwaj?ca o jeden bit:
    > >
    > >
    > > mov ebx, x // liczba bajt?w w wektorze
    > > mov eax, end_byte // adres ostatniego elementu
    > > clc
    > > @@loop:
    > > mov cl, byte ptr [eax]
    > > rcl cl, 1
    > > mov byte ptr [eax], CL
    > > dec eax
    > > dec ebx
    > > jne @@loop
    > >
    > > Teraz, gdy chc? przesun?? o 3 bity to wykonuj? ten kod w p?tli trzy razy.
    > >
    > > Czy ten kod mo?na zoptymalizowa? bardziej?
    > > Czy mo?na to zrobi? inaczej, bez RCL?
    > >
    >
    > Napisz w C (niekompletne i nieprzetestowane):
    >
    > carry = 0
    > for(i = 0; i < n; i++) {
    > val = *src++;
    > *dst++ = val<<k | carry;
    > carry = val>>(M-k);
    > }
    >
    > gdzie val i carry sa odpowidniego typu bez znaku, M to ilosc bitow
    > [...]
    > jak to wyglada, zreszta recznie tez latwo przetlumaczyc.

    Na moje tak (też nie kompilowałem):

    if( x < 0 || x > 64 ) abort();
    if( sizeof(tab[0]) != 8 ) abort();
    for( i=n-1 ; i>=0 ; i-- ) {
    tab[i] <<= x;
    if( i > 0 )
    tab[i] |= przesun_na_najmlodsze( najstarsze_bity( tab[i-1] , x ) );
    }

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

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: