5.12 Alineando Campos dentro de Estructuras
Para el mejor rendimiento de E/S de memoria, los miembros de una estructura deben alinearse a direcciones que coincidan con sus tipos de datos. De no ser así, la CPU requerirá más tiempo para acceder a los miembros. Por ejemplo, un miembro tipo doble palabra debe alinearse en un límite de doble palabra La tabla 5.12.1 presenta las alineaciones que usan los compiladores de C y C++ de Microsoft, y las funciones de la API Win32. En lenguaje ensamblador, la directiva ALIGN establece la alineación de la dirección del siguiente campo o variable: ALIGN tipo de datos El siguiente ejemplo, alinea miVar a un límite de doble palabra: .data ALIGN DWORD miVar DWORD ? Vamos a definir de manera correcta la estructura Empleado, usando ALIGN para colocar a Años en un límite WORD y a Historial Salario en un límite DWORD. Los tamaños de los campos aparecen como comentarios. Empleado STRUCT numID BYTE "000000000" ; 9 Apellido BYTE 30 DUP(0) ; 30 ALIGN WORD ; se agregó 1 byte Anios WORD 0 ; 2 ALIGN DWORD ; se agregaron 2 bytes HistorialSalario DWORD 0,0,0,0 ; 16 Empleado ENDS ; 60 en total
tabla 5.12.1
|