История изменений
Исправление alysnix, (текущая версия) :
https://godbolt.org/z/TbcqMfT99
это clang, он вроде попроще код(прям как на асме пишут) генерит для проверок-то
функция
int over(int fn, int fnn, int fnnn) {
return fn + fnn + fnnn*100;
}
с проверкой int переполнения
over(int, int, int):
add edi,esi
jo 10 <over(int, int, int)+0x10>
imul eax,edx,0x64
jo 14 <over(int, int, int)+0x14>
add edi,eax
jo 10 <over(int, int, int)+0x10>
mov eax,edi
ret
ud1 eax,DWORD PTR [eax]
ud1 eax,DWORD PTR [eax+0xc]
без проверки
over(int, int, int):
imul eax,edx,0x64
add eax,edi
add eax,esi
ret
понятно что джентельмены будут предпочитать с проверками не связываться.
Исходная версия alysnix, :
https://godbolt.org/z/TbcqMfT99
это clang, он вроде попроще код(прям как на асме пишут) генерит для проверок-то
функция
int over(int fn, int fnn, int fnnn) {
return fn + fnn + fnnn*100;
}
с проверкой int переполнения
over(int, int, int):
add edi,esi
jo 10 <over(int, int, int)+0x10>
imul eax,edx,0x64
jo 14 <over(int, int, int)+0x14>
add edi,eax
jo 10 <over(int, int, int)+0x10>
mov eax,edi
ret
ud1 eax,DWORD PTR [eax]
ud1 eax,DWORD PTR [eax+0xc]
без проверки
over(int, int, int):
imul eax,edx,0x64
add eax,edi
add eax,esi
ret