edemko С использованием команд сопроцессора это будет кротчайшим, но не самым быстрым вариантом. Судя по всему здесь ищут наибыстрейший вариант. P.S. Спасибо, что напомнили про fisttp. Не часто ей приходится пользоваться. Я и забыл про нее совсем
Исходя из недавно-выложенного документа от murder, fyl2x занимает ~126 тиков и на log2(0) тоже тупит. http://wasm.in/forum/viewtopic.php?id=36421
murder Для кода из поста #13 нужно добавить mov ecx, eax. Иначе ты сравниваешь throughput код #13 с latency кода #33
Код (Text): ;/* ; ebx:eax -> integer ; ecx <- trunc(log(10;integer))+1 ; flags <- ? ;*/ proc cdd64;CountDecimalDigits64 bsr ecx,ebx jz @f add ecx,32 .fyl2x: imul ecx,0010011010001000b shr ecx,15 inc ecx ret 0 @@: bsr ecx,eax jnz .fyl2x lea ecx,[eax+1] ret 0 endp