|
VOID copybytes(B *dst, B *src, UW len, W mode)
B *dst 転送先 B *src 転送元 UW len 転送するバイト数。 W mode 演算指定
なし
src
で指定した長さ len
バイトのバイト列と、
dst
で指定した長さ len
バイトのバイト列との間で mode
で、
指定した演算を行い、結果を dst
で指定したバイト列に反映する。
この関数は DP
の gcop_bmp()
に対応しており、
mode
の値も DP
での演算モードに合わせてある。
ただし、特殊なものとして mode = 255
で
src
とdest
を swap
する機能がある。
以下に mode
と論理演算の対応は以下の通りである。
mode = G_STORE 0 src ==> dest G_XOR 1 src ^ deat ==> dest G_OR 2 src | dest ==> dest G_AND 3 src & dest ==> dest G_CPYN 4 ~src ==> dest G_XORN 5 ~src ^ dest ==> dest G_ORN 6 ~src | dest ==> dest G_ANDN 7 ~src & dest ==> dest ― 255 src <==> dest
|
VOID shiftbytes(B *p, UW len, W cnt)
B *p シフト対象データの先頭へのポインタ UW len 対象データの長さ(バイト数) W cnt シフト量(ビット数)
なし
p
で指定した長さ len
バイトのバイト列を
cnt
で指定した数だけ論理シフトする。
cnt > 0 : cnt 数 右シフト p p + len - 1 0→ □□□□□□□□ ・・・・・・・・・□□□□□□□□ → cnt < 0 :左シフト p p + len - 1 ← □□□□□□□□ ・・・・・・・・・□□□□□□□□ ← 0