この章の目次にもどる
前頁:2.11 スクリーン情報にもどる
次頁:2.13 グローバル変数にすすむ

2.12 メモリ演算関数

copybytes
 
メモリ間演算つきコピー

【形式】

VOID    copybytes(B *dst, B *src, UW len, W mode)

【パラメータ】

B   *dst    転送先
B   *src    転送元
UW  len     転送するバイト数。
W   mode    演算指定

【リターン値】

なし

【解説】

src で指定した長さ len バイトのバイト列と、 dst で指定した長さ len バイトのバイト列との間で mode で、 指定した演算を行い、結果を dst で指定したバイト列に反映する。

この関数は DPgcop_bmp() に対応しており、 mode の値も DP での演算モードに合わせてある。 ただし、特殊なものとして mode = 255srcdestswap する機能がある。

以下に 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
shiftbytes
 
バイト列の論理シフト


【形式】

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

この章の目次にもどる
前頁:2.11 スクリーン情報にもどる
次頁:2.13 グローバル変数にすすむ