Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - cpu2

#481
Criptografía / Re: Iniciar en criptografía
13 Diciembre 2013, 05:29 AM
Una vez eche un vistazo a este libro, Applied Cryptography de Bruce Schneier, tengo que decirte que no lo lei mucho por que yo prefiero estudiar directamente el algoritmo que quiero, pero el primer cifrado que te explica es el xor, uno de los mas basicos claro y con ejemplo en C.

Pero si quieres informacion sobre algun cifrado especifico descargate su algoritmo "explicacion" en pdf, es lo que estoy haciendo yo con el cifrado AES, lo entiendo a la perfeccion y no empece por lo basico, pero otra cosa es implementarlo para SSE2 xD.

Un saludo.
#482
ASM / Re: Duda sobre maquina virtual
10 Diciembre 2013, 21:45 PM
Revise ese libro no me extraña que vengas con dudas, ese libro es malo o al menos lo es para mi, creo tenerlo por aqui, cuando pueda leere eso para asi saber a que te refieres.

Un saludo.
#483
ASM / Re: Duda sobre maquina virtual
10 Diciembre 2013, 02:39 AM
Un porgrama escrito en C/C++ es portable para la arquitectura que soporte el compilador, lee las opciones de gcc y veras, pero en ASM si escribes un codigo para una arquitectura x86 y quieres crear el binario para una sparc64, pues no te va a valer ya que esas instrucciones no existen para la sparc64, tendras que escribir el codigo para esa arquitectura en C/C++ el mismo codigo vale para las dos, simplemente pon las opciones adecuadas para esa arquitectura, pero si estas en una x86 y haces un gcc estandar el binario sera para la x86 logico, y no valdra para la sparc64.

Un saludo.
#484
ASM / Duda con MixColumns
9 Diciembre 2013, 03:34 AM
Hola

La tengo casi lista, pero tengo un problema. Como sabran la funcion MixColumns se trata de unas multiplicaciones en GF 2(8) y una reduccion modular por 0x11b, en algunos casos se multiplica por 2 y en otros por 3, el 1 no hace falta claro, bien resulta que en algunos bytes cuando los multiplicas por 2 o por 3 es igual el que sea, se pasan de 0xff, lo que los convierte en un word, a esos si hay que hacerles una reduccion modular.

Ejemplo:

0xbf << 1 = 0x17e xor 0x11b = 0x65

Pero por ejemplo 0x56 no hace falta.

0x56 << 1 = 0xac

Bien tengo el siguiente codigo, imaginaos que todo el registro esta lleno de 0xbf.

Código (asm) [Seleccionar]
.section .data

sb:
.quad 0x7f7f7f7f7f7f7f7f,0x7f7f7f7f7f7f7f7f
rm:
.quad 0x1b1b1b1b1b1b1b1b,0x1b1b1b1b1b1b1b1b

.section .text
.globl _start

_start:

pand sb, %xmm0
pslld $1, %xmm0
pxor rm, %xmm0


Bien el and, es para evitar que se convierta en word, ocuparia el otro dword y no puede ser, se quedaria en 0x7e, no en 0x17e, y luego se multiplica por 2 y luego el xor es la reduccion modular, todo bien.

Bueno esta es la duda, si tengo un 0x56 y 0xbf en el registro barregados 0x56 no requiere ninguna reduccion modular pero 0xbf si, el resultado seria erroneo, como podria solucionar este problema, alguien me echa un cable?

Un saludo.
#485
ASM / Re: Ayuda con fadd qword ptr [xxxxxx]
2 Diciembre 2013, 02:19 AM
Bien, no se nada sobre los trainers, pero esas instrucciones son inutiles, pero si es mejor pues bien para ti, bueno solo dire que a ver quien se atreve a jugar una partida contigo al call of duty ese xD.

Un saludo.
#486
ASM / Re: Ayuda con fadd qword ptr [xxxxxx]
1 Diciembre 2013, 23:47 PM
Bien, copias el valor del registro st(0) a la pila, y luego dejas st(0) a su valor anterior, pero no entiendo el mov, porque mueves el valor del registro st(0) y luego reescribes el valor de la pila con el mov?

No es mejor hacer el mov directamente.

Y sobre fnstsw, luego comparas el valor para saber como esta el estado?

Un saludo.
#487
ASM / Re: Ayuda con fadd qword ptr [xxxxxx]
1 Diciembre 2013, 23:18 PM
El estandar es el IEEE 754, pero ya no tengo la documentacion. Por cierto, aplicaste lo que te dije al trainer y funciona?

Un saludo.

Edito:

Los manuales de intel estan mejor que la wikipedia xD.
#488
ASM / Re: Ayuda con fadd qword ptr [xxxxxx]
1 Diciembre 2013, 23:02 PM
Vale, ahora entiendo porque utilizas la pila, pensaba que era para hacer algun tipo de calculo matematico, por eso te dije los de los registros.

Porque es mejor hacer esto:

Código (asm) [Seleccionar]
fld1

Que no esto:

Código (asm) [Seleccionar]
movl 0x3f800000, 34(%esi)
fld 34(%esi)


Pero para lo que pretendes creo que bastaria moviendo o sumando con fadd 0x42c80000 100.0, a la variable, si tienes alguna duda ya sabes.

Un saludo.
#489
ASM / Re: Ayuda con fadd qword ptr [xxxxxx]
1 Diciembre 2013, 22:35 PM
Cita de: ||MadAntrax|| en  1 Diciembre 2013, 22:04 PM
Gracias por responder, me ha servido tu explicación de fldz para poner el registro a zero.

Ahora lo que he conseguido es nopear la instrucción fadd y he hecho lo siguiente:

mov [esi+34],3F800000

Con eso, establezco el valor de la variable a 1 (que también me interesa hacerlo).

De nada, pero que quieres hacer? No es mejor utilizar fld1? para que utilizas la pila.

Utiliza los registros st, no la pila, estara mucho mejor, si me dices que estas haciendo, te dejo un ejemplo.

Cita de: ||MadAntrax|| en  1 Diciembre 2013, 22:04 PM
Ahora solo quiero aprender como funcionan los números decimales en ASM. No entiendo porque 1 = 3F800000 y el 2 = 40000000

Hay alguna tabla que me permita calcular el valor hexadecimal de un número decimal (float)?

En alguna parte lei la explicacion de todo esto, pero ya no tengo el documento....

Pero de momento puedes ayudarte con un conversor de numeros decimales a hex.

Un saludo.

P.D: Haz lo que pretendas a tu manera, y yo intentare mejorarlo, si quieres.

#490
ASM / Re: Ayuda con fadd qword ptr [xxxxxx]
1 Diciembre 2013, 21:12 PM
Para cargar valores en el registro tienes que usar la instruccion fld, si te fijas tienes instrucciones como fld1, fldz.

No se si te refieres a eso.

Un saludo.

Edito:

Si tienes 0.25 en el registro, 0x3e800000, i quieres que tenga el valor de 0.75, puedes cargarlo como te dijo con fld o sumarle con fadd.

Código (asm) [Seleccionar]
pushq $0x3f000000 ; 0.50
fadd (%rsp)
fst (%rsp)


Ahora tendrias 0x3f400000, 0.75 cargado en la pila.

Tambien con fld.

Código (asm) [Seleccionar]
fldz   ; registro a zero
pushq $0x3f400000
fld (%rsp)


Ya tendrias 0.75 cargado.