Прежде всего: я действительно пытался найти подходящий ответ для этого, но у меня просто не получилось.
В настоящее время я работаю над небольшим эмулятором 8086.То, что я до сих пор не понял, так это то, как флаги переполнения и вспомогательных вычисляются лучше всего для сложения и вычитания.
Насколько я знаю, вспомогательный флаг соответствует флагу переполнения, но использует только 4 бита, пока переполнениеФлаг использует весь размер.Поэтому, если я добавлю два 1-байтовых целых числа со знаком, OF будет проверять переполнение 1-байтового знака, в то время как вспомогательный флаг будет рассматривать только младшие 4 байта двух целых чисел.
Существуют ли общие алгоритмы или«магические побитовые операции» для вычисления переполнения со знаком для сложения и вычитания 4,8 и 16 бит?(Я не возражаю против того, на каком языке они написаны)
Примечание: мне нужно хранить значения в переменных без знака внутри, поэтому у меня есть возможность работать только со значениями без знака или побитовыми вычислениями.
Возможно ли одно решение, которое работает для сложения и вычитания, состоит в том, чтобы проверить, изменился ли "Флаг знака" (или бит 4 для вспомогательного флага) после выполнения вычисления?
Заранее спасибо!