Могу ли я использовать инструкции Thumb в двоичном файле arm64?

Я пытаюсь уменьшить размер своего приложения для iOS (раздел кода двоичного файла составляет 70 МБ), используя инструкции для большого пальца. Кажется, существует много дискуссий по поводу использования версии armv7 для большого пальца, например. здесь: http://wanderingcoder.net/2010/07/19/ought-arm / . Однако я не могу найти очень много о arm64 + Thumb. Это вообще возможно? Если да, то как я могу компилировать clang таким образом?


person meisel    schedule 07.09.2017    source источник


Ответы (1)


Из Справочного руководства ARMv8, §A1.3.2 (стр. A1- 35):

Состояние AArch64 поддерживает только один набор инструкций, называемый A64. Это набор инструкций фиксированной длины, в котором используются 32-битные кодировки инструкций.

Так что нет, 64-битный Thumb не вещь.

person Siguza    schedule 07.09.2017
comment
Стоит отметить, что вы можете скомпилировать двоичный файл с инструкциями T32, который работает в состоянии AArch32 на ядрах ARMv8. - person chrisvarnz; 06.04.2020
comment
@chrisvarnz, в свою очередь, стоит отметить, что не все ядра ARMv8 поддерживают AArch32. - person Siguza; 06.04.2020
comment
Абсолютно, я думаю, что Android тоже не поддерживает это! - person chrisvarnz; 07.04.2020
comment
@Siguza, действительно ли некоторые ядра не поддерживают AArch32? Ваша цитата относится к состоянию выполнения AArch64, но в руководстве четко указано, что AArch32 является допустимым состоянием выполнения и что процессор может переключиться на другое состояние выполнения. - person Benni; 12.06.2020
comment
@Benni Регистр функций ID_AA64PFR0_EL1 указывает, поддерживается ли AArch32 в каждом из EL3, EL2, EL1 и EL0. AArch64 подразумевается/требуется, а AArch32 — нет. И, например, если вам удастся проверить этот регистр на процессоре Apple A11 или более поздней версии, вы обнаружите, что AArch32 действительно не поддерживается ни на одном уровне исключений. - person Siguza; 12.06.2020