🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: [1/3 NTG] C - Optymalizacje wstawkami

#2552
From: "Bogdan (bogdro)
Date: Wed, 13 Feb 2019 20:38
60 lines
1666 bytes
W dniu 12.02.2019 o 21:23, Bogdan (bogdro) pisze:

[...]

>> 	call	_QueryPerformanceCounter@4
>> 	subl	$4, %esp
>> 	movl	$2137483647, %ecx
>> 	leal	143(%esp), %ebx
>> 	leal	133(%esp), %edi
>> 	movb	$0, 143(%esp)
>> 	.p2align 4,,10
>> L2:
>> 	movl	%ecx, %eax
>> 	subl	$1, %ebx
>> 	imull	%esi
>> 	movl	%ecx, %eax
>> 	sarl	$31, %eax
>> 	sarl	$2, %edx
>> 	subl	%eax, %edx
>> 	leal	(%edx,%edx,4), %eax
>> 	addl	%eax, %eax
>> 	subl	%eax, %ecx
>> 	orl	$48, %ecx
>> 	cmpl	%edi, %ebx
>> 	movb	%cl, (%ebx)
>> 	movl	%edx, %ecx
>> 	jne	L2
>> 	leal	72(%esp), %eax
>> 	movl	%eax, (%esp)
>> 	call	_QueryPerformanceCounter@4
>> 	subl	$4, %esp
>>
>>
>> Zakładam, że cała akcja dzieje się pomiędzy dwoma wywołaniami QueryPerformanceCounter.
>
>
> Tak, poza "subl	$4, %esp", rzecz jasna (usuwanie argumentów ze stosu).
>
>
>> Da się tu coś istotnego wywalić?
>> Na moje oko (skłute składnią AT&T :D) kompilator wyłapał i uwzględnił sąsiadujące modulo i dzielenie przez 10.
>> A wtedy - nic tu się nie urwie (ponad poziom szumu).
>
>
>  No, można byłoby przestać używać pamięci, a wziąć jakiś nieużywany
> rejestr, np. EBP.


 Autokorekta: za bardzo się przykleiłem do poprzedniej funkcji,
wyliczającej tylko modulo, a ta funkcja przerabia liczbę na znaki.
Oczywiście jedno odniesienie do pamięci jest tu potrzebne - do
miejsca, gdzie będzie wynik.

[...]


--
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):            http://bogdro.evai.pl
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org www.TorProject.org  Soft(EN): http://bogdro.evai.pl/soft

Message-ID: <5c64721b$0$501$65785112@news.neostrada.pl>
Path: polish.pugleaf.net!archive.newsdeef.eu!apf1.newsdeef.eu!not-for-mail
References: <30292520-12bd-49f0-b5ce-39c9af378a4c@googlegroups.com> <5c5b41d7$0$501$65785112@news.neostrada.pl> <781a3ad8-10bb-42aa-939f-dc6c11efa783@googlegroups.com> <5c5df439$0$476$65785112@news.neostrada.pl> <0f221c6c-4754-475f-a906-373a1fba35db@googlegroups.com> <5c632b27$0$488$65785112@news.neostrada.pl>