Differences From Artifact [13eae8467e]:
- File
src/runtime/lookup-asm/lookup-asm-amd64-win64.S
— part of check-in
[b7a4e61b88]
at
2023-04-22 20:22:08
on branch trunk
— Rename x86_64 to AMD64
It's just a less awkward name and also what the BSDs use. (user: js, size: 1948) [annotate] [blame] [check-ins using] [more...]
- File src/runtime/lookup-asm/lookup-asm-x86_64-win64.S — part of check-in [8939cbdb52] at 2023-01-06 09:04:02 on branch trunk — Update copyright (user: js, size: 1948) [annotate] [blame] [check-ins using]
To Artifact [56a0df9bbf]:
- File
src/runtime/lookup-asm/lookup-asm-amd64-win64.S
— part of check-in
[70a7617023]
at
2023-10-25 00:23:15
on branch trunk
— Move AMD64/Win64 assembly back to Intel syntax
This used to be in Intel syntax, but was moved back to AT&T syntax for
consistency with the Mach-O version, where the assembler doesn't support
the Intel syntax properly. However, it makes more sense to use Intel
syntax where possible. (user: js, size: 1960) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #include "config.h" .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 notFound \name: | > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 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 | * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #include "config.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 notFound \name: test rcx, rcx jz short returnNilMethod test cl, 1 jnz short .LtaggedPointer_\name mov r8, [rcx] mov r8, [r8 + 56] .Lmain_\name: mov r10, rcx mov r11, rdx mov rax, [rdx] movzx ecx, ah movzx edx, al #ifdef OF_SELUID24 shr eax, 16 mov r8, [r8 + 8 * rax] #endif mov r8, [r8 + 8 * rcx] mov rax, [r8 + 8 * rdx] test rax, rax jz short 0f ret 0: mov rcx, r10 mov rdx, r11 jmp short \notFound .LtaggedPointer_\name: xor rcx, [rip + objc_taggedPointerSecret] and cl, 0xE movzx r8d, cl lea rax, [rip + objc_taggedPointerClasses] mov r8, [rax + 4 * r8] mov r8, [r8 + 56] jmp short .Lmain_\name .def \name .scl 2 .type 32 .endef .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov r8, rcx mov rcx, [rcx] test rcx, rcx jz short returnNilMethod mov r8, [r8 + 8] mov r8, [r8 + 56] jmp short .Lmain_\lookup .def \name .scl 2 .type 32 .endef .endm GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret returnNilMethod: lea rax, [rip + nilMethod] ret nilMethod: xor rax, rax ret |