2013-06-20 2 views
1

Я знаю, что у ARM много регистров, и мне было интересно, что такое сопоставление между регистром (r0 - r15, cpsr и т. Д.) В их двоичном представлении для использования в конечном двоичном (в основном, какие значения входят в поля Rn и Rd в инструкции). Например, это r0 является 0b0000 и r1 только 0b0001? Если да, то что это такое, когда речь заходит о конкретном режиме процессора. Или режим CPU не влияет на идентификатор регистра (я чувствую, что он должен быть разными кодами).Как регистрируются регистры ARM в двоичном формате

Спасибо.

+1

Если у вас есть доступ к инструкции ARM задайте детали, вы должны обратиться к нему. Это должно быть довольно просто. – Ash

+0

@ Почему вы чувствуете, что он должен отличаться? –

+0

У меня есть 2 отдельных руководства по ARM, и они относятся ко всему о структуре инструкций (какие биты и что они означают), но у него нет сопоставления из регистра в его двоичные отношения. – sparticvs

ответ

1

получить Справочное руководство по архитектуре ARM от infocenter.arm.com , все, что вы хотите знать, прямо здесь.

Инструкции кодируют r0 = 4'b0000 и r1 4'b0001 и т. Д. До r15 = 4'b1111. есть некоторые регистры, которые основаны на режиме, режиме супервизора, режиме прерывания пользовательского режима и т. д., кодировка в инструкции не изменяется. r13 - это 13 в кодировке, но где-то в процессоре есть некоторый вкус if-then-else чтобы получить реальный регистр. Это не видно нам, что похоронено в их логике.

Инструкции для большого пальца, как правило, ограничены r0-r7 для большинства инструкций, есть несколько, которые используются специально для перемещения в/из регистров с высшим номером r8-r15, но кодирование одинаковое r0 = 0 r1 = 1, r2 = 2 и т. Д.

Для многих наборов команд вы можете понять это самостоятельно, попробовать что-то вроде

add r0,r0,r1 
add r0,r0,r2 
add r0,r0,r3 
add r0,r0,r4 
... 
add r0,r1,r0 
add r0,r2,r0 
add r0,r3,r0 
... 

и посмотреть, какие биты изменений после сборки разберите ...

+0

Спасибо, тогда мне придется зарегистрироваться на сайте ARM. Я использую вещи, которые не требуют регистрации. – sparticvs

+1

Если вы хотите заняться рукоделием, необходимо руководствоваться архитектурным справочником и техническим справочником для ядра, над которым вы работаете.Обратите внимание: возьмите рычаг для armv5, чтобы начать, если у вас нет особого мнения, а затем получите больше их по мере необходимости, чтобы увидеть, что изменилось или было добавлено с течением времени. –

0

Here - это ссылка, которая приведет вас на веб-страницу ARM и позволит вам загрузить ARM ARM. Короткий ответ заключается в том, что он зависит от архитектуры (V4-7), инструкции и типа инструкций (THUMB, ARM, THUMB2, 64-бит и т. Д.)

+0

Действительно ли фактическое значение, используемое в битовом поле для обращения к определенному регистру - скажем, R5? Позиция битового поля для обозначения регистра в общем слове инструкции будет явно изменяться (поскольку изменяется длина слова команды), а доступные регистры и, возможно, возможности использования будут меняться между вариантами. Но было бы очень странно видеть, что регистры внезапно пронумерованы по-разному. Возможно, с некоторыми из регистров расширения. –

+0

Да между наборами команд и даже не тогда, когда инструкция требует регистров переменных чисел для выполнения операции (MUL vs MOV.) Что касается изменений архитектуры, Thumb поддерживает только 8 регистров, поэтому его местоположения отличаются от ARM, который поддерживает 16. Они имеют тенденцию оставаться довольно последовательным в разных инструкциях, но не идеально. –

+0

Ах, но вы правы в том, что местоположение битового поля, когда оно начинается в инструкции, остается согласованным, если оно не является очень специализированной инструкцией. –

Смежные вопросы