@@ -17,53 +17,55 @@ #include "config.h" #include "platform.h" +.intel_syntax noprefix + .globl objc_msg_lookup .globl objc_msg_lookup_stret .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro generate_lookup name not_found \name: - testq %rdi, %rdi - jz ret_nil + test rdi, rdi + jz short ret_nil - movq (%rdi), %r8 - movq 64(%r8), %r8 + mov r8, [rdi] + mov r8, [r8+64] .Lmain_\name: - movq (%rsi), %rax - movzbl %ah, %ecx - movzbl %al, %edx + mov rax, [rsi] + movzx ecx, ah + movzx edx, al #ifdef OF_SELUID24 - shrl $16, %eax + shr eax, 16 - movq (%r8,%rax,8), %r8 + mov r8, [r8+rax*8] #endif - movq (%r8,%rcx,8), %r8 - movq (%r8,%rdx,8), %rax + mov r8, [r8+rcx*8] + mov rax, [r8+rdx*8] - testq %rax, %rax - jz \not_found@PLT + test rax, rax + jz short \not_found@PLT ret .type \name, %function .size \name, .-\name .endm .macro generate_lookup_super name lookup \name: - movq %rdi, %r8 - movq (%rdi), %rdi - testq %rdi, %rdi + mov r8, rdi + mov rdi, [rdi] + test rdi, rdi jz ret_nil - movq 8(%r8), %r8 - movq 64(%r8), %r8 + mov r8, [r8+8] + mov r8, [r8+64] jmp .Lmain_\lookup .type \name, %function .size \name, .-\name .endm @@ -71,15 +73,15 @@ generate_lookup objc_msg_lookup_stret objc_method_not_found_stret generate_lookup_super objc_msg_lookup_super objc_msg_lookup generate_lookup_super objc_msg_lookup_super_stret objc_msg_lookup_stret ret_nil: - leaq nil_method(%rip), %rax + lea rax, [rip+nil_method] ret nil_method: - xorq %rax, %rax + xor rax, rax ret #ifdef OF_LINUX .section .note.GNU-stack, "", %progbits #endif