eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingasm - przesuwanie wektora bajtow › Re: asm - przesuwanie wektora bajtow
  • Data: 2015-10-06 10:26:55
    Temat: Re: asm - przesuwanie wektora bajtow
    Od: "Radoslaw Szwed" <r...@p...fm> szukaj wiadomości tego autora
    [ pokaż wszystkie 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: