Nicht sicher, warum wir fügen die Register %rdx und %rax, wenn der Assembler-code wurde mit %eax und %edx

Hallo ich brauche etwas Hilfe, das Verständnis, was Los ist in dieser assembly-code:

        .file   "mystery.c"

        .text

        .globl mystery

              .type mystery, @function

 mystery:
   pushq    %rbp
    movq    %rsp, %rbp

   movl %edi, -20(%rbp)
   movl $1, -16(%rbp)
   movl $0, -12(%rbp)
   movl $0, -8(%rbp)
   cmpl $2, -20(%rbp)
   jg   .L2
   movl $1, %eax
   jmp  .L3

  .L2:
movl    $2, -4(%rbp)
jmp .L4

  .L5:
movl    -12(%rbp), %eax
movl    -16(%rbp), %edx
leal    (%rdx,%rax), %eax
movl    %eax, -8(%rbp)
movl    -16(%rbp), %eax
movl    %eax, -12(%rbp)
movl    -8(%rbp), %eax
movl    %eax, -16(%rbp)
addl    $1, -4(%rbp)

.L4:
movl    -4(%rbp), %eax
cmpl    -20(%rbp), %eax
jle .L5
movl    -8(%rbp), %eax

.L3:
leave
ret

Ich verstehe genau, was Los ist, BIS ich die bekommen .L5, Hier der Befehl leal(%rdx, %rax), eax ist was ist verwirrend mich. Bis jetzt habe ich bewegliche Werte zu eax und edx und jetzt im die addition der Werte in rdx und rax. Wo ist rdx und rax aus und welche Werte werden Sie halten? Sind Sie nur eine andere Art des Schreibens eax und edx? Vielen Dank für jede Hilfe.

Montage Frage sollte markiert sein, mit der architeture. [x86]? Etwas anderes?

InformationsquelleAutor Rizwan Chaudry | 2012-10-29

Schreibe einen Kommentar