Я занимаюсь компьютерной архитектурой и мой проф. не смог дать удовлетворительный ответ.
Предполагая, что у нас 32-битный процессор, если у нас есть два целых числа без знака x и y, оба из которых больше 2 31 (так что они слишком велики, чтобы их можно было правильно преобразовать в форму дополнения до двух) как мы выполняем вычитание?
Если бы вычитаемое значение было константой, я могу увидеть, как компилятор мог бы это компенсировать в статическом анализе. Но как нам справиться с этой возможностью во время выполнения, особенно в статически компилируемом языке, таком как C? Это просто вызывает ошибку переполнения или некоторые архитектуры subu
поддерживают специальные операции?
Все, что я нашел для MIPS, говорит о том, что он просто выполняет вычитание с дополнением до двух, но это не должно работать в этом случае, не так ли?