Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: Qorin en 15 Diciembre 2010, 10:58 am



Título: Traducción de código en C a IA32
Publicado por: Qorin en 15 Diciembre 2010, 10:58 am
Hola chicos me gustaría que me miraséis este fragmento de código que me ha tocado traducir en un examen de la carrera. Creo que tengo algún error pero no estoy seguro.

El código en C es:

Código:
#define MAX 15
int main ()
{
short i, cont;
int vector[MAX];


cont = 1;
for (i = 0; i < MAX || cont <10; i++){


if ( i - cont == 0) { vector [i] = cont;
                            cont++;
                          }
else { vector[i] = i; }

}


Y mi traducción a ensamblador ha sido:

Código:
.data
MAX = 15
.bss
.comm vector,4*MAX,4
.comm i,2,2
.comm cont,2,2

main:

movw $1, cont
movw cont, %ax

movw $0, i
movw i, %si

for:

cmpw %si, MAX
jg ok
cmpw %ax, $10
jle endfor

ok:

if:

movw %si, %bx
subw %ax, %bx
cmpw %bx, $0
jne else
movw %ax, vector(,%si,4)
incw %ax
incw %si
jmp for

else:

movw %si, vector(,%si,4)
incw %si
jmp for

endfor





Me gustaría que me dijerais que tal lo veis Gracias


Título: Re: Traducción de código en C a IA32
Publicado por: Yurix en 21 Diciembre 2010, 18:48 pm

Bueno Qorin , por vago (hablando de mi) no leere el codigo ASM , todos los compiladores generan codigo ASM (al menos los que he tenido) busca en las opciones del compilador para que te de en un archivo .asm la traduccion del codigo C .
Que compilador usas ?
Usa esas opciones y despues si quieres compara.

Saludos