Amigos alguien sabe como puedo emplear estas 2 funciones de ASM en .Net
Public Shared Function RotateLeftByVal(value As UInteger, ByVal count As UInteger)
        Return (value << count) Or (value >> (32 - count))
    End Function
    Public Shared Function RotateRightByVal(ByVal value As UInteger, ByVal count As UInteger)
        Return (value >> count) Or (value << (32 - count))
    End Function
Tengo estas 2 funciones pero creo que no funcionan correctamente.. alguien que me pueda ayudar...
Thx
			
			
			
				Para los que no sabemos ASM, ¿puedes mostrar el uso de las funciones originales (en ASM) y/o indicar que resultado esperas conseguir al llamar a cada función para poder darte una solución?
Saludos
			
			
			
				Seguro bro
Aqui se explica como funcionan las 2 funciones ROR y ROL
http://foro.elhacker.net/analisis_y_diseno_de_malware/abril_negro_2008_taller_de_asm-t208188.0.html
			
			
			
				Quizá no te esté funcionando porque (según sé) en ASM las instrucciones ROR Y ROL regresan los bits desplazados nuevamente a la posición contraria de la variable y en .NET esos bits se descartan. Ejemplo al desplazar 2 bits:
ASM | VB.NET | 
Bits originales: 11000011 | Bits originales: 11000011 | 
Bits después del desplazamiento: 00001111 | Bits después del desplazamiento: 00000000 | 
			 
			
			
				Hola Benjo,
Eso lo tengo claro el operador que hace esto es >> y el << que en ASM es SHL y SHR, los que digo yo hacen la rotacion circular (Shift Circular Rotation) encontre una funcion en un proyecto que despues podre pero con algunos funciona y con otros no...
De madre, estoy a punto de dejarlo y esperar...
Salu2 y GRacias
			
			
			
				Para simular las funciones de rotación circulas la tienes realmente fácil y sólo necesitas crear una nueva variable para ello:
   Public Shared Function RotateLeftByVal(value As UInteger, ByVal count As UInteger)
        Dim VT as UInteger
        VT = value
        VT >> (32 - count)
        value << count
        value += VT
        Return value
        'Return (value << count) Or (value >> (32 - count))
    End Function
Faltaría que modificaras la otra función.
El código no ha sido probado, pruébalo y nos dices si te ha servido. Saludos.  ;D