Differences From Artifact [dd3cafda04]:
- File src/invocation/call-x86_64-elf.S — part of check-in [0509d7a844] at 2019-01-03 19:13:03 on branch trunk — Update copyright (user: js, size: 2501) [annotate] [blame] [check-ins using]
To Artifact [d3f8a4b569]:
- File
src/invocation/call-x86_64-elf.S
— part of check-in
[780d096371]
at
2019-02-18 01:37:36
on branch trunk
— invocation: Make all offsets constants
This makes the assembly much more readable.
No difference between disassembled .o file before and after. (user: js, size: 2945) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
26 27 28 29 30 31 32 | pushq %rbp movq %rsp, %rbp subq $16, %rsp andq $-16, %rsp movq %rdi, -8(%rbp) | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | pushq %rbp movq %rsp, %rbp subq $16, %rsp andq $-16, %rsp movq %rdi, -8(%rbp) movb OFFSET_RETURN_TYPE(%rdi), %r11b cmpb $RETURN_TYPE_STRET, %r11b je .lookup_stret cmpb $RETURN_TYPE_JMP_STRET, %r11b je .lookup_stret movq OFFSET_GPR_IN+8(%rdi), %rsi movq OFFSET_GPR_IN+0(%rdi), %rdi call objc_msg_lookup@PLT .after_lookup: movq %rax, -16(%rbp) movq -8(%rbp), %rdi leaq OFFSET_STACK(%rdi), %rdx movq OFFSET_STACK_SIZE(%rdi), %rcx testq $1, %rcx jnz .fix_align .fill_stack: testq %rcx, %rcx jz .stack_filled decq %rcx movq (%rdx,%rcx,8), %r11 pushq %r11 jmp .fill_stack .stack_filled: movb OFFSET_NUM_SSE_USED(%rdi), %al movdqa OFFSET_SSE_INOUT+112(%rdi), %xmm7 movdqa OFFSET_SSE_INOUT+96(%rdi), %xmm6 movdqa OFFSET_SSE_INOUT+80(%rdi), %xmm5 movdqa OFFSET_SSE_INOUT+64(%rdi), %xmm4 movdqa OFFSET_SSE_INOUT+48(%rdi), %xmm3 movdqa OFFSET_SSE_INOUT+32(%rdi), %xmm2 movdqa OFFSET_SSE_INOUT+16(%rdi), %xmm1 movdqa OFFSET_SSE_INOUT(%rdi), %xmm0 movq OFFSET_GPR_IN+40(%rdi), %r9 movq OFFSET_GPR_IN+32(%rdi), %r8 movq OFFSET_GPR_IN+24(%rdi), %rcx movq OFFSET_GPR_IN+16(%rdi), %rdx movq OFFSET_GPR_IN+8(%rdi), %rsi movb OFFSET_RETURN_TYPE(%rdi), %r11b movq OFFSET_GPR_IN(%rdi), %rdi cmpb $RETURN_TYPE_JMP, %r11b je .jmp_into_method cmpb $RETURN_TYPE_JMP_STRET, %r11b je .jmp_into_method movq -16(%rbp), %r11 call *%r11 .after_send: movq -8(%rbp), %rdi movq %rax, OFFSET_GPR_OUT(%rdi) movq %rdx, OFFSET_GPR_OUT+8(%rdi) movdqa %xmm0, OFFSET_SSE_INOUT(%rdi) movdqa %xmm1, OFFSET_SSE_INOUT+16(%rdi) movb OFFSET_RETURN_TYPE(%rdi), %r11b cmpb $RETURN_TYPE_X87, %r11b je .pop_long_double cmpb $RETURN_TYPE_COMPLEX_X87, %r11b je .pop_complex_long_double .return: movq %rbp, %rsp popq %rbp ret .fix_align: xorq %r11, %r11 pushq %r11 jmp .fill_stack .lookup_stret: movq OFFSET_GPR_IN+16(%rdi), %rsi movq OFFSET_GPR_IN+8(%rdi), %rdi call objc_msg_lookup_stret@PLT jmp .after_lookup .jmp_into_method: movq -16(%rbp), %r11 jmp *%r11 .pop_long_double: fstpt OFFSET_X87_OUT(%rdi) jmp .return .pop_complex_long_double: fstpt OFFSET_X87_OUT(%rdi) fstpt OFFSET_X87_OUT+16(%rdi) jmp .return #ifdef OF_LINUX .section .note.GNU-stack, "", %progbits #endif |