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

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

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

- $DESCRIPTOR64

- $is_desc64

- $is_32bits

# 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 ]