91Fermer93
Kevin KoflerLe 19/10/2007 à 00:42
PpHd (./90) :
Installe le alors avec preos("strict_calculator")Il sera strict sur la variable CALCULATOR.

Du coup on ne peut plus du tout lancer les anciens programmes, même s'ils n'ont pas besoin d'être patchés, et même si on les patche avec GhostBuster (parce que GhostBuster ne peut pas mettre le flag _ti89ti à cause du problème du prochain paragraphe).
Martial Demolins (./89) :
et que le test se résumait souvent à tst.b CALCULATOR / bpl machin

Justement, tu viens de soulever un autre problème là. Le test est normalement un bne dans les programmes prédatant PreOs 0.70, pas un bpl. PreOs utilise donc CALCULATOR==0 pour les programmes qui n'ont pas le flag Titanium et CALCULATOR==-1 pour ceux qui l'ont. Du coup ça empêche de mettre le flag dans un patcheur comme GhostBuster. Cette définition est aussi inconsistente avec celle de TIGCC (du coup TIGCCLIB est obligé de traduire* la valeur de CALCULATOR en mode kernel sick) et des premiers kernels pour la Titanium (TitaniK et Iceberg). De plus, CALCULATOR a toujours été non signé dans TIGCC, donc la valeur -1 n'a aucun sens.

Mais ça fait longtemps que je dis tout ça à PpHd (depuis PreOs 0.70 au moins, même avant sa sortie officielle si je me rappelle bien) et il n'a pas tenu compte de mes remarques.

* traduire comme ça:
/* PreOs 0.70 says CALCULATOR is -1 on the Titanium. We don't. */
#define CALCULATOR ((signed char)_CALCULATOR[0]>0?_CALCULATOR[0]:0)

Heureusement que GCC est capable d'optimiser les tests les plus courants (if (CALCULATOR), if (!CALCULATOR), if (CALCULATOR==constante)).