🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
3 messages
3 total messages Started by Bartosz Wójcik Wed, 20 Jan 2010 12:22
random w makrach MASMa
#2075
Author: Bartosz Wójcik
Date: Wed, 20 Jan 2010 12:22
33 lines
1856 bytes
Witam,

Mam taki maly dylemat, chce w poziomu makra miec dostep do jakichs
pseudolosowych wartosci:

test MACRO arg:req

 rand = ???   ; <-- jak tu wrzucic jakas losowa wartosc

 IF rand EQ 0

 ELSEIF rand EQ 1

 ENDIF

ENDM

Nie wiem czy to jest mozliwe w ogole pod MASMem, bo ta wartosc ma byc
generowana statycznie (a nie przez wywolanie do funkcji losowej),
probowalem bawic sie offsetami, ale MASM nie pozwala na manipulacje
relokowalnych elementow w wartosciach lokalnych makra, wiec proby
wykorzystania biezacego polozenia w kodzie $ legly w gruzach, ogladalem
zestaw makr z pakietu MASM32, ale nic mi sie nie rzucilo w oczy, co mogloby
byc wykorzystane jako zrodlo losowej liczby.

1. Makro
2. ???
3. Profit

Jakies pomysly?

-- 
Bartosz Wójcik | www.pelock.com
Re: random w makrach MASMa
#2076
Author: Bogdan (bogdro)
Date: Wed, 20 Jan 2010 17:57
54 lines
2548 bytes
W dniu 20.01.2010 13:22, Bartosz Wójcik pisze:
> Witam,
> 
> Mam taki maly dylemat, chce w poziomu makra miec dostep do jakichs
> pseudolosowych wartosci:
> 
> test MACRO arg:req
> 
>  rand = ???   ; <-- jak tu wrzucic jakas losowa wartosc
> 
>  IF rand EQ 0
> 
>  ELSEIF rand EQ 1
> 
>  ENDIF
> 
> ENDM
> 
> Nie wiem czy to jest mozliwe w ogole pod MASMem, bo ta wartosc ma byc
> generowana statycznie (a nie przez wywolanie do funkcji losowej),
> probowalem bawic sie offsetami, ale MASM nie pozwala na manipulacje
> relokowalnych elementow w wartosciach lokalnych makra, wiec proby
> wykorzystania biezacego polozenia w kodzie $ legly w gruzach, ogladalem
> zestaw makr z pakietu MASM32, ale nic mi sie nie rzucilo w oczy, co mogloby
> byc wykorzystane jako zrodlo losowej liczby.
> 
> 1. Makro
> 2. ???
> 3. Profit
> 
> Jakies pomysly?

 Możesz wpisywać tam numer bieżącej linii, jeśli MASM takie coś
obsługuje (w NASMie jest bodajże makro __LINE__).
 Jeśli MASM obsługuje redefinicję symboli stałych, można zdefiniować
sobie jakąś stałą - "seed" dla generatora, po czym w każdym wywołaniu
makra ją zmieniać - coś w stylu takiego pseudokodu:

seed equ 0x12345678

test macro arg:req

	rand equ seed
	seed equ seed * 17 + 13131313
	...
endm

 Podobnie (ale oczywiście z lepszymi liczbami) robi to funkcja rand() z C.

-- 
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.JabberPL.org www.torproject.org Soft (EN): miniurl.pl/bogdro-soft
Re: random w makrach MASMa
#2077
Author: Bartosz Wójcik
Date: Wed, 20 Jan 2010 19:37
16 lines
1688 bytes
On Wed, 20 Jan 2010 18:57:52 +0100, Bogdan (bogdro) wrote:

> W dniu 20.01.2010 13:22, Bartosz Wójcik pisze:

>  Możesz wpisywać tam numer bieżącej linii, jeśli MASM takie coś
> obsługuje (w NASMie jest bodajże makro __LINE__).
>  Jeśli MASM obsługuje redefinicję symboli stałych, można zdefiniować
> sobie jakąś stałą - "seed" dla generatora, po czym w każdym wywołaniu
> makra ją zmieniać - coś w stylu takiego pseudokodu:
> 

dzieki, to z equ nie przeszlo, ale po sugestii o __LINE__ znalazlem w
binarce ml.exe odwolanie do @Line i to bylo to :)

-- 
Bartosz Wójcik | www.pelock.com
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