All pastes #210322 Raw Edit

Untitled

public text v1 · immutable
#210322 ·published 2006-10-19 17:34 UTC
rendered paste body
        [lreg, local, scratch("?")] -> {
                x86_mov_reg_reg(inst, $3, $1, 4);
                x86_imul_reg_membase(inst, $3, X86_EBP, $2 + 4);
                x86_imul_reg_membase(inst, %1, X86_EBP, $2);
                x86_alu_reg_reg(inst, X86_ADD, %1, $3);
if(%1==X86_EDX || %1 == X86_EAX)
                x86_mov_reg_reg(inst, $3, %1, 4);
if($1!=X86_EAX) x86_mov_reg_reg(inst, X86_EAX, $1, 4);
                x86_mul_membase(inst, X86_EBP, $2, 0);
if(%1==X86_EDX || %1 == X86_EAX)
{
        x86_alu_reg_reg(inst, X86_ADD, $3, X86_EDX);
        x86_mov_reg_reg(inst, %1, $3, 4);
}
else
{
        x86_alu_reg_reg(inst, X86_ADD, %1, X86_EDX);
}
if($1!=X86_EAX) x86_mov_reg_reg(inst, $1, X86_EAX, 4);
        }
        [lreg, lreg, scratch("?")] -> 
}

i thought of sometning like this:

source1 : S1L : S1H
source2:  S2L : S2H
temp:     RH

		  S1L * S2H -> RH    /* RH = low dword of the multiply resulr */
		  S1H * S2L -> eax   /* eax = low dword of result */
		  RH += eax		     /* RH 
		  S1L * S2L -> eax: edx
		  edx += RH
		  result in eax:edx