Всем добрый день. Пытаюсь экспериментировать с Линуксом. Не могу понять, почему выдаётся ужасный код в дизассемблере.
type
TMyObject = class(TObject)
private
F: NativeInt;
public
function TestFunction: NativeInt;
end;
function TMyObject.TestFunction: NativeInt;
begin
Result := F;
end;
В Windows 64:
Unit1.pas.78: Result := F;
0000000000427920 488B4108 mov rax,[rcx+$08]
Unit1.pas.79: end;
0000000000427924 C3 ret
В Линукс:
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
Что тут можно сделать?