Artifact 045420d8bfdd32eec6458edfe0c26c9b244e730148e696d240fe2570670c63bf:
- File
src/runtime/lookup-asm/lookup-asm-x86-win32.S
— part of check-in
[357bcde965]
at
2023-10-25 00:50:36
on branch trunk
— Move x86/Win32 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: 1982) [annotate] [blame] [check-ins using]
/* * Copyright (c) 2008-2023 Jonathan Schleifer <js@nil.im> * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * 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: mov edx, [esp + 4] test edx, edx jz short returnNilMethod test dl, 1 jnz short .LtaggedPointer_\name mov edx, [edx] mov edx, [edx + 32] .Lmain_\name: mov eax, [esp + 8] #ifdef OF_SELUID24 movzx ecx, byte ptr [eax + 2] mov edx, [edx + 4 * ecx] #endif movzx ecx, byte ptr [eax + 1] mov edx, [edx + 4 * ecx] movzx ecx, byte ptr [eax] mov eax, [edx + 4 * ecx] test eax, eax jz short \notFound ret .LtaggedPointer_\name: xor edx, _objc_taggedPointerSecret and dl, 0xE movzx edx, dl mov edx, [_objc_taggedPointerClasses + 2 * edx] mov edx, [edx + 32] jmp short .Lmain_\name .def \name .scl 2 .type 32 .endef .endm .macro GENERATE_LOOKUP_SUPER name lookup \name: mov edx, [esp + 4] mov eax, [edx] test eax, eax jz short returnNilMethod mov [esp + 4], eax mov edx, [edx + 4] mov edx, [edx + 32] 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: mov eax, offset nilMethod ret nilMethod: xor eax, eax ret