countersince January 6, 2001X68000 LIBRARYEnglish
更新日: 2024 年 6 月 27 日
X68000 LIBRARY > 資料室 > FE ファンクションコールリファレンス > L > __LDIV

__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による除算が行われました」ではなく「アンダーフローしました」になる