Подтвердить что ты не робот

Арифметическое переполнение против арифметического переноса

Один из моих лекционных слайдов дает пример арифметического переполнения и переносит в тему условных ветвящихся флагов на чипе ARM, приведенном ниже:

  • V (переполнение) - 7FFFFFFF + 1
  • C (переносить) - FFFFFFFF + 1

Предположительно, для примера, адрес может содержать только 8 байтов. Поэтому мне кажется, что добавление 1 до 7FFFFFFF дает 80000000. Я думал, что 80000000 все равно поместится в 8-байтовый адрес.

Почему это арифметическое переполнение? Неправильно ли это на слайде? Или мое понимание ошибочно?

Спасибо за любые ответы

4b9b3361

Ответ 1

  • Флаги переполнения устанавливаются, когда регистр не может правильно представить результат в виде знакового значения (вы переполнили бит знака).
  • Флаги переноса устанавливаются, когда регистр не может надлежащим образом представить результат в виде значения без знака (без знакового бита).

Ответ 2

Вы получаете переполнение, если бит знака поврежден. Итак, вы знаете, что вам нужно настроить свой результат.

Вы получаете перенос, если результат не соответствует этому значению. (требуется больше бит, чем у вас).

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