Модератор: Модераторы
Иван Шихалев писал(а):Что значит "качество генерируемого кода"?
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
ret
Test1:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
movl 12(%ebp), %edx
addl $1, %eax
adcl $0, %edx
leave
ret
function 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
ret
movl %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)
Любой более менее путний компилер первыйс лучай сгенерит в пустышку
от силы в 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
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9