Mercurial > projects > ldc
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; |