Компилятор ассемблера не хочет генерировать jmp short

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Компилятор ассемблера не хочет генерировать jmp short

Сообщение kitovyj » 22.10.2008 12:27:04

Компилятор не хочет генерировать относительный короткий джамп, даже когда ему явно указан постфикс short. Почему? Разные настройки оптимизации пробовал(хотя по-моему никакие оптимизации не должны влиять на ассемблерные процедуры). У меня процедура из 1.5 тыс строк кода на ассемблере, так в ней компилятор не сгенерировал ни одного короткого джампа, все с абсолютным адресом! Для меня это оч. важно, так как существенен размер кода(портирую с делфи). Я в панике.

Вот пример:

sub eax,dword ptr [esp]
add esp,04h
cmp eax,0FFFh
jbe short @not_traced // JBE 0xABSOLUTE_ADDRESS - WHY???!!!
popad
popad
retn
@not_traced:

Есть идеи, в чем может быть дело? Использую lazarus c fpc 2.2.2.

Спасибо.

Исправляюсь: на самом деле компилятор генерит ОТНОСИТЕЛЬНЫЕ джампы, но с 32ух-битным смещением.... т.е. не jmp short а jmp near. Тем не менее, проблема остается, нужен-то jmp short с 8-и битным смещением!
Последний раз редактировалось kitovyj 22.10.2008 18:07:19, всего редактировалось 1 раз.
kitovyj
незнакомец
 
Сообщения: 2
Зарегистрирован: 22.10.2008 12:11:15

Re: Компилятор ассемблера не хочет генерировать jmp short

Сообщение Sergei I. Gorelkin » 22.10.2008 17:41:03

Дело, надо полагать, в том, что никто никогда не занимался этим вопросом.
И если говорить о размере кода, то эти переходы - последний из источников неоптимальности.

Можно попробовать скомпилить с использованием внешнего ассемблера, может быть в этом случае он модификатор не выкинет.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Компилятор ассемблера не хочет генерировать jmp short

Сообщение kitovyj » 22.10.2008 18:25:17

Да, попробую заюзать внешний ассемблер. Запостю баг на багтрекер фрипаскаля. Спасибо.
kitovyj
незнакомец
 
Сообщения: 2
Зарегистрирован: 22.10.2008 12:11:15


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru