comparison gen/asm-x86-32.h @ 1086:56e364ba346c

Merging
author Kelly Wilson <wilsonk cpsc.ucalgary.ca>
date Tue, 10 Mar 2009 11:08:35 -0600
parents 56e56b3b9bb8
children b1d75bf46ffa
comparison
equal deleted inserted replaced
1085:8cb5b746500c 1086:56e364ba346c
447 /* Op_Fs_P */ { mem, 0, 0, 0, Clb_ST }, // " 447 /* Op_Fs_P */ { mem, 0, 0, 0, Clb_ST }, // "
448 /* Op_Fis */ { mem, 0, 0, FPInt_Types }, // only 16bit and 32bit, DMD defaults to 16bit 448 /* Op_Fis */ { mem, 0, 0, FPInt_Types }, // only 16bit and 32bit, DMD defaults to 16bit
449 /* Op_Fis_ST */ { mem, 0, 0, FPInt_Types, Clb_ST }, // " 449 /* Op_Fis_ST */ { mem, 0, 0, FPInt_Types, Clb_ST }, // "
450 /* Op_Fis_P */ { mem, 0, 0, FPInt_Types, Clb_ST }, // push and pop, fild so also 64 bit 450 /* Op_Fis_P */ { mem, 0, 0, FPInt_Types, Clb_ST }, // push and pop, fild so also 64 bit
451 /* Op_Fid */ { D|mem, 0, 0, FPInt_Types }, // only 16bit and 32bit, DMD defaults to 16bit 451 /* Op_Fid */ { D|mem, 0, 0, FPInt_Types }, // only 16bit and 32bit, DMD defaults to 16bit
452 /* Op_Fid_P */ { D|mem, 0, 0, FPInt_Types, Clb_ST }, // push and pop, fild so also 64 bit 452 /* Op_Fid_P */ { D|mem, 0, 0, FPInt_Types, Clb_ST, Op_FfdRR_P }, // push and pop, fild so also 64 bit
453 /* Op_Ffd */ { D|mfp, 0, 0, FP_Types, 0, Next_Form, Op_FfdR }, // only 16bit and 32bit, DMD defaults to 16bit, reg form doesn't need type 453 /* Op_Ffd */ { D|mfp, 0, 0, FP_Types, 0, Next_Form, Op_FfdR }, // only 16bit and 32bit, DMD defaults to 16bit, reg form doesn't need type
454 /* Op_FfdR */ { D|rfp, 0, 0 }, 454 /* Op_FfdR */ { D|rfp, 0, 0 },
455 /* Op_Ffd_P */ { D|mfp, 0, 0, FP_Types, Clb_ST, Next_Form, Op_FfdR_P }, // pop, fld so also 80 bit, " 455 /* Op_Ffd_P */ { D|mfp, 0, 0, FP_Types, Clb_ST, Next_Form, Op_FfdR_P }, // pop, fld so also 80 bit, "
456 /* Op_FfdR_P */ { D|rfp, 0, 0, 0, Clb_ST, Next_Form, Op_FfdRR_P }, 456 /* Op_FfdR_P */ { D|rfp, 0, 0, 0, Clb_ST, Next_Form, Op_FfdRR_P },
457 /* Op_FfdRR_P */ { D|mfp|rfp,rfp,0, 0, Clb_ST }, 457 /* Op_FfdRR_P */ { D|mfp|rfp,rfp,0, 0, Clb_ST },
1375 stmt->error ( "too many operands for instruction" ); 1375 stmt->error ( "too many operands for instruction" );
1376 break; 1376 break;
1377 } 1377 }
1378 1378
1379 if ( token->value == TOKcomma ) 1379 if ( token->value == TOKcomma )
1380 {
1380 nextToken(); 1381 nextToken();
1382 }
1383 else if ( token->value == TOKint16 || token->value == TOKint32 )
1384 {
1385 //throw away the 'short' in "jle short label;". Works for 'long' also.
1386 operands[0] = operands[1];
1387 return;
1388 }
1381 else if ( token->value != TOKeof ) 1389 else if ( token->value != TOKeof )
1382 { 1390 {
1383 ok = false; 1391 ok = false;
1384 stmt->error ( "expected comma after operand" ); 1392 stmt->error ( "expected comma after operand" );
1385 return; 1393 return;
2782 case TOKdollar: 2790 case TOKdollar:
2783 nextToken(); 2791 nextToken();
2784 ident = Id::__dollar; 2792 ident = Id::__dollar;
2785 goto do_dollar; 2793 goto do_dollar;
2786 break; 2794 break;
2795 case TOKint16:
2796 case TOKint32:
2797 //This if for the 'short' in "jle short Label;"
2798 return Handled;
2787 default: 2799 default:
2788 invalidExpression(); 2800 invalidExpression();
2789 return Handled; 2801 return Handled;
2790 } 2802 }
2791 return e; 2803 return e;