Costes ocultos en arrays de estructuras en C

Este artículo es el número 2 de 2 de la serie Programación Avanzada en C

Continuamos nuestra serie abordando los costes ocultos al usar arrays de estructuras en C en Amstrad CPC. Las posiciones en memoria son relativas al inicio de los arrays, y el compilador produce código para calcular dónde está cada elemento. Las estructuras funcionan similar: cada miembro está a una distancia en bytes del inicio de la estructura. Trabajamos sobre un ejemplo en CPCtelera que vamos optimizando progresivamente. Primero entendemos cómo son estos cálculos y el código que el compilador genera para realizarlos. Vemos las limitadas posibilidades que tiene el compilador para optimizar, debido a los pocos registros del procesador Z80. Finalmente, le vamos facilitando la vida, simplificando los cálculos y ganando bytes y tiempo de CPU con sencillos cambios en el código.

Leer más

¿Variables locales o globales? Analizando su impacto

Este artículo es el número 1 de 2 de la serie Programación Avanzada en C

Explicamos el impacto de las variables locales y globales en nuestros programas en C para Amstrad CPC. Vemos cómo el compilador de C incluído en CPCtelera convierte nuestro código a ensamblador. Utilizamos un sencillo ejemplo que dibuja una matriz en pantalla usando printf. Primero vemos las diferencias de espacio en memoria. Después analizamos a qué se deben. Por último, observamos cómo estas diferencias se plasman en el binario que nuestro Amstrad cargará en memoria para ejecutar.

Leer más