Mercurial > projects > ddmd
diff dmd/backend/iasm.d @ 20:1628b221808d
Fleshed out more unimplemented methods.
author | Robert Clipsham <robert@octarineparrot.com> |
---|---|
date | Wed, 07 Apr 2010 00:29:13 +0100 |
parents | 2cc604139636 |
children | fd4acc376c45 |
line wrap: on
line diff
--- a/dmd/backend/iasm.d Tue Apr 06 02:21:04 2010 +0100 +++ b/dmd/backend/iasm.d Wed Apr 07 00:29:13 2010 +0100 @@ -1035,10 +1035,12 @@ } else { - asm_make_modrm_byte( -///debug { + debug asm_make_modrm_byte( auchOpcode, &usIdx, -///} + pc, + ptb.pptb1.usFlags, + popnd1, null); + else asm_make_modrm_byte( pc, ptb.pptb1.usFlags, popnd1, null); @@ -1128,23 +1130,21 @@ ptb.pptb0.usOpcode == 0x660F7E // MOVD _rm32,_xmm ) { - asm_make_modrm_byte( -///debug { - auchOpcode, &usIdx, -///} - pc, - ptb.pptb1.usFlags, - popnd1, popnd2); + debug asm_make_modrm_byte( + auchOpcode, &usIdx, + pc, + ptb.pptb1.usFlags, + popnd1, popnd2); + else asm_make_modrm_byte(pc, ptb.pptb1.usFlags, popnd1, popnd2); } else { - asm_make_modrm_byte( -///debug { - auchOpcode, &usIdx, -///} - pc, - ptb.pptb1.usFlags, - popnd2, popnd1); + debug asm_make_modrm_byte( + auchOpcode, &usIdx, + pc, + ptb.pptb1.usFlags, + popnd2, popnd1); + else asm_make_modrm_byte(pc, ptb.pptb1.usFlags, popnd2, popnd1); } popndTmp = popnd1; aoptyTmp = aoptyTable1; @@ -1188,23 +1188,31 @@ ptb.pptb0.usOpcode == 0x660FD7 || ptb.pptb0.usOpcode == 0x0FD7) { - asm_make_modrm_byte( + debug asm_make_modrm_byte( ///debug { auchOpcode, &usIdx, ///} pc, ptb.pptb1.usFlags, popnd2, popnd1); + else asm_make_modrm_byte( + pc, + ptb.pptb1.usFlags, + popnd2, popnd1); } else { - asm_make_modrm_byte( + debug asm_make_modrm_byte( ///debug { auchOpcode, &usIdx, ///} pc, ptb.pptb1.usFlags, popnd1, popnd2); + else asm_make_modrm_byte( + pc, + ptb.pptb1.usFlags, + popnd1, popnd2); } if (aoptyTable1 == ASM_OPERAND_TYPE._imm) @@ -1226,13 +1234,17 @@ if (aoptyTable2 == ASM_OPERAND_TYPE._m || aoptyTable2 == ASM_OPERAND_TYPE._rm || usOpcode == 0x0FC5) // PEXTRW { - asm_make_modrm_byte( + debug asm_make_modrm_byte( ///debug { auchOpcode, &usIdx, ///} pc, ptb.pptb1.usFlags, popnd2, popnd1); + else asm_make_modrm_byte( + pc, + ptb.pptb1.usFlags, + popnd2, popnd1); popndTmp = popnd3; aoptyTmp = aoptyTable3; uSizemaskTmp = cast(ushort)uSizemaskTable3; @@ -1266,14 +1278,19 @@ } } else - asm_make_modrm_byte( + { + debug asm_make_modrm_byte( ///debug { auchOpcode, &usIdx, ///} pc, ptb.pptb1.usFlags, popnd1, popnd2); - + else asm_make_modrm_byte( + pc, + ptb.pptb1.usFlags, + popnd1, popnd2); + } popndTmp = popnd3; aoptyTmp = aoptyTable3; uSizemaskTmp = cast(ushort)uSizemaskTable3; @@ -2230,16 +2247,16 @@ return X(r1, 9); } -void asm_make_modrm_byte( -///debug { - ubyte[] puchOpcode, uint* pusIdx, -///} - code *pc, - ushort usFlags, - OPND *popnd, OPND *popnd2) +// Save a copy/pasted function +template Tuple(T...) { alias T Tuple; } +debug alias Tuple!(ubyte[], uint*) asm_make_modrm_args; +else alias Tuple!() asm_make_modrm_args; + +void asm_make_modrm_byte(asm_make_modrm_args ocidx, code *pc, ushort usFlags, OPND *popnd, OPND *popnd2) { /// #undef modregrm - +debug alias ocidx[0] puchOpcode; +debug alias ocidx[1] pusIdx; union MODRM_BYTE // mrmb { struct MODRM