Traducción de código en C a IA32

Iniciado por Qorin, 15 Diciembre 2010, 10:58 AM

0 Miembros y 1 Visitante están viendo este tema.

Qorin

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:


#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:


.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

Yurix


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


http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.