ByteOrder: TByteOrder);
var
Swapper: int64 absolute Value;
begin
Stream.Read(Value, 8);
if ByteOrder = boBIGENDIAN then
InverseByteOrder(Swapper);
end;
procedure InverseByteOrder(var Value: int64);
asm
mov edx, dword ptr [eax]
mov ecx, dword ptr [eax+4]
bswap edx
bswap ecx
mov dword ptr [eax], ecx
mov dword ptr [eax+4], edx
end;
есть тут шанс его выкосить? при этом важно что бы CPU код не разросся
Конечно через pint64
угу, прокатывает. ща асм гляну что получается
ты сам говоришь что овощи нужно вставлять в нужное место https://t.me/Delphi_Lazarus/286943 самое то для абсолюта. сука зателями будет многословней
вообще нет: procedure ParseFloat64(Stream: TStream; var Value: double; ByteOrder: TByteOrder); begin Stream.Read(Value, 8); if ByteOrder = boBIGENDIAN then InverseByteOrder(pint64(Swapper)); end;
Не будет многословней, причем кода меньше станет
Обсуждают сегодня