🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #2562

Re: Konwersja dużych liczb

#2562
From: Bogdan (bogdro)
Date: Thu, 12 Sep 2013 17:05
92 lines
4433 bytes
W dniu 12.09.2013 07:20, Kamil pisze:
> Użytkownik "Bogdan (bogdro)" napisał:
> 
>>>> A tak mi się coś właśnie wydawało, że te bufory jakichś dziwnych
>>>> długości były, ale nie przyjrzałem się dość dokładnie.
>>>
>>> Jakich dziwnych d ługości? :) 512B. Na wszelki. Jak mnożę dwie liczby
>>> po 128B to już mam wynik co najmniej 256B. Od przybytku ...
> 
>> Mówię o równoległym poście, np.
> 
>> lea esi, wynik
>> lea edi, arg1 ; przeładowujemy dane z wynik do arg1
>> mov ecx, 128
>> rep movsd
> 
>> 128 dwordów to 1kB. Raczej spodziewałbym się mniejszych liczb.
> 
> 128 dwordów to 512 bajtów.

 Tak, zakumałem się po wysłaniu posta, ale już było późno i nie
chciało mi się włączać kompa.

> Przeładowuję całe bufory zadeklarowane:
> 
> wynik db 512 dup(?)
> arg1  db 512 dup(?)
> 
>> mnozymy:
> 
>> mov  eax, dword ptr [esi]
>> mul  mnoznik
>> add  dword ptr [edi], eax
>> adc  dword ptr [edi+4], edx
>> adc  dword ptr [edi+8], 0
>> adc  dword ptr [edi+12], 0
>> adc  dword ptr [edi+16], 0
> 
>> Tu z kolei 5 dwordów (20 bajtów). Takie jakieś nietypowe :)
> 
> Do procedur zaglądałem w różnym czasie i coś mogło umknąć. Nie
> wiedziałem jeszcze tego co napisałeś o ilości ADC. Dałem za dużo na
> wszelki wypadek, ale to chyba niczego nie zmienia w działaniu?

 Nie zmienia, o ile mieścisz się w buforze. Niedobrze byłoby np.

	wynik db 8 dup(?)
	arg1  db 8 dup(?)

	add dword ptr [wynik], ebx
	adc dword ptr [wynik+4], 0
	adc dword ptr [wynik+8], 0

 Bo to zamazałoby część "arg1".


>> add dword ptr [esi], ebx
>> adc dword ptr [esi+4], 0
>> adc dword ptr [esi+8], 0
> 
>> A to mnie chyba najbardziej zdziwiło w porównaniu z poprzednimi
> 
> W "dodawanie PROC". To już jest poprawione, ADC było za mało o jedną
> linijkę i były błędy. Teraz jest:
> 
> add dword ptr [esi], ebx
> adc dword ptr [esi+4], 0
> adc dword ptr [esi+8], 0
> adc dword ptr [esi+8], 0
> 
> i działa już (chyba) dobrze.

 Tylko jeśli ta ostatnia ósemka zmieni się w dwunastkę :)

> Zresztą już o tym wspomniałem. Podziwiam
> Twoją umijętność analizowania działania programu na podstawie źródła.
> Ja tego nie potrafię w takim stopniu jak Ty.

 Dzięki :)

> Ewentualne błędy jeśli
> się ujawnią w wynikach znajduję przy pomocy debuggera.

 Czasem każdemu się przydaje. Czasem do własnych programów, czasem do
cudzych, gdy np. rozszerzenie do Firefoksa zabija całą przeglądarkę,
bo część binarna była źle skompilowana :)

-- 
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org   www.TorProject.org   Soft(EN): tinyurl.com/bogdro-soft
Technical Details
Message-ID: <5231f473$0$1456$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!feeder1.cambriumusenet.nl!feed.tweaknews.nl!209.197.12.246.MISMATCH!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <52239cda$0$1225$65785112@news.neostrada.pl> <522a0fcd$0$1459$65785112@news.neostrada.pl> <522a4a2c$0$1268$65785112@news.neostrada.pl> <522b5a7a$0$1263$65785112@news.neostrada.pl> <522c61b4$0$1470$65785112@news.neostrada.pl> <522dfbe2$0$1267$65785112@news.neostrada.pl> <522ef313$0$1261$65785112@news.neostrada.pl> <522f5be5$0$1450$65785112@news.neostrada.pl> <522f80e7$1$1253$65785112@news.neostrada.pl> <52308ff7$0$1453$65785112@news.neostrada.pl> <52314f14$0$1454$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!feeder1.cambriumusenet.nl!feed.tweaknews.nl!209.197.12.246.MISMATCH!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Date: Thu, 12 Sep 2013 19:05:50 +0200
From: "Bogdan (bogdro)" <bogdan@poczta.gazeta.pl>
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130801 Thunderbird/17.0.8
MIME-Version: 1.0
Newsgroups: pl.comp.lang.asm
Subject: Re: Konwersja dużych liczb
References: <52239cda$0$1225$65785112@news.neostrada.pl> <522a0fcd$0$1459$65785112@news.neostrada.pl> <522a4a2c$0$1268$65785112@news.neostrada.pl> <522b5a7a$0$1263$65785112@news.neostrada.pl> <522c61b4$0$1470$65785112@news.neostrada.pl> <522dfbe2$0$1267$65785112@news.neostrada.pl> <522ef313$0$1261$65785112@news.neostrada.pl> <522f5be5$0$1450$65785112@news.neostrada.pl> <522f80e7$1$1253$65785112@news.neostrada.pl> <52308ff7$0$1453$65785112@news.neostrada.pl> <52314f14$0$1454$65785112@news.neostrada.pl>
In-Reply-To: <52314f14$0$1454$65785112@news.neostrada.pl>
Lines: 92
Message-ID: <5231f473$0$1456$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: rudy.mif.pg.gda.pl
X-Trace: 1379005557 unt-rea-a-01.news.neostrada.pl 1456 153.19.42.16:43390
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit