1

Le but du jeu est de mettre a 0 les registres du 68000 (d0 a d7 et a0 a a6) avec le moins de code possible.
Evidemment les donnees externes sont autorisees mais sont aussi comptees dans le decompte.

Exemple:
 moveq #0,d0
 moveq #0,d1
 moveq #0,d2
 moveq #0,d3
 moveq #0,d4
 moveq #0,d5
 moveq #0,d6
 moveq #0,d7
 move.l d0,a0
 move.l d0,a1
 move.l d0,a2
 move.l d0,a3
 move.l d0,a4
 move.l d0,a5
 move.l d0,a6

Taille: 2*(8+7)=30 octets.

Autre exemple:
 moveq #0,d0
 movem.w Zero(pc),d1-d7
 movem.wZero(pc),a0-a6
 ...
Zero: dc.w 0,0,0,0,0,0,0

Taille: 2*(1+3*2+7) = 28 octets
Utilisation actucieuse du sign-extended.

A vous de jouer.

2

Tu fais combien, à titre indicatif ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

3

-

4

 moveq  #15,d0;2
\loop:
 clr.l    -(a7);4
 dbra   d0,\loop;8
 movem.l (a7)+,d0-d7/a0-a6;10
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

5

oups... on a le droit d'utiliser la pile ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

6

Ça n'affecte que d0-d7 :
  moveq.l #6,d0
loop:
  clr.l d1
  addq.b #1,loop+1
  dbf d0,loop
  addq.w #1,d0
16 octets sans compter les relogements (je ne sais pas combien font les relogements).
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

7

Flanker> Ton code prend 12 octets non ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

8

je compte 14 confus
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

9

12 octets ^^

Je pense qu'on aura du mal à faire mieux que ce qu'a fait Flanker...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

10

le dbra fait 2 octets
edit : le movem fait 4 octets triso
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

11

2+2+4+4

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

12

 moveq  #15,d0 ; 2
\loop:
 clr.l    -(a7) ; 2
 dbra   d0,\loop ; 4
 movem.l (a7)+,d0-d7/a0-a6 ; 4
 ; total = 2+2+4+4=12

Non ?

En tout cas, bravo, ta solution est bien plus simple et plus efficace que la mienne smile
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

13

Vous avez quand même des jeux de triso grin
avatar

14

ah oui, le movem est en 4,mais le dbra est en 2 je crois, comme les bra.s. Je me souviens plus
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

15

Sasume > la tienne n'utilise pas la pile
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

16

Mais ne met à 0 que d0-d7.
Sinon, DBcc prend 4 octets, le déplacement est toujours codé sur 16 bits (n'oublie pas que contrairement à Bcc, il faut préciser quel registre on veut décrémenter dans le code de l'instruction, donc il ne reste plus assez de place pour coder un déplacement sur 8 bits).

On peut réduire l'utilisation de la pile de ta routine de moitié en utilisant l'astuce de PpHd (extension du signe)
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

17

PpHd> Tu avais une autre solution en tête, toi ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

18

Non, il voulait juste que vous bossiez à sa place trivil
avatar

19

Sinon, autre jeu : [Jeu : Augmenter de 1 les registres] ^^ Vous trouvez quoi ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

20

Comme le ./6, mais avec addq à la place de clr et 14 à la place de 6 dans le moveq smile
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

21

Ça quoi :
  moveq.l #14,d0
loop:
  addq.l #1,d1
  addq.b #1,loop+1
  dbf d0,loop
14 octets sans compter les relogements (je ne sais toujours pas combien font les relogements).
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

22

Merde, c'est bête ce que je viens de poster, puisque d0 est détruit triroll
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

23

Bon, si on push/pop d0, ça prend 4 octets en plus, donc 20 sans compter le relogement.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

24

faut le sauvegarder avant : 4 octets de plus
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

25

y a bien plus court hehe

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

26

,loop move.l (a7)+,d0
En fait, je peux faire :  move.l d0,-(a7)
  moveq.l #15,d0
loop:
  addq.l #1,d1
  addq.b #1,loop+1
  dbf d0
Et ça prend 18 octets.

[edit] Non, c'est complètement idiot.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

27

\loop
	addq.l #1,a6
	subq.b #1,\loop+1
	bmi \loop

tongue
(10 octets + un relogement)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

28

cool
Pas mal smile
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

29

-

30

Je pense pas qu'on puisse faire mieux, et en fait je cherchais un analogue d'un truc comme ça pour effacer les registres, mais malheureusement addq/subq est la seule instruction qui ait une structure régulière pour les Dn et les An sad (donc faire moins de 12 octets avec du code auto-modifiant me paraît assez compromis ^^)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)