🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
6 messages
6 total messages Started by Andrzej Grażyński Mon, 22 Mar 2010 17:13
Kolejna prosta zagadka
#2150
Author: Andrzej Grażyński
Date: Mon, 22 Mar 2010 17:13
9 lines
1005 bytes
W EAX jest liczba ze znakiem, należy umieścić w EAX wartość funkcji 
signum(EAX), czyli

1 gdy w EAX jest liczba dodatnia (czyli bit znaku = 0 i nie wszystkie 
bity są zerowe)

0 gdy w jest 0 (wszystkie bity są zerowe)

-1 gdy w EAX jest liczba ujemna (bit znaku = 1)
Re: Kolejna prosta zagadka
#2151
Author: Wojciech Muła
Date: Tue, 23 Mar 2010 11:01
16 lines
1240 bytes
Andrzej Grażyński <grazynsk@petex.com.pl> wrote:

> W EAX jest liczba ze znakiem, należy umieścić w EAX wartość funkcji 
> signum(EAX), czyli
> 
> 1 gdy w EAX jest liczba dodatnia (czyli bit znaku = 0 i nie wszystkie 
> bity są zerowe)
> 
> 0 gdy w jest 0 (wszystkie bity są zerowe)
> 
> -1 gdy w EAX jest liczba ujemna (bit znaku = 1)

Moja wersja ma 6 instrukcji.
Pokażcie swoje :)

w.
Re: Kolejna prosta zagadka
#2152
Author: Andrzej Grażyński
Date: Tue, 23 Mar 2010 20:25
22 lines
1396 bytes
Wojciech Muła pisze:
> Andrzej Grażyński <grazynsk@petex.com.pl> wrote:
> 
>> W EAX jest liczba ze znakiem, należy umieścić w EAX wartość funkcji 
>> signum(EAX), czyli
>>
>> 1 gdy w EAX jest liczba dodatnia (czyli bit znaku = 0 i nie wszystkie 
>> bity są zerowe)
>>
>> 0 gdy w jest 0 (wszystkie bity są zerowe)
>>
>> -1 gdy w EAX jest liczba ujemna (bit znaku = 1)
> 
> Moja wersja ma 6 instrukcji.
> Pokażcie swoje :)
> 
> w.

CDQ
NEG EAX
RCL EDX,1
MOV EAX,EDX
Re: Kolejna prosta zagadka
#2153
Author: Wojciech Muła
Date: Wed, 24 Mar 2010 09:35
37 lines
1796 bytes
Andrzej Grażyński <grazynsk@petex.com.pl> wrote:

> >> W EAX jest liczba ze znakiem, należy umieścić w EAX wartość funkcji 
> >> signum(EAX), czyli
> >>
> >> 1 gdy w EAX jest liczba dodatnia (czyli bit znaku = 0 i nie wszystkie 
> >> bity są zerowe)
> >>
> >> 0 gdy w jest 0 (wszystkie bity są zerowe)
> >>
> >> -1 gdy w EAX jest liczba ujemna (bit znaku = 1)
> > 
> > Moja wersja ma 6 instrukcji.
> > Pokażcie swoje :)
> 
> CDQ
> NEG EAX
> RCL EDX,1
> MOV EAX,EDX

Wow, jestem pod wrażeniem. :) Naprawdę sprytne.
Moje podejście w ogóle nie wymaga dostępu do znacznika
przeniesienia i wykorzystuje jedynie proste instrukcje.

	mov edx, eax
	sar eax, 32
	
	and edx, 0x7ffffffff
	add edx, 0x7ffffffff
	shr edx, 31

	or  eax, edx

w.

-- 
Mamy oswojoną sarnę i w związku z tym projektuję, by dorobić do niej kłódkę.
Re: Kolejna prosta zagadka
#2154
Author: Andrzej Grażyński
Date: Wed, 24 Mar 2010 18:56
44 lines
1964 bytes
Wojciech Muła pisze:
> Andrzej Grażyński <grazynsk@petex.com.pl> wrote:
> 
>>>> W EAX jest liczba ze znakiem, należy umieścić w EAX wartość funkcji 
>>>> signum(EAX), czyli
>>>>
>>>> 1 gdy w EAX jest liczba dodatnia (czyli bit znaku = 0 i nie wszystkie 
>>>> bity są zerowe)
>>>>
>>>> 0 gdy w jest 0 (wszystkie bity są zerowe)
>>>>
>>>> -1 gdy w EAX jest liczba ujemna (bit znaku = 1)
>>> Moja wersja ma 6 instrukcji.
>>> Pokażcie swoje :)
>> CDQ
>> NEG EAX
>> RCL EDX,1
>> MOV EAX,EDX
> 
> Wow, jestem pod wrażeniem. :) Naprawdę sprytne.
> Moje podejście w ogóle nie wymaga dostępu do znacznika
> przeniesienia i wykorzystuje jedynie proste instrukcje.
> 
> 	sar eax, 32

Niestety, wielkość przesunięcia obcinana jest do 5 bitów, więc SAR 
EAX,32 oznacza to samo, co SAR EAX,0



Inny mój wariant:

MOV EDX,EAX
OR  EAX,EAX
SETG AL
SETL DL
SUB EAX,EDX






> 	
Re: Kolejna prosta zagadka
#2155
Author: Wojciech Muła
Date: Wed, 24 Mar 2010 20:35
34 lines
1808 bytes
Andrzej Grażyński <grazynsk@petex.com.pl> wrote:

> >>> Moja wersja ma 6 instrukcji.
> >>> Pokażcie swoje :)
> >> CDQ
> >> NEG EAX
> >> RCL EDX,1
> >> MOV EAX,EDX
> > 
> > Wow, jestem pod wrażeniem. :) Naprawdę sprytne.
> > Moje podejście w ogóle nie wymaga dostępu do znacznika
> > przeniesienia i wykorzystuje jedynie proste instrukcje.
> > 
> > 	sar eax, 32
> 
> Niestety, wielkość przesunięcia obcinana jest do 5 bitów, więc SAR 
> EAX,32 oznacza to samo, co SAR EAX,0

Literówka, powinno być oczywiście 31.

> Inny mój wariant:
> 
> MOV EDX,EAX
> OR  EAX,EAX
> SETG AL
> SETL DL
> SUB EAX,EDX

Też sprytne :)

w.

-- 
Mamy oswojoną sarnę i w związku z tym projektuję, by dorobić do niej kłódkę.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads