eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingasm - przesuwanie wektora bajtowRe: asm - przesuwanie wektora bajtow
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!takemy.news.tel
    efonica.de!telefonica.de!ecngs!testfeeder.ecngs.de!185.9.23.200.MISMATCH!news.n
    ewsoo.fr!nntpspool01.opticnetworks.net!aioe.org!.POSTED!not-for-mail
    From: "Radoslaw Szwed" <r...@p...fm>
    Newsgroups: pl.comp.programming
    Subject: Re: asm - przesuwanie wektora bajtow
    Date: Tue, 6 Oct 2015 10:26:55 +0200
    Organization: Aioe.org NNTP Server
    Lines: 46
    Message-ID: <mv00lo$qjl$1@speranza.aioe.org>
    References: <a6cvewd1yimk$.1h0av09ee1pjl$.dlg@40tude.net>
    NNTP-Posting-Host: o2Tcg8JUyfBpYJwbwFPmuw.user.speranza.aioe.org
    Mime-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="UTF-8"; reply-type=original
    Content-Transfer-Encoding: 8bit
    X-Complaints-To: a...@a...org
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5512
    X-Notice: Filtered by postfilter v. 0.8.2
    X-Newsreader: Microsoft Outlook Express 6.00.2900.5512
    X-Priority: 3
    X-MSMail-Priority: Normal
    Xref: news-archive.icm.edu.pl pl.comp.programming:208438
    [ ukryj nagłówki ]

    Użytkownik "szemrany" <s...@o...off> napisał w wiadomości
    news:a6cvewd1yimk$.1h0av09ee1pjl$.dlg@40tude.net...
    > 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?

    Zrobione inaczej bez RCL. Proszę sprawdzić powinna działać prawidłowo nie zdążyłem
    przetestować
    (skończyła się przerwa śniadaniowa :). Przesuwa od 1 do 8 bitów.

    start:
    mov ebx, 8 ; przesuwamy o 3 bity (2^3)
    mov edi, 4 ; dlugsc wektora 4 bajty
    mov esi, offset y ; adres wektora
    xor ecx, ecx

    next:
    xor eax, eax
    mov al, byte ptr [esi]
    mul ebx
    or al, cl
    mov byte ptr [esi], al
    mov cl, ah
    inc esi
    dec edi
    jne next

    Jest wolniejsza w porównaniu z poprzednia jeżeli przesuwamy o 1 bit w innym przypadku
    jest szybsza.


Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

  • 06.10.15 12:06 M.M.

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: