__asm__ volatile
Septiembre 10, 2010
int flag = 0;
__asm__ volatile (
"mov %%fs:24, %%eax;"
"mov 0x30(%%eax), %%eax;"
"movzx 0x2(%%eax), %0;"
:"=r" (flag));
return flag;
__asm__ volatile (
"mov %%fs:24, %%eax;"
"mov 0x30(%%eax), %%eax;"
"movzx 0x2(%%eax), %0;"
:"=r" (flag));
return flag;
__asm__ volatile (".byte 0xCC");
__asm__ volatile (".byte 0xF1");
Archivado en: Programación |




Y esto para que sirve compadre?
volatile sirve para q el compilador no joda básicamente xD, pues para q el compilador no lo mueva de sitio o haga cualquiera de sus mañas para optimizar (igual creo q solo funca en gcc.
básicamente ahí está moviendo parámetros a direcciones de pila "no permitidas" y poniendo el resultaod en una variable flag...
mmm creo q estoy adivinando pero está como jugando con threads (xD no lo explico pq no se q quiso hacer con "movzx 0x2(%%eax), %0;")
pero creo q es solo echarle una leidita a como funca linux
Exacto! volatile permite que el compilador no optimice el código.
La función es usada por una función muy famosa de debugging, la sintaxis 0x2(%%eax) es lo mismo que tener [%eax + 2], la primera es notación AT&T (Usada por gcc), mientras que la segunda y más conocida es de Intel.
¿Quién da más?