Скачиваний:
75
Добавлен:
01.05.2014
Размер:
1.22 Mб
Скачать

Подсчет нулевых битов (Count Leading Zeros)

Синтаксис в ассемблере

CLZ {<cond>} <Rd>, <Rm>

Формат команды CLZ

Описание

<cond> – поле условия (см. таблицу 1).

<Rd> – регистр результата (см. таблицу 1).

<Rm> – регистр сопроцессора, содержащий второй операнд (см. таблицу 1).

Команда CLZ(CountLeadingZeros) возвращает число нулевых битов до первого единичного бита, в регистре содержащем операнд. Этот регистр просматривается со старшего битаbit[31] до младшего битаbit[0]. Результат равен 32, если все биты установлены в ноль, и равен нулю, еслиbit[31] равен единице. Эта команда не обновляет флаги условий.

Примечание: SBO – Should Be One fields – поля с единичными значениями, указывает на необходимость программной записи единичных значений (все биты равны 1). Прочие значения приводят к непредсказуемым результатам.

Примеры

CLZ Rd, Rm ; в регистр Rd возвращается число нулевых битов из регистра Rm

CMNARM

Сравнение с отрицанием (Compare Negative)

Синтаксис в ассемблере

CMN {<cond>} <Rn>, <shifter_operand>

формат команды сравнение с отрицанием

Описание

<cond> – поле условия (см. таблицу 1).

<Rn> – регистр первого операнда (см. таблицу 1).

<shifter_operand> – второй операнд (см. таблицу 3).

Команда CMN сравнивает значение регистра с отрицательным значением другого числа. Используется только для того, чтобы в зависимости от результата установить/сбросить флаги CPSR (только при S = 1), и при этом регистр назначения <Rd> изменению не подвергается.

Действие

Если условие (<cond>) выполнено, тоalu_out= (Rn) + (shift_operand) и тогда формируются флагиN,Z,C,V.

Использование

CMN выполняет сравнение, прибавляя значение, хранящееся в <shifter_operand>, к значению из <Rn>, и изменяет значение флагов.

Примеры

CMN R0,#6400 // Установить флаги условий в зависимости от результата R0 + 6400.

CMN - THUMB

Установить флаги регистра CPSR для Rd + Rs

Синтаксис в ассемблере

CMN <Rd>, <Rs>

Формат команды представлен на рис. 2.

         Описание

<Rd> – регистр результата (см. таблицу 1).

<Rn> – регистр первого операнда (см. таблицу 1).

Мнемоника ассемблера

Код

Действие

CMN Rd, Rs

1011

Установить флаги регистра CPSR для Rd + Rs


Установить флаги регистра CPSR для Rd + Rs

Примечание: оказывает влияние только на флаги регистра CPSR, и при этом регистр назначения Rd изменению не подвергается.

           Примеры

CMN R2, R6 ; Установить флаги условий в зависимости от результата R2 + R6.

CMPARM

Сравнение (Compare)

Синтаксис в ассемблере:

CMP {<cond>} <Rn>, <shifter_operand>

формат команды сравнение

Описание

<cond> – поле условия (см. таблицу 1).

<Rn> – регистр первого операнда (см. таблицу 1).

<shifter_operand> – второй операнд (см. таблицу 3).

Команда CMP сравнивает значение регистра со значением другого числа. Используется только для того, чтобы в зависимости от результата установить/сбросить флаги CPSR (только при S = 1), и при этом регистр назначения <Rd> изменению не подвергается.

Действие

Если условие (<cond>) выполнено, тоalu_out= (Rn) - (shift_operand) и тогда формируются флагиN,Z,C,V.

Использование

CMР выполняет сравнение, вычитая значение, хранящееся в <shifter_operand>, к значению из <Rn>, и изменяет значение флагов.

Примеры

CMP R2, R9 // Установить флаги условий в зависимости от результата R2 – R9.

CMP - THUMB