Режим ручного большого пальца: размер кода не уменьшается

StackOverflow https://stackoverflow.com/questions/4107477

Вопрос

Ребята, у меня есть проект, который я собрал для процессора Arm Cortex-A8. Я использую GCC, чтобы сделать это. В настоящее время размер моего исполняемого файла составляет 220,1 КБ. Теперь я изменяю свой makefile и добавляю флаг -mthumb, линия Makefile выглядит как это -

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

Я делаю это изменения во всех своих макияжах, и я строю свой проект, но исполняемый файл, который я наконец -то по -прежнему остается 220,1 кб.

Я сделал еще одно изменение в свою командную строку, я добавил опцию -mthumb -interwork

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

Еще раз я получаю один и тот же исполняемый файл 220,1 КБ. Я что -нибудь упускаю во время этого?

Я написал небольшую программу, чтобы найти самые маленькие из двух чисел, и я составил его, используя следующую командную строку

gcc main.c -o main

Я получаю исполняемый файл 8,5 кб

Далее я делаю

gcc -mthumb main.c -o main

Я все еще получаю исполняемый 8,5 кб.

Что здесь здесь?

Я сделал А. cat /proc/cpuinfo Чтобы увидеть, действительно ли большой палец поддерживается моим процессором, и я вижу, что он действительно поддерживается. Я получил -

Processor: ARMv7 Processor rev 5 (v7l)
Features: swp half thumb fastmult vfp edsp neon vfpv3
....
....
Это было полезно?

Решение

Я думаю, -Марм означает, что у вас есть рука без большого пальца, попробуйте удалить -марм.

Другие советы

Трудно сказать, не имея фактического кода, но у меня есть пара предложений.

  1. Включить оптимизацию. (например, -O3 -Запортные разделы -FData-разделы)
  2. Стрите исполняемый файл, чтобы убедиться, что информация отладки не учитывается.
  3. Проверьте фактический размер кода (.Text), а не размер файла. Может быть, есть некоторые прокладки. Вы можете использовать objdump для этого.
  4. Сбросьте код сборки (переключатель -s) и убедитесь, что он на самом деле дает инструкции ARM в одном случае, а большой палец в другом.

С некоторыми компиляторами большой палец - по умолчанию при компиляции для ARMV7. Вы уверены, что ваш первоначальный исполняемый файл не был создан для большого пальца?

Попробуйте построить с -MNO -THUMB и посмотрите, увеличивается ли размер кода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top