int main() { float a = 1.1f; float b = 0.3f; double c = 0.6f; __asm { fld a ;// ST0=1.1 fld b ;// ST1=1.1, ST0=0.3 fld c ;// ST2= 1.1, ST1=0.3, ST0=0.6 fld a ;// ST3= 1.1, ST2=0.3, ST1=0.6, ST1=0.1 fld b ;// ST4= 1.1, ST3=0.3, ST2=0.6, ST1=0.1, ST0=0.1 fld c ;// ST5= 1.1, ST4=0.3, ST3=0.6, ST2=0.1, ST1=0.1, ST0=0.6 fld a ;// ST6= 1.1, ST5=0.3, ST4=0.6, ST3=0.1, ST2=0.1, ST1=0.6, ST0=1.1 fld b ;// ST7= 1.1, ST6=0.3, ST5=0.6, ST4=0.1, ST3=0.1, ST2=0.6, ST1=1.1, ST0=0.3 fld c ;// the stack (revolver cylinder) is full fld a ;// values are still shifted but overwritten ones are invalid } return 0; }