Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionsous linux ils sont sur 32 bit(8 caractères hexa) et sous windows ils sont sur 24 bitDe quoi tu parles ? Structures, variables, objets ?
#ifdef ARCH_X86 static mmx_t mmx_ffffffff={0xffffffffffffffffull}; movq_m2r (mmx_ffffffff,mm0); movq_m2r (mmx_ffffffff,mm1); switch (BorderSize) { case 1: psllq_i2r (8,mm0); psrlq_i2r (8,mm1); break; case 2: psllq_i2r (16,mm0); psrlq_i2r (16,mm1); break; case 3: psllq_i2r (24,mm0); psrlq_i2r (24,mm1); break; case 4: psllq_i2r (32,mm0); psrlq_i2r (32,mm1); break; case 5: psllq_i2r (40,mm0); psrlq_i2r (40,mm1); break; case 6: psllq_i2r (48,mm0); psrlq_i2r (48,mm1); break; case 7: psllq_i2r (56,mm0); psrlq_i2r (56,mm1); break; }; unsigned char *OutLeft= yuv, *OutRight= yuv+x__-8; for (int yy= y__; yy; yy--) { movq_m2r (*OutLeft,mm2); movq_m2r (*OutRight,mm3); pand_r2r (mm0,mm2); pand_r2r (mm1,mm3); #ifdef __WITH_MOVNTQ__ movntq_r2m (mm2,*OutLeft); movntq_r2m (mm3,*OutRight); #else movq_r2m (mm2,*OutLeft); movq_r2m (mm3,*OutRight); #endif OutLeft+= x__; OutRight+= x__; }; Memms(); #endif
#include "MCharImage.h" #include "MDetecteur.h" #include "MListePI.h" //#include "MListeCouples.h" #include "MUtils.h" using namespace std; using namespace local_vis_eric; int main (int argc,char** argv) { if (argc==3) { //Ouverture des images cout << "ouverture des images" << endl; MCharImage Image1,Image2; //raz Image1.Load(argv[1]); ................ }
int IsColored= 0; //ifstream Image(PpmOrPgm); // créer un flot d'entrée associé à un fichier ifstream Image(PpmOrPgm,ios::in); // ajouté if (Image.bad()) //** test la valeur de badbit pour savoir si le flot est dans un état irrécupérable return 0; char C; //** Image.get() extrait un caractère du flot d'entrée et en renvoie la valeur (sous forme d'un entier) ; fournit EOF en cas de fin de fichier while ((C Image.get()) '#') { do C = Image.get(); while (C != '\n'); }; Image.putback(C); //** Le caractère passé en paramètre de cette fonction est ajouté à la fin du flux fonctionne correctement, le caractère réinséré doit être le dernier caractère lu, char Tmp[256]; Image.get(Tmp, 256, '\n'); //**extrait 255 caractères du flot et les place à l'adresse Tmp (le tampon). La lecture s'arrête éventuellement après le délimiteur s'il est rencontré. Image.get(); if (!strcmp(Tmp, "P5")) IsColored= 0; else if (!strcmp(Tmp, "P6") || !strcmp(Tmp, "P3")) IsColored= 1; else return 0; while ((C Image.get()) '#') { do C = Image.get(); while (C != '\n'); }; Image.putback(C); int xx, yy, zz; Image >> xx >> yy >> zz; if ((xx <= 0) || (yy <= 0) || (zz!= 255 && zz!= 254)) return 0; SetSize(xx,yy); Image.get(); int L= x__*y__; // X__=xx y__=yy if (!IsColored) { Image.read((char*)yuv, L); } else if (!strcmp(Tmp, "P6")) { // color binary char* Tmp2= new char[3*L]; Image.read(Tmp2, 3*L); for (int i= 0; i< L; i++) yuv[i]= Tmp2[3*i+1]; delete[] Tmp2; } else if (!strcmp(Tmp, "P3")) { // color ascii int R, G, B; for (int i= 0; i< L; i++) { Image >> R >> G >> B; yuv[i]= G; }; }; return 1; }
x__=1024 y__=768 yuv = 0x2e0030 "\f\f\r\016\r\017\v\016\016\r\r\016\017\020\016\020\020\020\020\021\022\022\022\024\025\024\024\025\025\025\026\026\027\026\027\027\027\027\030\030\031\032\031"
(gdb) print Image1 $1 {x__ 1024, y__ = 768, yuv 0xb7f2b010 "\f\f\r\016\r\017\v\016\016\r\r\016\017\020\016\020\020\020\020\021\022\022\022\024\025\024\024\025\025\025\026\026\027\026\027\027\027\027\030\030\031\032\031\032\032\033\033\033\033\034\034\034\034\034\033\036\034\035\036\037\037\037\037 \037\037\036\037\036\037\036\036 \037\037\037\036\036"#"!$%#""!#"""##""$%&"! \037 ""\..., ReadOnly false}
#ifdef ARCH_X86 static mmx_t mmx_ffffffff={0xffffffffffffffffull}; movq_m2r (mmx_ffffffff,mm0); movq_m2r (mmx_ffffffff,mm1); switch (BorderSize) { case 1: psllq_i2r (8,mm0); psrlq_i2r (8,mm1); break; case 2: psllq_i2r (16,mm0); psrlq_i2r (16,mm1); break; case 3: psllq_i2r (24,mm0); psrlq_i2r (24,mm1); break; case 4: psllq_i2r (32,mm0); psrlq_i2r (32,mm1); break; case 5: psllq_i2r (40,mm0); psrlq_i2r (40,mm1); break; case 6: psllq_i2r (48,mm0); psrlq_i2r (48,mm1); break; case 7: psllq_i2r (56,mm0); psrlq_i2r (56,mm1); break; }; unsigned char *OutLeft= yuv, *OutRight= yuv+x__-8; for (int yy= y__; yy; yy--) { movq_m2r (*OutLeft,mm2); movq_m2r (*OutRight,mm3); pand_r2r (mm0,mm2); pand_r2r (mm1,mm3); #ifdef __WITH_MOVNTQ__ movntq_r2m (mm2,*OutLeft); movntq_r2m (mm3,*OutRight); #else movq_r2m (mm2,*OutLeft); movq_r2m (mm3,*OutRight); #endif OutLeft+= x__; OutRight+= x__; }; Memms(); #endif
int main (int argc,char *argv[]) { MCharImage Image1,Image2; Image1.Load(argv[1]); } int MCharImage::Load(const char* PpmOrPgm) { int IsColored= 0; ifstream Image(PpmOrPgm); // créer un flot d'entrée associé à un fichier if (Image.bad()) //** test la valeur de badbit pour savoir si le flot est dans un état irrécupérable return 0; char C; while ((C Image.get()) '#') { do C = Image.get(); while (C != '\n'); }; Image.putback(C); char Tmp[256]; Image.get(Tmp, 256, '\n'); Image.get(); if (!strcmp(Tmp, "P5")) IsColored= 0; else if (!strcmp(Tmp, "P6") || !strcmp(Tmp, "P3")) IsColored= 1; else return 0; while ((C Image.get()) '#') { do C = Image.get(); while (C != '\n'); }; Image.putback(C); int xx, yy, zz; Image >> xx >> yy >> zz; if ((xx <= 0) || (yy <= 0) || (zz!= 255 && zz!= 254)) return 0; SetSize(xx,yy); Image.get(); int L= x__*y__; // X__=xx y__=yy if (!IsColored) { Image.read((char*)yuv, L); } else if (!strcmp(Tmp, "P6")) { // color binary char* Tmp2= new char[3*L]; Image.read(Tmp2, 3*L); for (int i= 0; i< L; i++) yuv[i]= Tmp2[3*i+1]; delete[] Tmp2; } else if (!strcmp(Tmp, "P3")) { // color ascii int R, G, B; for (int i= 0; i< L; i++) { Image >> R >> G >> B; yuv[i]= G; }; }; return 1; }