2015-11-01 108 views
0
​​

我想將這個僞代碼Java轉換爲正確的Assembly 32位系統。誰能幫我?嵌套循環彙編代碼

i'm做這樣,忽略註釋在外語 但我不知道究竟是如何做到在addvec3第三環,並且條件後

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 

的目標是有2 vec並比較它們,如果有重複的數字檢查數字是否不在vec3並添加它們。

+0

「幫助」不等於「爲我寫出來」,所以也許你應該表現出你得到了什麼,什麼**具體**問題你有。 – Jester

+0

我編輯了這個問題 –

回答

0

如果你有沒有足夠的寄存器來存儲變量,然後使用內存:

.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