嵌套循环汇编代码

nested loop Assembly code

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];
               }
           }

        }

    }

我想将此伪代码 java 翻译成正确的汇编 32 位系统。谁能帮帮我?

我是这样做的,忽略评论是外语 但我不知道如何在 addvec3 中执行第三个循环,以及

之后的条件
global ptrvec1, ptrvec2, ptrvec3
.section .text
.global   comuns #int comuns(void)
comuns:
movl [=11=], %eax # iniciar eax a 0
movl [=11=], %ebx # primeiro ciclo
movl [=11=], %ecx # segundo ciclo
movl [=11=], %edx # ciclo do vetor3
movl $ptrvec1, %ebp #endereco vetor1
movl $ptrvec2, %edi #endereco vetor2
movl $ptrvec3, %esi # resultado

ciclo:
cmpl , %ebx # compara para fim ciclo
je fim
movl (%ebp), %esp # move inteiro ptrvec1 para esp

ciclo2:
cmpl ,%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 [=11=], %ecx # segundo ciclo a 0
incl %ebx # incrementa ciclo
addl , %ebp # passa para proximo inteiro vetor 1
jmp ciclo # passar para o ciclo

incrementarCiclo2: 
addl , %edi # passa para o proximo inteiro de vetor 2
incl %ecx # incrementa ciclo 2
jmp ciclo2


addvec3:



fim:
movl %edx,%eax
ret

objective 就是有2个vec比较,如果有重复的数字检查是否不在vec3中,然后相加。

如果你没有足够的寄存器来存储变量,那么使用内存:

.section .data

    i: .int 0
    j: .int 0
    k: .int 0
    add: .int 0
    cont: .int 0

.section .text

comuns:
    movl [=10=], (i)
    ciclo1:
        cmpl , (i) # compara para fim ciclo
        jae endciclo1

        movl [=10=], (j)
        ciclo2:
            cmpl , (j) # compara para fim ciclo2
            jae endciclo2 # se igual incrementa ciclo

            ...
            movl , (add)
            incl (cont)
            ...

            movl [=10=], (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