goto http://infocenter.arm.com Слева под содержанием найдите архитектуру ARM. И в соответствии с этими справочными руководствами. Раньше существовало единственное ARM ARM (Справочное руководство по архитектуре ARM), но семья выросла до такой степени, что им пришлось сломать ее, ну, семьи.
ARM ARM собираются показать вам наборы инструкций. Я думаю, что они называют руководство ARMv5 старым ARM ARM. Вы найдете инструкции ARM (32 бит) и указатели большого пальца (16 бит). Для каждой команды они перечисляют, какая архитектура поддерживает ее, поэтому вы можете увидеть инструкцию ARMv5, которая не поддерживается ARMv4 (ARMv4 a.k.a ARM7, как и популярное ядро ARM7TDMI). Инструкции Thumb поддерживаются ARMv4T и новее и т. Д.
Итак, есть набор 32-битных команд ядра, к которым вы, возможно, привыкли, добавляли время от времени и исправляли ошибки/ограничения (ldr r0, [ r0] и т. д.
Модуль с плавающей точкой имеет один или два капитальных ремонта, в большинстве ядер нет fpu, а у тех, у которых есть fpu, что не означает, что поставщик чипов включил его в чип. fpa является более старым, vfp более новым и теперь неонным. Если вы обратите внимание, все они относятся к категории общих сопроцессоров. Но вам не нужно знать/использовать версию сопроцессора, у них есть псевдонимы для всего.
Существует/была эта вещь java/jazelle, такая же история, что некоторые ядра могут иметь это как опцию, не означает, что поставщик включил ее.
По меньшей мере два набора расширений большого пальца2 для набора больших пальцев. До расширений thumb2 инструкции большого пальца были все 16 бит и имели сопоставление от одного до одного к команде ARM, имеет смысл, что вам нужно только ядро ARM, декодер переводится с меньшей команды на инструкцию ARM и передает ее в ядро. Все инструкции составляют 16 бит, за исключением ветки, и если вы посмотрите на этот шаблон, вы можете легко декодировать это как две отдельные 16-битные инструкции. У меня есть симулятор btw, если вы хотите играть только с инструкциями большого пальца http://github.com/dwelch67/thumbulator. Таким образом, они решили сделать свой микроконтроллер меньшим, вместо того, чтобы все просто использовали ARM7TDMI и потребляли размер и мощность чипа, процессоры с поддержкой большого пальца2 имеют только большой палец, они не поддерживают 32-битные инструкции ARM, нет ядра ARM, который содержит инструкции большого пальца переводятся на и т. д. новое ядро. ARMv6-M aka Cortex-m0 и Cortex-m1 берут набор инструкций большого пальца и добавляют несколько 32-битных инструкций, чтобы закрыть разрыв производительности в ARM (большой размер был меньше да, но немного медленнее ARM, если вы скомпилировали тот же код для оба, на мои эксперименты потребовалось 10-20% больше инструкций, чтобы использовать большой палец). Теоретически thumb-2 (ARMv7-M) превосходит ARM, когда и где вы можете их сравнить. По какой-то причине сначала появился Cortex-m3, который является ARMv7-M, и содержит набор 32-битных инструкций thumb2, добавленных в набор инструкций большого пальца. Я недавно подсчитал, и ARMv6-M добавил как 20, ARMv7-M имеет 140-150 инструкций, добавленных в набор инструкций большого пальца базы. thumb2 - это в основном переменная длина слова. И снова работает только на серии коры головного мозга.Глядя на это, почти так же, как они снова встроили инструкцию ARM под именем thumb. не полностью, но вы получаете много рук, как инструкции, три регистра вместо двух, возможность достигать более высоких регистров и использовать непосредственные действия и т. д. Это вызвано желанием написать asm, который скомпилирован как для ARM, так и для большого пальца/thumb2. Поэтому они придумали единый синтаксис. Вы можете написать инструкцию, как
add r0,r1
Если сборка для большого пальца, то есть инструкция, если сборка для руки они будут конвертировать его в
add r0,r0,r1
для вас, а не каких-либо ошибок синтаксиса. Вы должны указать, что используете единый синтаксис, по крайней мере, с ассемблером gnu binutils (газ).
Не менее важный набор документов - это технические справочные руководства, а также на infocenter.arm.com. Каждое ядро имеет trm, на самом деле каждый rev каждого ядра имеет TRM. Кроме того, дополнительные предметы затрат, такие как кеши L2, имеют собственный TRM для каждого оборота. важно узнать, что ядро, которое купил/использовал чип-продавец, и, если возможно, ревизию (rev 2.0 r2p0, rev 1.0 r1p0 и т. д.), поскольку существуют различия в программировании, а также различия между ошибками (не доверяйте Linux как ссылку! , это огромный беспорядок, каждый раз, когда я смотрю, еще одна компания полностью неправильно поняла и неправильно применила различия в ядрах/ошибках, на данный момент это немного катастрофа). Иногда TRM включает в себя информацию о инструкции или рисует более четкую картину того, что поддерживает это ядро и не поддерживает. ARM ARM являются общими для всей семьи или нескольких семейств ядер, где TRM очень специфичен для одного ядра. Примером путаницы между ARM ARM и TRM является то, что, глядя на ARM ARM, вы можете создать впечатление, что вы можете использовать режимы большой длины BE-32 или BE-8, в действительности у вас есть либо один, либо другой ARMv6 и новее BE-8, период, привыкнуть к нему. ARMv5 и ARMv4 - BE-32 или до того, как ARMv6 просто называется большим эндиантом. Я настоятельно рекомендую НЕ использовать большой эндиан на руке, несмотря на то, что, по вашему мнению, вы можете получить от него. пойдите в основном режиме, и вы сэкономите массу работы и неудачи. Я упоминаю это из личного опыта, пытаясь понять, почему бит, описанный в ARM ARM, просто не работал в ядре, которое я использовал.
64-разрядное ядро находится где-то на стадии разработки, я бы не удивился, если это будет сделано и просто будет искать кого-то, чтобы нажать на курок и использовать его. На самом деле документ ARMv8 доступен, загружая сейчас.
Короткий ответ infocenter.arm.com в архитектуре ARM вы найдете все документы, описывающие различные наборы инструкций, а также улучшения/дополнения с течением времени к этим наборам инструкций.
Возможно, правильнее сказать поставщиков чипов, имеющих лицензионные ядра ARM. Поскольку большинство чип-компаний не делают чипы, они нанимают кого-то, чтобы делать чипы, а также не делают процессор ARM, они покупают код из ARM и добавляют его в свой дизайн чипов. –