30

(c'est quoi le problème ?)

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

31

Quand je fait varier x et y (avec les touches directionnelles), z reste identique.

32

Tu as déclaré z comme variable locale dans calcz, donc il ne sortira pas de la fonction. Il faut déclarer une variable globale, ou bien passer par une valeur de retour.

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

33

Je la déclare où cette variable globale ?

34

dans z.c en dehors de calcz(), et tu rajoutes une déclaration "extern int z;" dans z.h... (et il faut aussi pas oublier de supprimer la déclaration dans _main)

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

35

Je ne peut pas mettre un autre "extern int z;" dans le Main ? Car je me sert autre part de z et il me dit qu'elle est pas déclarée.

36

Les déclarations extern on les met juste dans le .h, normalement smile (et comme il est inclus partout tu devrais pas avoir d'erreur)

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

37

Ah j'avais mis la déclaration externe dans le .c ... Par contre j'ai maintenant un autre problème : chaque fois que je vais chercher z dans le main TIGCC me dit "unresolved reference to'z'"


EDIT : pas que dans le main enfait, partout.

38

extern int z permet juste d'utiliser la variable, mais ne la définit pas : pour ça il faut mettre dans un des .c une déclaration du style "int z = 1;"

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

39

Juste dans 1 ?

40

Quand je met dans le main ou dans l'autre il me met les mêmes erreur et quand je met dans les deux, il veux bien compiler mais j'ai le même problème que tantôt (z ne change pas quand je change x et/ou y).


EDIT : petite présision : quand je le met dans un, il m'annule les erreur de celui-là mais pas de l'autre.

41

il faut pas le mettre à l'intérieur d'une fonction ^^ (sinon c'est une variable locale, pas globale)

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

42

Ok mais si je ne me le met pas il met 5/6 "Unresolved reference to 'z'"

43

poste ton code ^^

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

44

C'est fait !

45

Il faut utiliser une valeur de retour

Main.c
#include <tigcclib.h>
#include "Z.h"

void _main(void)
{
...
char b=0;
int x=0,y=0,z=1;
...
while(b==0)
{
...
z=calcz(x,y);
...
}
...
}


Z.c (entier)
#include "Z.h" 
 
int calcz(int x,int y) 
{
	int z;
	
	if((x==0) && (y==0))
	z=1;
	if((x==17) && (y==0))
	z=2;
	if((y==1) && (x<2))
	z=x+3;
	if((y==1) && (x>9))
	z=x-7;
	if((y==2) && (x<2))
	z=x+11;
	if((y==2) && (x>9))
	z=x+1;
	if(y==3)
	z=x+19;
	if(y==4)
	z=x+37;
	if((y==5) && (x<3))
	z=x+55;
	if((y==5) && (x>2))
	z=x+69;
	if((y==6) && (x<3))
	z=x+87;
	if((y==6) && (x>2))
	z=x+101;
	if(y==8)
	z=x+55;
	if(y==9)
	z=x+87;
	
	return z;
}


Z.h (entier aussi)
int calcz(int x,int y);
avatar

46

Je donne quand-même la solution correcte avec une variable globale:

Main.c
#include <tigcclib.h>
#include "Z.h"

void _main(void)
{
...
char b=0;
int x=0,y=0;
...
while(b==0)
{
...
calcz(x,y);
...
}
...
}


Z.c (entier)
#include "Z.h" 

int z;
 
int calcz(int x,int y) 
{
	if((x==0) && (y==0))
	z=1;
	if((x==17) && (y==0))
	z=2;
	if((y==1) && (x<2))
	z=x+3;
	if((y==1) && (x>9))
	z=x-7;
	if((y==2) && (x<2))
	z=x+11;
	if((y==2) && (x>9))
	z=x+1;
	if(y==3)
	z=x+19;
	if(y==4)
	z=x+37;
	if((y==5) && (x<3))
	z=x+55;
	if((y==5) && (x>2))
	z=x+69;
	if((y==6) && (x<3))
	z=x+87;
	if((y==6) && (x>2))
	z=x+101;
	if(y==8)
	z=x+55;
	if(y==9)
	z=x+87;
	
	return z;
}


Z.h (entier aussi)
void calcz(int x,int y);
extern int z;


mais la solution avec la valeur de retour est beaucoup plus propre!
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é

47

Merci à vous tous, ça marche.

48

49

Les deux, toutes choses égales par ailleurs on cherche à minimiser les dépendances donc préférer les variables locales aux variables globales, les constantes aux variables modifiables. C'est le coeur de la programmation fonctionnelle, et ça permet de minimiser les risques de bugs (variable pas initialisée), de potentiellement mieux optimiser (on sait exactement quand on a besoin de quelle valeur dans quelle variable, plutôt que de devoir la mettre "au cas où" si les dépendances sont mal connues), et sur les architectures plus modernes que les TI de paralléliser le code (si on sait que deux calculs sont indépendants on peut les exécuter en parallèle).

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

50

51

Non les compilateurs C n'en sont pas encore vraiment là (ça pourrait facilement rendre le programme beaucoup plus lent dans certains cas), mais ils peuvent utiliser les multiples unités de calcul au sein d'un même coeur, ou encore les instructions SIMD...

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

52

(pour traduire : les processeurs "modernes" sont capables, dans certaines conditions, d'exécuter plus d'une instruction par cycle d'horloge... si les inter-dépendances des instructions le permettent)
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

53

54

Bah, c'est pas si compliqué hein wink
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

55

56

Bah t'as fait de l'assembleur, tu dois bien pouvoir comprendre ce que sont deux instructions indépendantes l'une de l'autre non ? Bah pouf, en même temps cheeky
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

57

58

Dans les processeurs superscalaires modernes, ce sont des dizaines/centaines de milliers de transistors qui s'occupent de calculer les dépendances entre instructions, et d'exécuter en parallèle s'il n'y a pas d'interdépendance.
A moins qu'il s'agisse de commencer à faire traiter une instruction par une unité du proc avant que celle d'avant ait fini d'être traitée ?

Ca, c'est le pipeline, que les processeurs superscalaires font également, mais je ne pense pas que ce soit à ça que Ximoon faisait référence.


Combine le pipeline et l'exécution superscalaire (éventuellement out of order) et tu comprends pourquoi c'est autant le bazar d'écrire de l'assembleur optimisé sur un x86 moderne grin
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

59

Optimiser en taille reste plutôt facile, c'est la vitesse qui est très difficile à prévoir, et qui dépend énormément du CPU exact (donc du code super-rapide sur un Pentium 4 peut ramer à fond sur un Core 2 Duo).
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é

60

Et c'est surtout pour ça qu'un compilateur C sera souvent meilleur qu'un codeur pour générer du code sur ce genre de processeur happy

(je n'avais pas fini de lire ton post, donc pencil Lionel)
Lionel> effectivement, je ne parlais pas du pipeline en particulier, mais ça intervient aussi happy
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.