Медленный компилятор FPC

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

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

Re: Медленный компилятор FPC

Сообщение скалогрыз » 04.07.2015 18:36:21

Mikhail писал(а):Вижу, но это же смешно при таком коде от этого толку - ноль

аха. Желаете векторизацию.

ещё в 2008 году FPC умел так:
Код: Выделить всё
function f : double;
  var
    d1,d2,d3 : array[0..1] of double;
  begin
    d1:=d2*d3;
  end;

с ключиками: -Sv -Cfsse2, работает как раз SSE дружелюбно :)
но вектора принимаются только 2 x double, либо 4 x single - под размер xmm.
Всё остально ведёт к internal compiler error.

Добавлено спустя 29 минут 43 секунды:
результат выглядит как-то так:
Код: Выделить всё
const n = 4;

type
  TMtxElType = single;
  TMatrix = array[0..n-1, 0..n-1] of TMtxElType;

procedure PivotMatrix(const a: TMatrix; out b: TMatrix);
begin
  ...
end;

procedure MulMatrix(const a, b: TMatrix; out c:TMatrix);
var
  i,j,k: Integer;
  br: TMatrix;
begin 
  i:=0;
  PivotMatrix(b, br);
  for i:=0 to n-1 do
   c[i]:=a[i]*br[i];
end;

компилируем с
Код: Выделить всё
fpc -al -CfSSE3 -Sv -OoREGVAR demomatrix2.pas

на выходе получаем:
Код: Выделить всё
# [47] for i:=0 to n-1 do
   movl   $0,%edx
   decl   %edx
   .balign 4,0x90
.Lj17:
   incl   %edx
# [48] c[i]:=a[i]*br[i];
   movl   %edx,%eax
   shll   $4,%eax
   movl   %edx,%ecx
   shll   $4,%ecx
   movdqu   (%ebx,%eax),%xmm0
   mulps   -64(%ebp,%ecx),%xmm0
   movl   %edx,%eax
   shll   $4,%eax
   cmpl   $3,%edx
   jl   .Lj17

не то? соответственно при больших значениях n, вектор можно разбить на меньшие куски :)
скалогрыз
долгожитель
 
Сообщения: 1756
Зарегистрирован: 03.09.2008 02:36:48

Re: Медленный компилятор FPC

Сообщение Mikhail » 05.07.2015 11:53:42

скалогрыз писал(а):ещё в 2008 году FPC умел так:


Гм, а что нужно включить чтобы этот код компилировался?
Mikhail
энтузиаст
 
Сообщения: 544
Зарегистрирован: 24.10.2013 16:06:47

Re: Медленный компилятор FPC

Сообщение скалогрыз » 05.07.2015 18:14:19

Mikhail писал(а):Гм, а что нужно включить чтобы этот код компилировался?

ключик
Код: Выделить всё
-Sv

Т.к. реализация далека от идела, описание ключика даже не присутствует в help-е FPC.
скалогрыз
долгожитель
 
Сообщения: 1756
Зарегистрирован: 03.09.2008 02:36:48

Re: Медленный компилятор FPC

Сообщение Burster_TIL » 07.07.2015 23:11:46

Попытался сейчас из под Win32 скомпилить и запустить консольное приложение в режиме 80х25, включился оконный режим. При переводе его в полноэкранный режим по ходу врубился что-то типа 80х43. TexMode(C80) ситуацию не спасает. Возможно ли включить как-то всё же 80х25 и чтобы оно сразу включилось в полноэкранный режим? Советовать запустить программу так-то в настройках иконки самого приложения не нужно. Хотелось бы сразу включить такой режим из программы.

Добавлено спустя 5 минут 29 секунд:
Вернее врубился 80х50 режим. Я до этого настраивал саму среду на такой режим, потом вернул обратно 80х25, но ситуацию это не спасло. Перезапуск среды так же ничего не дал. Даже переименование exe файла и запуск его не из среды всё равно даёт 80х50. Бред какой-то получается.

Добавлено спустя 2 часа 15 минут 5 секунд:
До кучи. Если вместо Crt включить WinCrt, то при вызове ReadKey программа просто зависает и не выполняется дальше этой ф-ции. Приходится закрывать окно программы, в итоге закрывается и сама оболочка. В первый раз вижу, что бы ReadKey так работала. На другом РС при импортировании Crt и вызове TextMode(C80) всё равно получается режим 80х50. Ну, вернее она сначала запускается в отдельном окне, а потом при нажатии на Alt+Enter получается полноэкранный режим, но именно те самые 80х50. Кто знает как врубить 80х25 и чтобы сразу на весь экран? В эпоху DOS с этим проблем не возникало. Но, то были именно DOS программы запущенные из её же самой. А, в случае консольного приложения под Win32 как-то не понятно.
Burster_TIL
новенький
 
Сообщения: 46
Зарегистрирован: 25.09.2013 02:05:28

Re: Медленный компилятор FPC

Сообщение Mikhail » 08.07.2015 16:14:17

скалогрыз писал(а):Т.к. реализация далека от идела, описание ключика даже не присутствует в help-е FPC.

Т.е. он включает перегрузку оператора "*" для массивов?

Добавлено спустя 2 минуты 23 секунды:
Burster_TIL писал(а):Попытался сейчас из под Win32 скомпилить и запустить консольное приложение в режиме 80х25, включился оконный режим. При переводе его в полноэкранный режим по ходу врубился что-то типа 80х43. TexMode(C80) ситуацию не спасает. Возможно ли включить как-то всё же 80х25 и чтобы оно сразу включилось в полноэкранный режим? Советовать запустить программу так-то в настройках иконки самого приложения не нужно. Хотелось бы сразу включить такой режим из программы.

Добавлено спустя 5 минут 29 секунд:
Вернее врубился 80х50 режим. Я до этого настраивал саму среду на такой режим, потом вернул обратно 80х25, но ситуацию это не спасло. Перезапуск среды так же ничего не дал. Даже переименование exe файла и запуск его не из среды всё равно даёт 80х50. Бред какой-то получается.

Добавлено спустя 2 часа 15 минут 5 секунд:
До кучи. Если вместо Crt включить WinCrt, то при вызове ReadKey программа просто зависает и не выполняется дальше этой ф-ции. Приходится закрывать окно программы, в итоге закрывается и сама оболочка. В первый раз вижу, что бы ReadKey так работала. На другом РС при импортировании Crt и вызове TextMode(C80) всё равно получается режим 80х50. Ну, вернее она сначала запускается в отдельном окне, а потом при нажатии на Alt+Enter получается полноэкранный режим, но именно те самые 80х50. Кто знает как врубить 80х25 и чтобы сразу на весь экран? В эпоху DOS с этим проблем не возникало. Но, то были именно DOS программы запущенные из её же самой. А, в случае консольного приложения под Win32 как-то не понятно.

Вообще по умолчанию именно 80x25. Не совсем понял Вашу проблему, но проще всего настроить размер окна консоли в свойствах ярлыка.
Mikhail
энтузиаст
 
Сообщения: 544
Зарегистрирован: 24.10.2013 16:06:47

Re: Медленный компилятор FPC

Сообщение скалогрыз » 08.07.2015 16:16:59

Mikhail писал(а):Т.е. он включает перегрузку оператора "*" для массивов?

скорее включает поддержку оператора "*" для массивов.

оптимизатор написать проще, когда два массива перемножаются явно. Анализировать какие-нибудь вложенные циклы намного сложнее.

Добавлено спустя 1 минуту 20 секунд:
Burster_TIL писал(а):
скалогрыз писал(а):Но только потому что у тебя процессор заточен под FPU больше, чем мой

На досуге (если представится) дома проверю. Там много разных РС

есть успехи? как тесты себя повели?
скалогрыз
долгожитель
 
Сообщения: 1756
Зарегистрирован: 03.09.2008 02:36:48

Re: Медленный компилятор FPC

Сообщение Burster_TIL » 11.07.2015 00:16:14

Mikhail писал(а):Вообще по умолчанию именно 80x25. Не совсем понял Вашу проблему, но проще всего настроить размер окна консоли в свойствах ярлыка.


Никаких свойств ярлыков. Включить режим нужно именно из программы.

Добавлено спустя 37 секунд:
скалогрыз писал(а):есть успехи? как тесты себя повели?


Пока нет. Просто нет времени.
Burster_TIL
новенький
 
Сообщения: 46
Зарегистрирован: 25.09.2013 02:05:28

Re: Медленный компилятор FPC

Сообщение Kopa » 29.10.2020 13:05:18

sign писал(а):[Тогда ваша судьба Forth :wink:

Обойдёте на крутом вираже и дельфи, и лазарус, и прочие си.


Какие то проекты реализации Форт на Паскаль, находятся и на Github.

P.S. В обсуждении топика пишу компилятор с собственного языка
упоминается язык d2lang - синтаксически Паскаль ориентированный, но с какими то идеями и реализацией вдохновлённый Форт.
Ещё, например, Forth(Форт SPF4) пристыковывали в среде https://hiasm.com/ :)
Kopa
незнакомец
 
Сообщения: 6
Зарегистрирован: 29.10.2020 12:24:36

Пред.

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

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

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

Рейтинг@Mail.ru