Ror / Rol в Delphi
Видел где-то код функций lrotr и lrotl, но тот код был довольно нестабилен, что я заметил, использовав его при портировании EnRUPT и написании VigerePlus 3.1.
Вот их простая замена. Для rol просто меняем инструкцию ror -> rol
function ROR_u32 (X: LongWord; N: byte): LongWord;
asm
MOV EAX, X
MOV CL, N
ROR EAX, CL
end;
function ROR_u8 (X, N: byte): byte;
asm
MOV AL, X
MOV CL, N
ROR AL, CL
end;
function lrotr8 (X: LongWord): LongWord;
asm
MOV EAX, X
ROR EAX, 8
end;
|