gm2-libs-pim/BitBlockOps
DEFINITION MODULE BitBlockOps ;
FROM SYSTEM IMPORT ADDRESS ;
(*
BlockAnd - performs a bitwise AND on blocks
[dest..dest+size-1] := [dest..dest+size-1] AND
[src..src+size-1]
*)
PROCEDURE BlockAnd (dest, src: ADDRESS; size: CARDINAL) ;
(*
BlockOr - performs a bitwise OR on blocks
[dest..dest+size-1] := [dest..dest+size-1] OR
[src..src+size-1]
*)
PROCEDURE BlockOr (dest, src: ADDRESS; size: CARDINAL) ;
(*
BlockXor - performs a bitwise XOR on blocks
[dest..dest+size-1] := [dest..dest+size-1] XOR
[src..src+size-1]
*)
PROCEDURE BlockXor (dest, src: ADDRESS; size: CARDINAL) ;
(*
BlockNot - performs a bitsize NOT on the block as defined
by: [dest..dest+size-1]
*)
PROCEDURE BlockNot (dest: ADDRESS; size: CARDINAL) ;
(*
BlockShr - performs a block shift right of, count, bits.
Where the block is defined as:
[dest..dest+size-1].
The block is considered to be an ARRAY OF BYTEs
which is shifted, bit at a time over each byte in
turn. The left most byte is considered the byte
located at the lowest address.
If you require an endianness SHIFT use
the SYSTEM.SHIFT procedure and declare the
block as a POINTER TO set type.
*)
PROCEDURE BlockShr (dest: ADDRESS; size, count: CARDINAL) ;
(*
BlockShl - performs a block shift left of, count, bits.
Where the block is defined as:
[dest..dest+size-1].
The block is considered to be an ARRAY OF BYTEs
which is shifted, bit at a time over each byte in
turn. The left most byte is considered the byte
located at the lowest address.
If you require an endianness SHIFT use
the SYSTEM.SHIFT procedure and declare the
block as a POINTER TO set type.
*)
PROCEDURE BlockShl (dest: ADDRESS; size, count: CARDINAL) ;
(*
BlockRor - performs a block rotate right of, count, bits.
Where the block is defined as:
[dest..dest+size-1].
The block is considered to be an ARRAY OF BYTEs
which is rotated, bit at a time over each byte in
turn. The left most byte is considered the byte
located at the lowest address.
If you require an endianness ROTATE use
the SYSTEM.ROTATE procedure and declare the
block as a POINTER TO set type.
*)
PROCEDURE BlockRor (dest: ADDRESS; size, count: CARDINAL) ;
(*
BlockRol - performs a block rotate left of, count, bits.
Where the block is defined as:
[dest..dest+size-1].
The block is considered to be an ARRAY OF BYTEs
which is rotated, bit at a time over each byte in
turn. The left most byte is considered the byte
located at the lowest address.
If you require an endianness ROTATE use
the SYSTEM.ROTATE procedure and declare the
block as a POINTER TO set type.
*)
PROCEDURE BlockRol (dest: ADDRESS; size, count: CARDINAL) ;
END BitBlockOps.