previous | start | next

IA32 Assembly for: accessing array elements (3)

swapElements:
        pushl   %ebp
        movl    %esp, %ebp
        movl    8(%ebp), %edx          ; r3 = address of array a             
        movl    12(%ebp), %ecx         ; r2 = i                      
        movl    16(%ebp), %eax         ; reg1 = j                            
        pushl   %ebx                                                                                 
        leal    (%edx,%ecx,4), %ecx    ; R[r2] = address of a[i]             
        leal    (%edx,%eax,4), %eax    ; R[r1] = address of a[j]             
        movl    (%ecx), %ebx           ; R[r4] = M[r2]  (i.e., R[r4] = a[i])  
        movl    (%eax), %edx           ; R[r3] = M[r1]  (i.e., R[r3] = a[j]) 
        movl    %edx, (%ecx)           ; M[r2] = R[r3]  (i.e., a[i] = R[r3]) 
        movl    %ebx, (%eax)           ; M[r1] = R[r4]  (i.e., a[j] = R[r4]) 
        popl    %ebx                                                                                 
        popl    %ebp                                                                                 
        ret                            ; return                              


previous | start | next