Модератор: Модераторы
Иван Шихалев писал(а):Что значит "качество генерируемого кода"?
unit test;
interface
implementation
procedure test1;
var
    i:LongInt;
begin
    i:=10;
    inc(i);
end;
end....
TEST_TEST1:
        pushl   %ebp
        movl    %esp,%ebp
        subl    $4,%esp
        movl    $10,-4(%ebp)
        incl    -4(%ebp)
        leave
        ret
......
Test1:
        pushl   %ebp
        movl    %esp, %ebp
        subl    $8, %esp
        movl    $10, -8(%ebp)
        movl    $0, -4(%ebp)
        leal    -8(%ebp), %eax
        addl    $1, (%eax)
        adcl    $0, 4(%eax)
        leave
        ret
...


Иван Шихалев писал(а):И все-таки, странно, очень странно смотрится inc() через add… Может у GPC/GCC оптимизация напрочь вырублена?
 Поэтому я изменил тестовую программу.
 Поэтому я изменил тестовую программу.unit test;
interface
   function test1(i:LongInt):LongInt;
implementation
   function test1(i:LongInt):LongInt;
   begin
       inc(i);
       test1:=i;
   end;
end.TEST_TEST1$LONGINT$$LONGINT:
        pushl   %ebp
        movl    %esp,%ebp
        subl    $8,%esp
        movl    %eax,-4(%ebp)
        incl    %eax
        movl    %eax,-4(%ebp)
        movl    %eax,-8(%ebp)
        leave
        retTest1:
        pushl   %ebp
        movl    %esp, %ebp
        movl    8(%ebp), %eax
        movl    12(%ebp), %edx
        addl    $1, %eax
        adcl    $0, %edx
        leave
        retfunction test1(i:LongInt):LongInt;cdecl;TEST_TEST1$LONGINT$$LONGINT:
        pushl   %ebp
        movl    %esp,%ebp
        subl    $4,%esp
        incl    8(%ebp)
        movl    8(%ebp),%eax
        movl    %eax,-4(%ebp)
        leave
        retmovl    %eax,-4(%ebp)
Atrus писал(а): Х.з. какой gcc? На самом деле в 4-ой ветке появились вкусности, типа автовекторизации и т.д....
..автовекторизации..



STAKANOV писал(а):..автовекторизации..
шо це такэ ?

Romtek писал(а): Вот ссылка по теме: <a href='http://forum.sources.ru/index.php?showtopic=102322' target='_blank'> Производительность компиляторов</a> (Тесты для Delphi/FPC/TMT/VP/GPC)
 у меня BISON только 1.875, а для более свежих нужен 2.0, но такого пока нет в портах, а собирать его из исходников я пока не пробывал ...
 у меня BISON только 1.875, а для более свежих нужен 2.0, но такого пока нет в портах, а собирать его из исходников я пока не пробывал ...

Любой более менее путний компилер первыйс лучай сгенерит в пустышку
от силы в 3 комманды и то вместе с ret.
test1:
    incl   4(%esp)
    movl 4(%esp),%eax
    ret
test1:
     incl %eax
     ret

int test1(int i){
 return ++i;
}test1:
        pushl   %ebp
        movl    %esp, %ebp
        movl    8(%ebp), %eax
        incl    %eax
        leave
        ret
Сейчас этот форум просматривают: Yandex [Bot] и гости: 1