Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Tokyo + Linux, качество кода / 15 сообщений из 15, страница 1 из 1
21.10.2018, 19:48
    #39720546
Голландец
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
Всем добрый день. Пытаюсь экспериментировать с Линуксом. Не могу понять, почему выдаётся ужасный код в дизассемблере.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
{$OPTIMIZATION ON}

type
  TMyObject = class(TObject)
  private
    F: NativeInt;
  public
    function TestFunction: NativeInt;
  end;

function TMyObject.TestFunction: NativeInt;
begin
  Result := F;
end;



В Windows 64:
Код: sql
1.
2.
3.
4.
Unit1.pas.78: Result := F;
0000000000427920 488B4108         mov rax,[rcx+$08]
Unit1.pas.79: end;
0000000000427924 C3               ret



В Линукс:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Unit1.pas.68: function TestFunction: NativeInt;
000000000046FF60 55               push   rbp
000000000046FF61 4889E5           mov    rbp,rsp
000000000046FF64 48897DF8         mov    QWORD PTR [rbp-0x8],rdi
Unit1.pas.76: Result := F;
000000000046FF68 488B7DF8         mov    rdi,QWORD PTR [rbp-0x8]
000000000046FF6C 488B7F10         mov    rdi,QWORD PTR [rdi+0x10]
000000000046FF70 48897DF0         mov    QWORD PTR [rbp-0x10],rdi
Unit1.pas.77: end;
000000000046FF74 488B45F0         mov    rax,QWORD PTR [rbp-0x10]
000000000046FF78 5D               pop    rbp



Что тут можно сделать?
...
Рейтинг: 0 / 0
21.10.2018, 20:14
    #39720551
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
Подождать несколько лет. Возожно что-то измениться.
...
Рейтинг: 0 / 0
21.10.2018, 20:26
    #39720554
0055
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
ГолландецЧто тут можно сделать?
Не использовать Delphi. Но тебя ведь это всё равно не остановит. Так что продолжай страдать и терпеть :)
...
Рейтинг: 0 / 0
22.10.2018, 06:24
    #39720669
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
ГолландецЧто тут можно сделать?вангую: "Соглашение о вызове" поменять
...
Рейтинг: 0 / 0
22.10.2018, 06:36
    #39720670
MBo
MBo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
kealon(Ruslan),

Для x64 вариантов нет - единственное соглашение для Win64, единственное (несколько другое) для юниксов.
https://en.wikipedia.org/wiki/X86_calling_conventions#x86-64_calling_conventions
...
Рейтинг: 0 / 0
23.10.2018, 14:01
    #39721450
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
MBo,

ну и что тогда пенять, всё пучком выходит
...
Рейтинг: 0 / 0
23.10.2018, 16:44
    #39721547
jmp_original
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
kealon(Ruslan), чего там пучком, если компилер вместо одной инструкции
Код: sql
1.
mov    rax,QWORD PTR [rdi+0x10]


соорудил 8, добавив 4 с обращением в память.

Но на самом деле странно конечно. Там точно оптимизация сработала? (А то ведь подобный код и в 32-битах в debug генерится.)
...
Рейтинг: 0 / 0
23.10.2018, 16:59
    #39721560
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
jmp_original,

тьфу...

ещё на стаб для обработчика исключений похоже
...
Рейтинг: 0 / 0
23.10.2018, 20:39
    #39721676
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
Таки кстати да, это дебаг или релиз?
...
Рейтинг: 0 / 0
24.10.2018, 00:01
    #39721761
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
rgreatТаки кстати да, это дебаг или релиз?
Это чистый не оптимизированный код любого компилятора.

Если это оптимизированный релиз, значит оптимизацию пока не подвезли - будет позже
...
Рейтинг: 0 / 0
24.10.2018, 00:47
    #39721775
Голландец
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
rgreat,

Написано же
Код: plaintext
{$OPTIMIZATION ON}
...
Рейтинг: 0 / 0
24.10.2018, 01:20
    #39721780
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
Голландецrgreat,

Написано же
Код: plaintext
{$OPTIMIZATION ON}
С каких врмен {$OPTIMIZATION ON} стал аналогчен Release?
...
Рейтинг: 0 / 0
24.10.2018, 01:34
    #39721782
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
Не работает в некстгенах оптимизация: https://quality.embarcadero.com/browse/RSP-17724
...
Рейтинг: 0 / 0
24.10.2018, 10:23
    #39721879
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
Емнип, там же не родной компилятор применяется. Претензии к LLVM, выходит?
...
Рейтинг: 0 / 0
24.10.2018, 10:46
    #39721898
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tokyo + Linux, качество кода
Василий 2Претензии к LLVM, выходит?
К его приготовлению. По моей ссылке есть код из-под другого LLVM-based компилятора, можешь сравнить.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Tokyo + Linux, качество кода / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]