Ten en cuenta además el alineamiento. Al margen del tamaño de enteros, longs y demás, alinear estructuras a 8 bytes tiende a producir más fragmentación que alinearlas a 4 bytes por ejemplo.
Por otro lado, sólo teniendo en cuenta el tamaño del código x86-64 lo hace bastante bien porque por defecto las instrucciones que trabajan con enteros son de 32 bits. Añade sólo un byte a las instrucciones donde puedes especificar si quieres los 64 bits (y usar ancho de banda y espacio extra en la caché) o no. Los punteros siempre son de 64 bits. El código se mueve entre un 15 y un 30% más grande dependiendo del uso que le des a los 64 bits y a la memoria.
En el caso de Sparc no puedes mezclar tan libremente los 32 con los 64.
Re:Chao!
(Puntos:1)Por otro lado, sólo teniendo en cuenta el tamaño del código x86-64 lo hace bastante bien porque por defecto las instrucciones que trabajan con enteros son de 32 bits. Añade sólo un byte a las instrucciones donde puedes especificar si quieres los 64 bits (y usar ancho de banda y espacio extra en la caché) o no. Los punteros siempre son de 64 bits. El código se mueve entre un 15 y un 30% más grande dependiendo del uso que le des a los 64 bits y a la memoria.
En el caso de Sparc no puedes mezclar tan libremente los 32 con los 64.