Pulgar modo de ARM: Código de calibre no disminuyendo
-
29-09-2019 - |
Pregunta
Guys,
Tengo un proyecto que he recopilado para el procesador ARM Cortex-A8. Estoy haciendo uso de GCC para hacer esto. Actualmente el tamaño de mi ejecutable es 220,1 KB. Ahora modifico mi makefile y añado el -mthumb
bandera, las miradas de línea makefile algo como esto -
gcc -mcpu=cortex-a8 -mthumb -marm -mfloat-abi=softfp -mfpu=neon
Lo hago cambios en todos mis archivos make y construyo mi proyecto, pero el ejecutable se produce finalmente todavía sigue siendo de 220,1 KB.
Me hizo un cambio más a mi línea de comandos, he añadido la opción -mthumb-funcionen conjuntamente
gcc -mcpu=cortex-a8 -mthumb -mthumb-interwork -marm -mfloat-abi=softfp -mfpu=neon
Una vez más consigo mismo tamaño ejecutable 220,1 KB. Me estoy perdiendo algo mientras se hace esto?
Me escribió un pequeño programa, para encontrar el más pequeño de los dos números y yo lo recopiló utilizando la siguiente línea de comandos
gcc main.c -o main
Me conseguir una KB 8,5 ejecutable
A continuación, hago un
gcc -mthumb main.c -o main
sigo teniendo un ejecutable de 8,5 kb.
¿Cuál es incorrecto aquí?
Hice un cat /proc/cpuinfo
para ver si el pulgar es realmente el apoyo de mi procesador, y veo que sí es compatible.
Llego -
Processor: ARMv7 Processor rev 5 (v7l)
Features: swp half thumb fastmult vfp edsp neon vfpv3
....
....
Solución
Creo medios -marm que tiene un brazo sin pulgar, pruebe a quitar -marm.
Otros consejos
Es difícil de decir sin tener el código real, pero tengo un par de sugerencias.
- Habilitar optimizaciones. (Por ejemplo -O3 -ffunction-secciones -fdata secciones)
- Gaza el ejecutable para asegurarse de que la información de depuración no se cuenta.
- Compruebe el tamaño real del código (.text), no el tamaño del archivo. Tal vez hay algo de relleno pasando. Puede utilizar objdump para eso.
- Dump el código ensamblador (interruptor -S) y comprobar que realmente produce instrucciones ARM en un caso y el pulgar en otro.
Con algunos compiladores, oro es el valor por defecto cuando se compila para ARMv7. ¿Estas seguro que su ejecutable original no fue construido para el pulgar?
Trate edificio con -mno-pulgar y ver si aumenta el tamaño de código.