2017-01-19 3 views
-1

Скажем, у нас есть добавление следующих двух регистров:Когда флаг N (отрицательный) установлен в сборке?

R0 = 6DEE 8765 
R1 = 3458 FFDD 
R0 + R1 = A2478742 

Предположим, что мы используем дополнение знак конвенции 2, в то, что флаги будут устанавливать? Я знаю, что свержение будет установлено, но будет и «Н»?

С уважением

+1

Флаг 'N' - это только бит знака, который является самым значительным. Так что да, это было бы установлено. Руководство для вашей архитектуры (которое вы забыли указать ...), конечно же, говорит вам об этом. Кроме того, вы можете просто запустить его в отладчике. – Jester

+0

Итак, когда «N» и «V» оба установлены, то это означает, что фактическое число положительно? – Lerbi

+0

Да, так оно и есть. Переполнение завернулось. – Jester

ответ

0

Во всех архитектур, которые поддерживают флаги, флаг N или Negative просто соответствует наиболее значащий бит последнего номера вычисленной.
Кроме того, во многих архитектурах есть флаг V или Overflow, который говорит вам, что самый старший бит был изменен последней операцией.

Если реестр перешел от положительной к отрицательной, будут установлены как O, так и N.
Если значение в регистре отрицательное до и после N будет установлено, но не O. и т. д.

Флаг переполнения полезен только при использовании подписанной арифметики. При использовании беззнаковой арифметики вы используете флаг C (Carry), в котором сообщается, когда результат превысит наибольший результат, который может удерживать регистр (0xFFFF FFFF в 32-разрядной версии).

Идентификатор Zzero, который сообщает вам, является ли результат нулевым или нет.

+0

Я не уверен, почему я получил downvoted, но спасибо. Это был отличный ответ – Lerbi

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