Contenido principal

__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 (".byte 0xCC");
__asm__ volatile (".byte 0xF1");

Archivado en: Programación |

3 comentarios

  1. Blackubay Octubre 13, 2010 @ 7:44 am

    Y esto para que sirve compadre?

  2. flacman Julio 14, 2011 @ 2:25 am

    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

  3. Sysroot Agosto 17, 2011 @ 8:43 pm

    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? :)

Deja un comentario