Показать сообщение отдельно
  #3  
Старый 03.10.2013, 01:04
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Определять знак 24-bit числа можно проверкой "foo > 8388607"?
Ну, можно по идеи. А можно, по рекомендации известного Мсье, как-нибудь так:
Код:
mov ebx, eax
shr  ebx, 16
movsx bx, bl
shl ebx, 16
or  ebx, eax
5 команд вместо двух, зато без сравнения (т.е. быстро) и без jz/jnz (т.е. еще быстрее).
Еще вариант, но не такой прикольный:
Код:
bt eax, 23
jnc @positive
   or eax, 0xFF000000
@positive:
Плюс только в том, что вместо вычитания константы просто бит 23 копируется в carry флаг.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием