p = NULL = (void* ) 0mais ca peut être différent d'un memset(p, 0, sizeof (void*));
Ah ? Et pourquoi ? oO
Folco (./90) :p = NULL = (void* ) 0mais ca peut être différent d'un memset(p, 0, sizeof (void*));
Ah ? Et pourquoi ? oO
#include <tigcclib.h> #define USE_KERNEL #define USE_TI89 #define USE_TI89TI #define USE_TI92PLUS #define USE_V200 int _library; // Map name const char map1__0000[] = "Test";
#include "kernel.h" int _library;
Folco (./81) :
Habituellement, est-ce que vous explicitez toutes les conditions, genre if(truc !=0) ou if(machin == 0) ?
Folco (./92) :
Je suis plutôt en train de chercher à comprendre pourqoi ça ne constitue pas une bonne vieille lib dynamique :#include <tigcclib.h> #define USE_KERNEL #define USE_TI89 #define USE_TI89TI #define USE_TI92PLUS #define USE_V200 int _library;
Je pourrais faire un Data[index] & MASK, mais idéalement, il me faudrait un btst, non ?
Je vois bien peekbit, mais est-ce optimal ?
lsr.w #4,dn addq.w #1,dn lsl.w #4,dn
addi.w #16,dn andi.w #0xFFF0,dn
Lionel Debroux (./100) :
Ces définitions ont été faites avant les dernières versions de GCC, mais les macros de pixel d'ExtGraph utilisent de l'ASM inline avec opérandes C - une fois que la définition de ces macros est correcte (pas mal de bugfixes ont été nécessaires), on est sûr d'avoir le code optimal.
Folco (./106) :
Comment le cmopilateur va traiter ce type d'affectation :
CharX = (((CharX + 16) / 16) * 16);
Kevin Kofler (./116) :Lionel Debroux (./100) :Non, pas pour les tests! L'assembleur inline ne peut pas retourner une valeur dans un flag, donc tu es obligé de la mettre dans un registre pour rien. C'est pour ça que la macro de TIGCC n'utilise pas l'assembleur inline pour les tests!
Ces définitions ont été faites avant les dernières versions de GCC, mais les macros de pixel d'ExtGraph utilisent de l'ASM inline avec opérandes C - une fois que la définition de ces macros est correcte (pas mal de bugfixes ont été nécessaires), on est sûr d'avoir le code optimal.