gcc и деление
От: maks1180  
Дата: 02.01.22 00:37
Оценка: -1
на x32 платформе компилирую через gcc v10 следующий код:
volatile uint64_t v = 11;
volatile uint32_t v2 = v / 5;

и вижу в ассемблере:
mov eax,DWORD PTR [esp+0x18]
mov edx,DWORD PTR [esp+0x1c]
mov DWORD PTR [esp+0x8],0x5
mov DWORD PTR [esp+0xc],0x0
mov DWORD PTR [esp],eax
mov DWORD PTR [esp+0x4],edx
call 4024d0 <___udivdi3>
mov DWORD PTR [esp+0x14],eax

___udivdi3 — очень не быстрая функция которая делает div сдвиги и много чего ещё.
Почему просто не использовать div, ведь "div ecx" делит EDX:EAX (64 битное число) на 32-х битное ECX ?
===============================================
(реклама, удалена модератором)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.