đŁÔŇ ëĎÓÁŇĹ×ÓËÉĘ wrote:
>> On 24 mei 2006, at 10:56, đŁÔŇ ëĎÓÁŇĹ×ÓËÉĘ wrote:
>> > Is there high level operator/(inline)function for rotating bits?
>> No.
>> > Am I supposed to implement rotating bits (like ror/rol in i386 asm)
>> > by inline assembler or some ugly workarounds (shifts and or-s)?
>> Yes. I think there's already a feature request to provide these
>> operations, but no one worked on it yet.
>
> Why don't use this code?
 .
 .
>  function brol(b: byte; c: byte): byte; assembler; inline;
>    asm
>    movb  b,%al
>    movb  c,%cl
>    rolb  %cl,%al
>    movb  %al,result
>    end ['al','cl'];
 .
 .

With register calling convention (which is the default calling convention
in FPC 2.x), it can be reduced just to:

function brol(b: byte; c: byte): byte; assembler; inline;
asm
  rolb  %cl,%al
end;


(and similarly for all the other functions). The first parameter goes to
eax, the second to ecx, and the result is supposed to be in eax again.

Tomas

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to