Целочисленное переполнение не определено во встроенной сборке x86?
Скажем, у меня есть следующий код C:
int32_t foo(int32_t x) {
return x + 1;
}
Это неопределенное поведение, когдаx == INT_MAX
, Теперь скажите, что я выполнил дополнение с помощью встроенной сборки:
int32_t foo(int32_t x) {
asm("incl %0" : "+g"(x));
return x;
}
Вопрос: версия встроенной сборки все еще вызывает неопределенное поведение, когдаx == INT_MAX
? Или неопределенное поведение относится только к коду C?