nesco писал(а):
Есть какие-либо предложения по решению данной проблемы? SHR Int64 Debug
Из описания инструкции SAR понятно, что она сохраняет знак числа (последний бит) после сдвига, тогда как SHR - нет. Не нашел в Delphi 4 беззнакового UInt64. Может на беззнаковом типе он не будет применять SAR?
Кто разбирается в ассемблере, нужно просмотреть функции Gamma0 и Gamma1 и попробовать либо заставить Delphi сгенерировать код с использованием в этих местах SHR, либо самому вставить ассемблерный фрагмент, выполняющий что нужно.
--- Добавлено в 2017-01-26 15:52:08
Вот так вроде работает:
{$ifdef VER120}
function shr64(const a: Int64; b: Byte): Int64;
begin
Result := a shr b;
end;
{$endif}
function Gamma0(x: Int64): Int64;
begin
Result := (ror64(x, 1) xor ror64(x, 8) xor {$ifdef VER120}shr64(x, 7){$else}(x shr 7){$endif});
end;
function Gamma1(x: Int64): Int64;
begin
Result := (ror64(x, 19) xor ror64(x, 61) xor {$ifdef VER120}shr64(x, 6){$else}(x shr 6){$endif});
end;