22Fermer24
Kevin KoflerLe 25/10/2009 à 17:17
Kochise (./10) :
Pb de l'ASM, tu te trompes de registre ou taille d'opérande

… ou encore d'offset pour nettoyer la pile…
, surtout pas inadvertance, tu passes 2 jours à trouver pourquoi ça marche pas :/ Y'a interet à faire très très attention à ce qu'on fait !

Effectivement, ce genre d'erreurs ne peuvent pas se produire en C ou un autre langage de moyen ou haut niveau parce que c'est le compilateur qui s'occupe de ces détails automatiquement.
Folco (./12) :
Mais non, faut arrêter. Je dis pas que ça arrive jamais, mais avec l'habitude et des fonctions bien spécifiées, ça se passe très bien. Et quand l'algo est bon, il ne peut plus rester qu'une faute d'étourderie (mauvais registre, problème de pile). Ca se trouve en général très vite. Genre quand j'écris 1ko de code, je vais avoir 3 à 10 bugs cons, et en trois trace de la fonction, ça va sauter aux yeux.

N'importe quoi. J'ai déjà eu des erreurs de taille d'opérande qui n'ont pas été détectés pendant des mois voire des années! En général, c'est du code qui marche sous certaines conditions (par exemple si les octets testés en trop sont nuls dans un contexte où ils le sont dans 99% des cas, ou alors c'est du code censé détecter une erreur et personne n'a testé en commettant cette erreur), mais est totalement faux. Et comme déjà dit, c'est une classe d'erreurs qui n'existe pas dans un langage même un minimum type-safe (comme le C).
Brunni (./20) :
J'avais pourtant l'impression qu'il générait du bon code en général GCC confus

Il faut déjà qu'il gère ton CPU, ce qui n'est pas le cas ici…