IBMBBGC*

IBMBBGCは、位置合わせされていない2つのビット ストリングを比較するPL/I常駐ライブラリー ルーチンです。2つのストリングの対応する部分(最大32ビット長)は、偶数と奇数のレジスター ペアで位置合わせされ、CLR命令を使用して比較されます。その結果、2つのビット ストリングが同値であるか、1つめのストリングが2つめより大きいか、または2つめのストリングが1つめより大きいかを示す値が戻されます。

ヒント

このルーチンは、位置合わせされていないビット ストリングが比較される場合にのみ呼び出されます。ビット ストリングを位置合わせしておくと、この処理を回避できます。

以下の例は、ビット ストリングを比較する3つのコーディング方法を示しています。1つめの方法ではIBMBBGCが呼び出されますが、他の2つの方法では呼び出されないため、CPUはほとんど使用されません。

28行めでは、位置合わせされていない変数BIT_VECTORが比較されています。これにより、IBMBBGCへの呼び出しが生成されます。

 

 

27 1 0 IF_UNALIGNED_GC: PROCEDURE;

28 2 0 IF BIT_VECTOR(19) = TRUE THEN; ELSE;

29 2 0 END;

32行めでは、定数と比較されています。IBMBBGCは呼び出されません。

 

31 1 0 IF_LITERAL_NO_GC: PROCEDURE;

32 2 0 IF BIT_VECTOR(19) = '1'B THEN; ELSE;

34 2 0 END;

36行めでは、ALIGNEDとして宣言された変数が比較されています。IBMBBGCは呼び出されません。

 

35 1 0 IF_ALIGNED_NO_GC: PROCEDURE

36 2 0 IF BIT_VECTOR_ALIGNED(19) = TRUE THEN; ELSE;

38 2 0 END:

IBMBBGCでの処理を排除するために、位置合わせした変数、または定数を使用してください。

参考資料

『OS PL/I Resident Library: Program Logic(LY33-6008)』