ventilatorios ventilatorio ventilacion procedimiento ppt parametros modos modo mecanica invasiva indicaciones cpap compilation arm thumb cortex-a

compilation - ventilatorio - ARM Modo de pulgar: el tamaño del código no disminuye



ventilacion mecanica pdf 2017 (3)

Chicos, tengo un proyecto que he compilado para el procesador ARM Cortex-A8. Estoy haciendo uso de GCC para hacer esto. Actualmente el tamaño de mi ejecutable es de 220.1 KB. Ahora -mthumb mi makefile y agrego el flag -mthumb , la línea makefile se ve algo así:

gcc -mcpu=cortex-a8 -mthumb -marm -mfloat-abi=softfp -mfpu=neon

Hago estos cambios en todos mis makefiles y construyo mi proyecto, pero el ejecutable que obtengo finalmente sigue siendo de 220.1 KB.

Hice un cambio más en mi línea de comando, agregué la opción -mthumb-interwork

gcc -mcpu=cortex-a8 -mthumb -mthumb-interwork -marm -mfloat-abi=softfp -mfpu=neon

Una vez más obtengo el mismo tamaño del archivo ejecutable 220.1 KB. ¿Me estoy perdiendo algo mientras hago esto?

Escribí un pequeño programa para encontrar el más pequeño de dos números y lo compilé usando la siguiente línea de comando

gcc main.c -o main

Obtengo un ejecutable de 8.5 KB

Luego, hago un

gcc -mthumb main.c -o main

Todavía obtengo un ejecutable de 8.5 KB.

¿Qué pasa aquí?

Hice un cat /proc/cpuinfo para ver si mi procesador realmente admite el pulgar, y veo que de hecho es compatible. Yo obtengo -

Processor: ARMv7 Processor rev 5 (v7l) Features: swp half thumb fastmult vfp edsp neon vfpv3 .... ....


Con algunos compiladores, el pulgar es el valor predeterminado al compilar para ARMv7. ¿Estás seguro de que tu ejecutable original no fue construido para el pulgar?

Intente compilar con -mno-thumb y vea si el tamaño del código aumenta.


Es difícil de decir sin tener el código real, pero tengo un par de sugerencias.

  1. Habilita optimizaciones. (por ejemplo -O3 -ffunction-sections -fdata-sections)
  2. Pele el ejecutable para asegurarse de que la información de depuración no se cuente.
  3. Verifique el tamaño real del código (.text), no el tamaño del archivo. Tal vez hay algo de relleno pasando. Puedes usar objdump para eso.
  4. Vuelque el código de ensamblaje (-S-switch) y compruebe que en realidad produce instrucciones ARM en un caso y Thumb en otro.

Creo que "marm" significa que tienes un brazo sin pulgar, intenta eliminar -marm.