1

J'ai besoin d'une routine ASM générant des nombres aléatoires entiers entre 0 et x.

2

 jsr rand
 mulu #x,d0
 add.l d0,d0
 clr.w d0
 swap d0


Pour que ça marche, il faut linker avec tigcc.a (si tu compiles avec TIGCC IDE, c'est automatique). (Je n'ai fait que traduire ça en assembleur: #define random(x) ((short)((long)(unsigned short)rand()*(unsigned short)(x)/32768)), en optimisant bien sûr. attention Ce n'est équivalent que pour x<32768. Pour que ça marche aussi pour 32767<x<65536, il faut utiliser un lsr pour diviser par 32768.)
[edit]Edité par Kevin Kofler le 01-03-2002 à 15:02:55[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

effectivement, en optimisant bien smilegrinsmile
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

4

seulement qu'il faut faire mulu#x+1,d0
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

5

ben sinon tu utilises userlib::random qui le fait déjà... et si c le principe qui t'interresse regarde le sourcetongue

6

non, mieux vaut faire comme Kevin le dit, étant donné que c'est une routine du TIOS, je crois, donc c'est mieux.
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

7

Non non, c'est une routine en lib statique.

8

Exact, c'est une routine de tigcc.a, pas de AMS.

Et au fait, si le programme est suffisamment petit (<32 KO), on peut utiliser bsr rand plutôt que jsr rand.
[edit]Edité par Kevin Kofler le 02-03-2002 à 18:14:01[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

9

Merci
J'ai regardé les sources de userlib. Mais j'ai un probleme: comment faire pour
que le changement de la valeur de rand_seed soit mémorisé si le programme est archivéconfus
Je ne pense pas que le désarchivage puis le réarchivage du programme soit une bonne idée.
Ou faut-il acceder à la valeur de la variable systeme seed1 et la modifier.

10

tu prends la version de TIGCC...
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

11

Je ne peux pas (sauf si quelq'un peut me passer le code source): je programme on-calc.

12

en GNU asm, si le bout de code n'a pas changé :
rand:
	lea randseed(%pc),%a0
	move.l #0x41C64E6D,%d2
	move.l (%a0),%d1
	move.l %d2,%d0
	mulu %d1,%d0
	swap %d2
	mulu %d1,%d2
	swap %d1
	mulu #0x4E6D,%d1
	add.w %d1,%d2
	swap %d2
	clr.w %d2
	add.l %d2,%d0
	add.l #12345,%d0
	move.l %d0,(%a0)
	lsr.l #8,%d0
	and.w #32767,%d0
	rts
.data
	.even
randseed:
	.long 1


mais bon c'est pas ça qui va t'aider pour le randseed. Regarde plutôt ici :[URL]post.php?id=1,3541[/URL]