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