[.MSIL Reversing] Damn pointer instructions...

Hi all! Hope it's not a problem if I ask something about IL instructions in a forum about .NET languages, but I really need some help fixing a problem.

I'm trying to reverse those instructions...
[code]ldloc.s texturedRef
conv.i
ldloc.s num11
ldloc.1
mul
ldloc.s num12
add
conv.i
sizeof [Microsoft.DirectX.Direct3D]Microsoft.DirectX.Direct3D.CustomVertex/TransformedColoredTextured
mul
add
conv.u
stloc.s texturedPtr[/code]

My best try is:
[code]CustomVertex.TransformedColoredTextured* texturedPtr = (CustomVertex.TransformedColoredTextured*)((byte)(texturedRef + ((k * num2) + m)));[/code]
Buy I obviously get something like that:
[code]ldloc.s texturedRef
conv.i
ldloc.s num11
ldloc.1
mul
ldloc.s num12
add
conv.i
sizeof [Microsoft.DirectX.Direct3D]Microsoft.DirectX.Direct3D.CustomVertex/TransformedColoredTextured
mul
add
conv.u4 <--------------- Difference
conv.u
stloc.s texturedPtr[/code]

If I compile this line removing the (byte) boxing, like that:
[code]CustomVertex.TransformedColoredTextured* texturedPtr = (CustomVertex.TransformedColoredTextured*)(texturedRef + ((k * num2) + m));[/code]
I get those instructions (without final conv):
[code]ldloc.s texturedRef
conv.i
ldloc.s num11
ldloc.1
mul
ldloc.s num12
add
conv.i
sizeof [Microsoft.DirectX.Direct3D]Microsoft.DirectX.Direct3D.CustomVertex/TransformedColoredTextured
mul
add
stloc.s texturedPtr[/code]

Those differences are making texture rendering process very very slow... with .NET Reflector Reflexil I injected the correct instructions and all is working fine, then I need to find a way to get rid of this megind difference. Well... I can't get a stand alone "conv.u". Any ideas anyone?

Thanks in advance!
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories