Region式
このセクションの内容:
構文
region-operand|region-expr|region-operand|region-expr-region-operand|region-expr®ion-operand
ここで、region-operandは以下のいずれかです。
(region-expr)region-nameregion-literalempty-region
ここで、region-nameは領域です(詳細define regionディレクティブはを参照)。
region-literalはRegionリテラルです(詳細はRegionリテラルを参照)。
empty-regionは空Regionです(詳細は空Regionを参照)。
説明
通常、領域は、1つのメモリ範囲で構成されます。つまり、1つのRegionリテラルで領域を表現できます。領域に複数の範囲が(場合によっては異なるメモリに)含まれる場合、Region式を使用して領域を表現する必要があります。Region式は、実際、メモリ範囲のセットにおけるセット式です。
領域式を作成するには、union (|)、intersection (&)、difference (-)の3つの演算子を使用できます。これらの演算子は、セット理論に基づいて機能します。たとえば、セットAおよびBがある場合、演算子の結果は以下のようになります。
A | B: セットAまたはセットBいずれかのすべての要素A & B: セットA およびセットB 両方のすべての要素A - B: セットAにありセットBにないすべての要素
例
/* Resulting in a range starting at 1000 and ending at 2FFF */ [from 0x1000 to 0x1FFF] | [from 0x1500 to 0x2FFF] /* Resulting in a range starting at 1500 and ending at 1FFF */ [from 0x1000 to 0x1FFF] & [from 0x1500 to 0x2FFF] /* Resulting in a range starting at 1000 and ending at 14FF */ [from 0x1000 to 0x1FFF] - [from 0x1500 to 0x2FFF] /* Resulting in two ranges, the first starting at 1000 and ending at 1FFF, the second starting at 2501 and ending at 2FFF */ [from 0x1000 to 0x2FFF] - [from 0x2000 to 0x24FF]