Определение, происходит ли переполнение без знака на 68000 - PullRequest
0 голосов
/ 29 октября 2018

Я работаю над вопросом для школы и не могу понять эту часть, связанную с добавлением двух чисел и проверкой, происходит ли переполнение без знака.

В используемой мной справке говорится, что оба условных теста VC (сброс переполнения) и VS (набор переполнения) являются двумя дополнительными арифметическими и используют числа со знаком.

Насколько я понимаю, любой из условных тестов, в которых используются числа со знаком, не будет работать с числами без знака. Есть ли другой способ, которым я должен проверять это?

1 Ответ

0 голосов
/ 30 октября 2018

Флаг OV действителен только для чисел, которые вы хотите интерпретировать как целые числа со знаком. Он устанавливается, когда какой-либо расчет превышает предел +/- MAXINT (в зависимости от размера операнда). Вы должны игнорировать это обычно при работе с числами без знака. На очень низком уровне флаг OV устанавливается, когда вы добавляете два числа с одним и тем же знаком, и в результате вычисления самый верхний бит результата изменяется.

Флаг C относится как к знаковым, так и к беззнаковым числам - он устанавливается, когда любое вычисление проходит значение ноль.

Условные ветви процессора 68k отсортированы по условиям, действительным для целых чисел со знаком и без знака, с отслеживанием комбинаций флагов V и C (и Z), переводя их в условия>, =,> =, <, <=. Для новичков иногда немного странно, что идентичные инструкции с одинаковыми кодами операций могут иметь более одного имени: одно, которое выражает состояние флага, и другое, которое выражает «что означают флаги», например, <code>BCC (ответвление, если нести ясно, ) и BHS (ветвь выше или выше). Оба они оценивают один и тот же код операции.

...