更新日: 2024 年 6 月 27 日
__LDIV
FE ファンクションコール名
__LDIV
FE ファンクションコール番号
$FE01
機能
32bit 符号あり整数除算
入力
d0.l:32bit 符号あり整数。被除数 x
d1.l:32bit 符号あり整数。除数 y
出力
d0.l:32bit 符号あり整数。商 x/y。ゼロ除算のとき不定。オーバーフローのとき $7FFFFFFF
フラグ
ccr:cs= エラーあり。cs,eq,vc= ゼロ除算(0/0 を含む)。cs,ne,vs= オーバーフロー(-$80000000/-$00000001=+$80000000)
解説
バグ
FLOAT2.X 2.02/2.03 と FLOAT3.X 2.03 は 0/0 のとき C フラグをセットしない
X-BASIC で「print 0/0」が「0による除算が行われました」ではなく「0」になる
FLOAT4.X 1.02 はオーバーフローのとき C フラグをセットしない
X-BASIC で「print &H80000000/-1」が「オーバーフローしました」ではなく「-2147483648」になる
メモ
Z フラグと V フラグの変化は CZ-6BP1 のマニュアルに書かれていないが X-BASIC が使っている
FLOAT2.X 2.02/2.03 と FLOAT3.X 2.03 はゼロ除算(0/0 を含まない)のとき Z フラグをセット、V フラグをクリアする
FLOAT2.X 2.02/2.03 と FLOAT3.X 2.03 はオーバーフローのとき Z フラグをクリア、V フラグをセットする
FLOAT4.X 1.02 はゼロ除算(0/0 を含む)のとき Z フラグと V フラグをクリアする
X-BASIC で「print 1/0」や「print 0/0」が「0による除算が行われました」ではなく「アンダーフローしました」になる