Я писал код, который выглядел следующим образом:
if(denominator == 0){
return false;
}
int result = value / denominator;
... когда я думал о ветвящем поведении в CPU.
qaru.site/info/1/... В этом ответе говорится, что ЦП будет пытаться правильно догадаться, в какую сторону будет идти ветка, и опускать эту ветвь только для остановки, если она обнаружит ее неверно догадался о филиале.
Но если процессор предсказывает ветвь выше неправильно, она будет делиться на ноль в следующих инструкциях. Однако этого не происходит, и мне было интересно, почему? Фактически ли ЦПУ выполняет деление на ноль и ждет, чтобы убедиться, что ветка правильная, прежде чем что-либо делать, или она может сказать, что она не должна продолжаться в этих ситуациях? Что происходит?