October 16, 2005
void a(){
asm{
fcmovb ST(2);
}
}

void b(){
asm{
fcmovb ST(0), ST(2);
}
}

void c(){
asm{
fcmovb ST, ST(2);
}
}


Case a is documented as "wrong" but produces reasonable code (DA C2).

Case b isn't documented as "right" and produces the unexpected and effectless
code (DA C0). "ST(2)" was dropped without any error message.

Case c is documented as "right" but fails to compile with the message: bad type/size of operands 'fcmovb'

Thomas