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

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

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

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


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

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

тьфу...

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

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

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

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


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