Типы возврата часто проверяются на наличие ошибок. Но код, который будет продолжать выполняться, может быть указан по-разному.
if(!ret)
{
doNoErrorCode();
}
exit(1);
или
if(ret)
{
exit(1);
}
doNoErrorCode();
С одной стороны, тяжеловесные процессоры могут спекулировать о ветвях, взятых в непосредственной близости / местности, используя простую статистику - я изучил 4-битный механизм для спекуляций ветвей (-2, -1,0, + 1, + 2), где ноль неизвестно и 2 будет считаться истинной веткой.
Учитывая вышеописанную простую технику, мои вопросы касаются того, как структурировать код. Я предполагаю, что должно быть соглашение между основными компиляторами и основными архитектурами. Это мои два вопроса
- Когда код не является часто посещаемым циклом, для которого булево значение смещено при заполнении конвейера?
- Предположение о ветвлении должно начинаться либо с true, либо с false, либо с нуля (конвейер должен быть чем-то заполнен). Что это может быть?