Предполагается, что вывести 1, если A меньше, чем b, и 0 в противном случае.Это часто влечет за собой вычисление A - B, для которого вам нужен ALU.
Теперь, если бы он просто вычислял знаковый бит A - B
, он был бы избыточен, но рассмотрим случай, когда A = -2147483648 = 0x80000000
и B = 1 = 0x00000001
, здесь результат вычитания будет 0x7fffffff = 2147483647
, для которого не установлен самый значимый бит, даже если A < B
.
Как видно из таблицы "Паттерсон, Дэвид А.; Хеннесси, Джон Л.: Организация и дизайн компьютеров «Я отсылаю вас к главе 3, в частности к подразделу, который касается« сложения и вычитания »(3.3 во 2-м издании, 3.2 в 4-м).У него есть таблица, в которой рассматриваются переполнения / недополнения, где можно посмотреть угловые случаи.
Также следует помнить, что результат ALU составляет 32 бита, поэтому даже если бы результат был просто знаковым битом результата вычитания, ему все равно потребовался бы другой код операции ALU, чтобы сигнализировать о том, что 31 ноль, объединенный с результирующим битом, долженбудет возвращен, а не полный результат вычитания.
Строка «Ноль», на которую вы, вероятно, ссылаетесь, - в архитектурах, обсуждаемых в книге, - IIRC, используется только для сравнений относительно ветви равных / ветви не равных,SLT/SLTI
на руке сохраняет свой результат в регистре.