viernes, noviembre 21, 2008

Uso de extensiones del GCC en Linux

(vía osnews). Acabo de leer GCC Hacks in the Linux Kernel, donde nos cuentan alguna de las extensiones del gcc que se utilizan en las fuentes de Linux.

  • Descubrimiento de tipos. GCC tiene una extensión denomianda typeof, que puede ser usado:
    int x;
    typeof (x) y;
    En este caso y sería un entero.
  • case ranges, que permite utilizar rango en las construciones switch/case:
    switch(c){
        case 1...9:
            printf("Menor que 10\n");
            break;
        case 10...19:
            printf("Menor que 10\n");
            break;
        default:
            printf("Desconocido\n");
    }
  • arrays de longitud cero, útiles para definir en estructuras que son cabceras para un objeto de dimensión variable:
    struct pascalstring{
        size_t length;
        char string[0];
    };
Extensiones más exóticas son aquellas que permiten obtener información sobre el flujo de ejecución de un programa, alinear un objeto en la frontera de una página, introducir información que pueden aprovechar los optimizadores para los predictores de saltos de los micros , activar el prefetch para llenar la memoria caché con la información que se vaya a tratar evitando tener que ir a la memoria primcipal , usar las intrucciones SIMD de los micros que la soporten o instrucciones para accesos atómicos a memoria.

Technorati Tags:

2 comentarios:

Anónimo dijo...

Creo que en el switch se aprecia un efecto del copypaste :-P

Drizzt dijo...

XD. Tienes razón