All pastes #770667 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-11-12 14:17 UTC
rendered paste body
<shift.f>

\ 24-06-2007 ~mOleg
\ Copyright [C] 2007 mOleg mininoleg@yahoo.com
\ различные сдвиги 32битных чисел

 REQUIRE STREAM[   devel\~mOleg\lib\arrays\stream.f

\ циклически сдвинуть число U на указанное число бит влево
: ROL ( U # --> U ) STREAM[ x8AC8 8B4500 8D6D04 D3C0 C3 ] ;

\ циклически сдвинуть число U на указанное число бит вправо
: ROR ( U # --> U ) STREAM[ x8AC8 8B4500 8D6D04 D3C8 C3 ] ;

\ арифметический сдвиг влево числа U на указанное # число бит
: SAL ( U # --> U ) STREAM[ x8AC8 8B4500 8D6D04 D3F0 C3 ] ;

\ арифметический сдвиг вправо числа U на указанное # число бит
: SAR ( U # --> U ) STREAM[ x8AC8 8B4500 8D6D04 D3F8 C3 ] ;

?DEFINED test{ \EOF -- тестовая секция ---------------------------------------

test{ 0x12345678 4 ROL 0x23456781 <> THROW
      0x12345678 4 ROR 0x81234567 <> THROW
      0xF0000000 3 SAR 0xFE000000 <> THROW
      0x70000001 3 SAL 0x80000008 <> THROW
  S" passed" TYPE
}test