public override sealed void OperateDouble(CGenState state) {
// In the beginning, %st(0) = Left, %st(1) = Right.
//
// float stack:
// +-----+
// | rhs | <- %st(1)
// +-----+
// | lhs | <- %st(0)
// +-----+
//
// 1. Do comparison between %st(0) and %st(1).
// Pop one Value from FPU stack.
//
// float stack:
// +-----+
// | rhs | <- %st(0)
// +-----+
//
state.FUCOMIP();
// 2. Pop another Value from FPU stack.
//
// float stack:
// +-----+ empty
//
state.FSTP(Reg.ST0);
// 3. Set bit based on comparison result.
SetDouble(state);
state.MOVZBL(Reg.AL, Reg.EAX);
}