[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]

A 64ビット・アドレッシングのためのCマクロ

ここでは64ビット・アドレスの操作,64ビット値の下位 32ビットの符号拡張のチェック,および 64ビット形式のディスクリプタをチェックするCマクロについて説明します。


DESCRIPTOR64

64ビット文字列ディスクリプタを構成します。

フォーマット

     $DESCRIPTOR64   name, string

説明

name:変数の名前。
string:文字列のアドレス。

例:

     int status;
     $DESCRIPTOR64 (gblsec, "GBLSEC_NAME");
     ...
     
     /* Create global page file section */
     status = sys$create_gpfile (&gblsec, 0, 0, section_size, 0, 0);

     ...

このマクロは,SYS$LIBRARY:DECC$RTLDEF.TLB内のdescrip.hにあります。


$is_desc64

64ビット・ディスクリプタを識別します。

フォーマット

     $is_desc64   desc

説明

desc:32ビットまたは64ビット・ディスクリプタのアドレス。

戻り値:


ディスクリプタが32ビット・ディスクリプタの場合は0。
ディスクリプタが64ビット・ディスクリプタの場合は1。
例:
     #include <descrip.h>
     #include <far_pointers.h>
     ...
             if ($is_desc64 (user_desc))
             {
                     /* Get 64-bit address and 64-bit length from descriptor */
                     ...
             }
             else
             {
                     /* Get 32-bit address and 16-bit length from descriptor */
                     ...
             }
このマクロは,SYS$LIBRARY:DECC$RTLDEF.TLB内のdescrip.hにあります。


$is_32bits

クォドワードが32ビット符号拡張されているかどうかをチェックします。

フォーマット

     $is_32bits   arg

説明

入力: arg 64ビット値。

出力:

argが32ビット符号拡張されている場合は1。
argが32ビット符号拡張されていない場合は0。
例:
     #include <starlet_bigpage.h>
     ...
     if ($is_32bits(user_va))
             counter_32++;   /* Count number of 32-bit references */
     else
             counter_64++;  /* Count number of 64-bit references */

このマクロは,SYS$LIBRARY:SYS$STARLET_C.TLB内の starlet_bigpage.hにあります。


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]