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

Я бы на твоем месте все же посмотрел, во что транслируется эта команда "mul Pos". Потому что Pos - как ты сам говоришь, в регистре, а регистр затирается.
Только вот еще одна вещь.
Цитата:
mov eax, $04
mul Pos
Есть команда SHL, которая не занимается медленным умножением, а сдвигает биты, что равносильно умножению на 2^x. При умножении на степень двойки (а число 4 - вторая степень двойки) SHL гораздо проще, быстрее и удобнее. Может и проблем меньше будет.

Что до оптимизации - не могу ничего сказать. Тут уже многое зависит от реализации самой делфы. Надо смотреть на сгенерированный ассемблерный код методов, чтобы понять, что не так. У меня, например, были случаи, когда VisualStudio при использовании встроенного ассемблера иногда не догадывалась сохранить регистры, или наоборот сохраняла их лишний раз и меняла тем самым все смещения от EBP. У делфи может быть то же самое в каких-то случаях.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием