|
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