как заставить FPC генерить правильный SSE код

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

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

Сообщение Sniper » 30.09.2005 15:40:19

Mirage
Кстати, вроде для SSE надо на 16 байт выравнивать. В Дельфи такого выравнивания нет.

Угу и в FPC тоже... нет
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Сообщение pda » 30.09.2005 19:55:38

Mirage писал(а): Delphi и FPC тоже так делают?

Должны, по идее. Насчёт возвращаемых функцией значений это я где-то в книжке по ассемблеру читал, что полагается так возвращать. Только напрочь не помню, для какой это модели вызова... :rolleyes:
Аватара пользователя
pda
постоялец
 
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Сообщение Mirage » 30.09.2005 20:55:40

Собсно st(0) это регистр FPU. макс. 10 байт. Для вектора все равно маловато.
Но хелп Д7 гласит:
For static-array, record, and set results, if the value occupies one byte it is returned in AL; if the value occupies two bytes it is returned in AX; and if the value occupies four bytes it is returned in EAX. Otherwise, the result is returned in an additional var parameter that is passed to the function after the declared parameters.


Проверил - и действительно. Результат передается как он передавался бы процедурой с доп. var-параметром.

Это значит, что можно смело использовать функции. А то многие (и я тоже) дублируют библиотеки векторных функций в процедурном виде.

Кстати, у кого есть ранние версии Дельфей, вопрос - у них также? По-моему раньше было не так, а через стек.
А в FPC как?
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Пред.

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

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

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

Рейтинг@Mail.ru