for (int i = 0; i < vec1.length; i++) {
for (int j = 0; j < vec2.length; j++) {
if(vec1[i]==vec2[j]){
add=true;
cont++;
for (int k = 0; k < cont; k++) {
if(vec2[j]==vec3[k]){
add=false;
}
}
if(add==true){
vec3[cont+1]=vec2[j];
}
}
}
}
I'd like to translate this pseudocode java into correct Assembly 32-bit system. Can anyone help me?
i´m doing like this, ignore the comments are in foreign language but i don´t know exactly how to do the third loop in the addvec3, and the condition after
global ptrvec1, ptrvec2, ptrvec3
.section .text
.global comuns #int comuns(void)
comuns:
movl $0, %eax # iniciar eax a 0
movl $0, %ebx # primeiro ciclo
movl $0, %ecx # segundo ciclo
movl $0, %edx # ciclo do vetor3
movl $ptrvec1, %ebp #endereco vetor1
movl $ptrvec2, %edi #endereco vetor2
movl $ptrvec3, %esi # resultado
ciclo:
cmpl $14, %ebx # compara para fim ciclo
je fim
movl (%ebp), %esp # move inteiro ptrvec1 para esp
ciclo2:
cmpl $14,%ecx # compara para fim ciclo2
je incrementarCiclo # se igual incrementa ciclo
movl (%edi), %eax
cmpl %eax, %esp #compara inteiro de esp com inteiro de edi
je adicionarAvetor3 # se igual adiciona a vetor3 em esi
jmp incrementarCiclo2 # se nao incrementao ciclo2
incrementarCiclo:
movl $0, %ecx # segundo ciclo a 0
incl %ebx # incrementa ciclo
addl $4, %ebp # passa para proximo inteiro vetor 1
jmp ciclo # passar para o ciclo
incrementarCiclo2:
addl $4, %edi # passa para o proximo inteiro de vetor 2
incl %ecx # incrementa ciclo 2
jmp ciclo2
addvec3:
fim:
movl %edx,%eax
ret
the objective is to have 2 vec and compare them,if there repeated numbers check if the numbers aren't in the vec3 and add them.
If you've got not enough registers to store the variables, then use the memory:
.section .data
i: .int 0
j: .int 0
k: .int 0
add: .int 0
cont: .int 0
.section .text
comuns:
movl $0, (i)
ciclo1:
cmpl $14, (i) # compara para fim ciclo
jae endciclo1
movl $0, (j)
ciclo2:
cmpl $14, (j) # compara para fim ciclo2
jae endciclo2 # se igual incrementa ciclo
...
movl $1, (add)
incl (cont)
...
movl $0, (k)
ciclo3:
mov (cont), %eax
cmp %eax, (k)
jae endciclo3
...
incl (k)
jmp ciclo3
endciclo3:
...
incl (j)
jmp ciclo2
endciclo2:
...
incl (i)
jmp ciclo1
endciclo1:
fim:
movl (cont),%eax
ret