2460

J'hésitais à faire un parallèle avec Kevin en effet : d'un côté le contributeur peut dire que c'est la faute de cette communauté pourrie©, de l'autre c'était peut-être un vrai chieur en privé qui a poussé l'équipe à le diriger vers la sortie pour travailler plus sereinement.
Boarf, au pire comme il le signale, tu as juste à ajouter les sources manuellement.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

2461

./2445 FN,méluche,bayrou,le facteur?

au 2e tour, de toute façon, c'est binaire triso

2462

Chirac/Le Pen ?
avatar

2463

2464

Bah quoi, on l'a portant eu ce deuxième tour là ^^
avatar
pedrolane stoppe la chute des chevaux

La DNC-Team : un club plein de mystères

2465

2466

Je viens d'avoir un bug amusant (pas pu faire de screenshot, donc c'est une photo pas top) :
hUA8

Des curseurs de souris graphiques en mode texte, je ne savais même pas que c'était possible cheeky
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2467

smile
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

2468

#pointyoshinoir2#
avatar

2469

grin
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

2470

C'est justifié hehe
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2471

Bel hommage et des infos intéressantes : http://mcsolaar.lemouv.fr
avatar
----- SNK Forever -----
Association Retro-gaming Connexion : http://www.retro-gc.fr/
http://www.consoles-portables.com

2472

Terminé
1550 lignes, 2.7 ko, strings des instructions et offset de leur données respectives dans la table ajoutées. Pfiou j'en ai ras le cul, c'est pas très bandant comme travail grin
Mais bon, plus qu'à coder, maitenant on peut assembler ! \o/

2473

Beau travail top

Sinon, je remarque que tu combines tes constantes avec des additions au lieu de OU logiques. Pourquoi pas, mais c'est en général déconseillé, parce que ça empêche d'écrire des constructions comme ça :
#define ENABLE_TRUC        (1 << 0)
#define ENABLE_MACHIN      (1 << 1)
#define ENABLE_CHOSE       (1 << 2)
#define OPTION_1           (ENABLE_TRUC | ENABLE_MACHIN)
#define OPTION_2           (ENABLE_MACHIN | ENABLE_CHOSE)
#define OPTIONS_1_ET_2     (OPTION_1 | OPTION_2)

Si tu remplaces les | par des +, la définition de OPTIONS_1_ET_2 sera fausse car ENABLE_MACHIN apparaît deux fois dans l'expression.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2474

En effet, bien vu. Corrigé. smile

2475

Autre chose : y'a un bug dans ta macro align. Ce n'est pas ds.b 8-\1, c'est ds.b (8-1)-\1 ; tu as oublié de compter le \0 que tu rajoutes juste avant wink

Par ailleurs, on en avait déjà discuté, mais il y a une méthode plus rapide pour identifier les tokens. Comme la grande majorité des tokens font 4 caractères ou moins, tu peux faire une table avec tous ceux-là, et utiliser des instructions de comparaison en .l au lieu de travailler caractère par caractère (en plus ça réduit l'occupation mémoire de ta table), avec une recherche linéaire si t'es paresseux ou une recherche dichotomique si tu veux des perfs optimales. Pour les quelques tokens plus longs, tu peux faire une 2ème table avec ton format actuel.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2476

Je garde ça sous le coude en effet. Mais on va dire que c'est un module assez indépendant de l'assemblage à proprement parler, donc ça sera faisable ultérieurement.
Merci pour le bug. D'ailleurs, comme tu peux voir, mes entrées font toute la même longueur, le but est de faire une recherche par dichotomie en effet. Comme j'ai moins de 256 éléments, ça fera au maximum 8 recherches, ça reste honorable, sachant que c'est pas forcément ça le plus critique.
L'avantage de cette recherche est qu'elle est hyper simple à coder, tout en étant en moyenne 10 fois plus efficace qu'une recherche linéaire, et accessoirement elle m'évite de m'égarer juste avant d'attaquer le vif du sujet (oui oui, j'essaye de faire un effort grin).

2477

Oui tu as raison smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2478

t'as une idee de la frequence d'apparition des instructions dans un programme asm "classique" ?

ie: x% de mov, y% de add, etc...
ptet meme qu'une recherche lineaire dans un tableau trie par frequence moyenne des instructions serait plus rapide qu'une recherche dichotomique ^^
avatar
HURRRR !

2479

Pas con. Ca serait à tester, après un peu de profiling pour créer ce tableau. Encore une fois je garde sous le coude, merci bien. smile

(Je veux bien filer mon source, si qqun veut faire des stats, j'ai la liste des instructions à sa disposition grin)

2480

Voilà. J'ai pas testé mais ça devrait ressembler à ça :
FindStringInTable
;===============================================================================
;
;	FindStringInTable
;
;	Find if a string in a table
;
;	in	a0	Beginning of the table
;		a1	End of the table
;		a2	String to find
;		d0	Size of an element
;		fp	frame pointer
;
;	out	a0	Point to the entry if it exists, else NULL
;
;	destroy	std
;
;===============================================================================

FindStringInTable:

	movem.l	a2-a3,-(sp)

\Loop:	cmpa.l	a0,a1
	beq.s	\NotFound				; No entry found in the table
	movea.l	a1,a3
	suba.l	a0,a3					; Size of the table
	move.l	a3,d1
	divu.w	d0,d1					; Number of elements
	lsr.w	#1,d1					; /2
	mulu.w	d0,d1					; Offset of the middle

	lea	0(a0,d1.w),a3				; Entry in the middle
	bsr	\CheckEntry
	bne.s	\Retry

		lea	0(a0,d1.w),a0			; Success
\End:		movem.l	(sp)+,a2-a3
		rts

\Retry:	bcs.s	\Greater				; Else strip interval

		lea	-Instruction.sizeof(a0,d1.w),a1	; Middle - 1
		bra.s	\Loop

\Greater:	lea	Instruction.sizeof(a0,d1.w),a0	; Middle + 1
		bra.s	\Loop

	;---------------------------------------------------------------
	;	No match found in the table
	;---------------------------------------------------------------

\NotFound:
	suba.l	a0,a0
	bra.s	\End

	;---------------------------------------------------------------
	;	Check if strings match. Set the flags according to the comparison
	;---------------------------------------------------------------

\CheckEntry:
	movea.l	4(sp),a2		; Restore org a2
\CheckLoop:
	move.b	(a3)+,d2
	bne.s	\Not0			; At the end of the string, we must check that the next char is valid

		tst.b	(a2)		; All these cmp will set Z-flag
		beq.s	\Rts		; EOF

		cmpi.b	#EOL,(a2)
		beq.s	\Rts

		cmpi.b	#ASM_COMMENT_CHAR,(a2)
		beq.s	\Rts

		cmpi.b	#SPACE,(a2)
		beq.s	\Rts

		cmpi.b	#HTAB,(a2)
		beq.s	\Rts

		cmpi.b	#'.',(a2)	; Size
		beq.s	\Rts		; Else the next comparison will set the flags

\Not0:	cmp.b	(a2)+,d2
	beq.s	\CheckLoop			; Chars match, check next
\Rts:	rts

Le divu / lsr / mulu pour trouver l'offset de l'élément du milieu me plait pas trop, mais j'ai pas trouvé comment faire (taille / 2) modulo (taille d'un élément). Si quelqu'un a une idée, je prends...

2481

Ta table n'a pas une taille fixe connue à la compilation ?

2482

C'est fait pour gérer deux tables, une de directives et une d'instructions. Les tailles de ces deux tables sont connues.

2483

Tu ne peux pas t'arranger pour que la taille des éléments soient une puissance de 2 ?
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2484

Mmm je n'avais pas vu que c'était une recherche pas dichotomie, je pensais que tu ne voulais la moitié de la table qu'une seule fois grin
En tout cas, ce serait peut-être plus efficace de limiter le nombre de boucles de la dichotomie et de terminer par une rechercher linéaire toute simple quand le bloc ne fait plus que quelques cases ? (à voir en fonction du nombre de cycles du mulu et divu)

2485

Zerosquare (./2483) :
Tu ne peux pas t'arranger pour que la taille des éléments soient une puissance de 2 ?

Oui, j'ai pensé à ça, même pas besoin que la table soit multiple de 2 en fait.
Ma table a 115 éléments. Suffit de partir de l'élément 64, avec un offset initialisé à 32, et de se ballader vers le haut ou vers le bas en réduisant cet offset de moitié à chaque itération. Et si on est en dehors de la table par le excès, on considère qu'on a tout simplement dépassé.

Mais bon, ça revient à gérer ce cas pour gagner un divu, je ne sais pas si il y a énormément à gagner, ou alors je vois pas comment. Mais il n'est que 6h du mat grin

2486

Dans le temps, on me donnait 10 francs et je ramenais un journal, une baguette de pain et une bouteille d'eau. Aujourd'hui c'est plus possible de faire ça.

Ils ont mis des caméras partout.
avatar
Spartine, la fille que ce soir elle dîne en enfer: http://www.spartine.com

Pockett Videogames, le site de toutes les consoles portables!: http://www.pockett.net

J'aime beaucoup faire des dessins aux petites filles! C'est ma passion.

2487

grin

J'ai renversé un peu de mon rhum par terre, genre une cuillère à soupe. Mon chien a tout lappé.

2488

Il va bien dormir ce soir cheeky
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2489

2490

Tiens, "Linux est un os", ou comment faire une boucle (où un chien peut se bouffer lui-même, je crois qu'on appelle ça se mordre la queue).
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741