Консультация № 72599
25.01.2007, 15:33
0.00 руб.
0 2 2
Привет! На основание чего устанавливается флаг of? Я не имею в виду, что он обозначает, а именно как он устанавливается, исходя из чего процессор определяет, что нужно его установить? Как он это рассчитывает, на основаниие каких разрядов или может др. флагов? Как он определяет, что произошла потеря значашего бита? Я , например, знаю, что если сложить -70 и -70, то произойдет установка этого флага из-за того, что -140 не вместится в 1 байт в доп. коде (если рассматривать байтовую операцию). Вопрос, как процессор это понял?

Обсуждение

Неизвестный
25.01.2007, 16:35
общий
это ответ
Здравствуйте, Oxaid!
По-моему, его поведение можно описать так:
0, если старший бит результата равен одному из старших битов операндов сложения/вычитания;
1 в противном случае.
Логически:
(ст.бит результата XOR ст.бит первого операнда) AND (ст.бит результат XOR ст.бит второго операнда) = OF
Та самая логическая схема, которую наверняка имел в виду Лысков Игорь Витальевич.

В сдвиговых операциях OF устанавливается в том и только в том случае, если старший бит приёмника изменился. OF = ст.бит до сдвига XOR ст.бит после сдвига.

Вывод: каждая команда по-своему меняет флаги, схема не всюду одинакова.

При умножении, например, просто OF = CF = (старшая половина результата не ноль, что можно представить как (бит0 AND бит1 AND ... AND ст.бит)).

Так что тут изучать и изучать. Удачи!
давно
Старший Модератор
31795
6196
25.01.2007, 17:50
общий
это ответ
Здравствуйте, Oxaid!
Процессор не знает, что есть числа со знаком и без знака.
Он все считает в двоичной арифметике и уже на программиста ложится задача контроля правильности вычисленных результатов:
флаг cf устанавливается когда есть перенос со старшего бита (7,15,31 и т.д.)
флаг of устанавливается когда есть пернос с бита 6 в 7 или с 14 в 15 или с 30 в 31, так как для для знаковых чисел испульзуется <знак>+<7,15,31 бит числа>,
вот для защиты бита знака существует флаг of
анализируя флаги of и cf можно принимать решение о достоверности результата.
Надеюсь обьяснил.Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа