Index: src/forwarding/forwarding-x86-win32.S ================================================================== --- src/forwarding/forwarding-x86-win32.S +++ src/forwarding/forwarding-x86-win32.S @@ -13,150 +13,152 @@ * file. */ #include "config.h" +.intel_syntax noprefix + .globl _OFForward .globl _OFForward_stret .section .text _OFForward: - pushl %ebp - movl %esp, %ebp - - pushl %ebx - subl $20, %esp - - movl 8(%ebp), %eax - movl %eax, (%esp) + push ebp + mov ebp, esp + + push ebx + sub esp, 20 + + mov eax, [ebp + 8] + mov [esp], eax call _object_getClass - movl %eax, (%esp) - movl $sel_forwardingTargetForSelector_, %eax - movl %eax, 4(%esp) + mov [esp], eax + mov eax, offset sel_forwardingTargetForSelector_ + mov [esp + 4], eax call _class_respondsToSelector - testl %eax, %eax - jz 0f - - movl 8(%ebp), %eax - movl %eax, (%esp) - movl $sel_forwardingTargetForSelector_, %eax - movl %eax, 4(%esp) - call _objc_msg_lookup - - movl 8(%ebp), %edx - movl %edx, (%esp) - movl $sel_forwardingTargetForSelector_, %edx - movl %edx, 4(%esp) - movl 12(%ebp), %edx - movl %edx, 8(%esp) - call *%eax - - testl %eax, %eax - jz 0f - cmpl 8(%ebp), %eax - je 0f - - movl %eax, 8(%ebp) - movl %eax, (%esp) - movl 12(%ebp), %eax - movl %eax, 4(%esp) - call _objc_msg_lookup - - addl $20, %esp - popl %ebx - popl %ebp - - jmp *%eax - -0: - addl $20, %esp - popl %ebx - popl %ebp + test eax, eax + jz short 0f + + mov eax, [ebp + 8] + mov [esp], eax + mov eax, offset sel_forwardingTargetForSelector_ + mov [esp + 4], eax + call _objc_msg_lookup + + mov edx, [ebp + 8] + mov [esp], edx + mov edx, offset sel_forwardingTargetForSelector_ + mov [esp + 4], edx + mov edx, [ebp + 12] + mov [esp + 8], edx + call eax + + test eax, eax + jz short 0f + cmp eax, [ebp + 8] + je short 0f + + mov [ebp + 8], eax + mov [esp], eax + mov eax, [ebp + 12] + mov [esp + 4], eax + call _objc_msg_lookup + + add esp, 20 + pop ebx + pop ebp + + jmp eax + +0: + add esp, 20 + pop ebx + pop ebp jmp _OFMethodNotFound .def _OFForward .scl 2 .type 32 .endef _OFForward_stret: - pushl %ebp - movl %esp, %ebp - - pushl %ebx - subl $20, %esp - - movl 12(%ebp), %eax - movl %eax, (%esp) + push ebp + mov ebp, esp + + push ebx + sub esp, 20 + + mov eax, [ebp + 12] + mov [esp], eax call _object_getClass - movl %eax, (%esp) - movl $sel_forwardingTargetForSelector_, %eax - movl %eax, 4(%esp) + mov [esp], eax + mov eax, offset sel_forwardingTargetForSelector_ + mov [esp + 4], eax call _class_respondsToSelector - testl %eax, %eax - jz 0f + test eax, eax + jz short 0f - movl 12(%ebp), %eax - movl %eax, (%esp) - movl $sel_forwardingTargetForSelector_, %eax - movl %eax, 4(%esp) + mov eax, [ebp + 12] + mov [esp], eax + mov eax, offset sel_forwardingTargetForSelector_ + mov [esp + 4], eax call _objc_msg_lookup - movl 12(%ebp), %edx - movl %edx, (%esp) - movl $sel_forwardingTargetForSelector_, %edx - movl %edx, 4(%esp) - movl 16(%ebp), %edx - movl %edx, 8(%esp) - call *%eax - - testl %eax, %eax - jz 0f - cmpl 12(%ebp), %eax - je 0f - - movl %eax, 12(%ebp) - movl %eax, (%esp) - movl 16(%ebp), %eax - movl %eax, 4(%esp) + mov edx, [ebp + 12] + mov [esp], edx + mov edx, offset sel_forwardingTargetForSelector_ + mov [esp + 4], edx + mov edx, [ebp + 16] + mov [esp + 8], edx + call eax + + test eax, eax + jz short 0f + cmp eax, [ebp + 12] + je short 0f + + mov [ebp + 12], eax + mov [esp], eax + mov eax, [ebp + 16] + mov [esp + 4], eax call _objc_msg_lookup_stret - addl $20, %esp - popl %ebx - popl %ebp + add esp, 20 + pop ebx + pop ebp - jmp *%eax + jmp eax 0: - addl $20, %esp - popl %ebx - popl %ebp + add esp, 20 + pop ebx + pop ebp jmp _OFMethodNotFound_stret .def _OFForward_stret .scl 2 .type 32 .endef init: - pushl %ebp - movl %esp, %ebp - - pushl %ebx - subl $4, %esp - - movl $module, %eax - movl %eax, (%esp) + push ebp + mov ebp, esp + + push ebx + sub esp, 4 + + mov eax, offset module + mov [esp], eax call ___objc_exec_class - addl $4, %esp - popl %ebx - popl %ebp + add esp, 4 + pop ebx + pop ebp ret .section .ctors, "aw" .long init Index: src/runtime/lookup-asm/lookup-asm-x86-win32.S ================================================================== --- src/runtime/lookup-asm/lookup-asm-x86-win32.S +++ src/runtime/lookup-asm/lookup-asm-x86-win32.S @@ -12,72 +12,74 @@ * 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: - movl 4(%esp), %edx - testl %edx, %edx - jz returnNilMethod - - testb $1, %dl - jnz .LtaggedPointer_\name - - movl (%edx), %edx - movl 32(%edx), %edx + 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: - movl 8(%esp), %eax + mov eax, [esp + 8] #ifdef OF_SELUID24 - movzbl 2(%eax), %ecx - movl (%edx,%ecx,4), %edx + movzx ecx, byte ptr [eax + 2] + mov edx, [edx + 4 * ecx] #endif - movzbl 1(%eax), %ecx - movl (%edx,%ecx,4), %edx - movzbl (%eax), %ecx - movl (%edx,%ecx,4), %eax + movzx ecx, byte ptr [eax + 1] + mov edx, [edx + 4 * ecx] + movzx ecx, byte ptr [eax] + mov eax, [edx + 4 * ecx] - testl %eax, %eax - jz \notFound + test eax, eax + jz short \notFound ret .LtaggedPointer_\name: - xorl _objc_taggedPointerSecret, %edx - andb $0xE, %dl - movzbl %dl, %edx - - movl _objc_taggedPointerClasses(,%edx,2), %edx - movl 32(%edx), %edx - - jmp .Lmain_\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: - movl 4(%esp), %edx - movl (%edx), %eax - test %eax, %eax - jz returnNilMethod - - movl %eax, 4(%esp) - movl 4(%edx), %edx - movl 32(%edx), %edx - jmp .Lmain_\lookup + 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 @@ -86,11 +88,11 @@ 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: - movl $nilMethod, %eax + mov eax, offset nilMethod ret nilMethod: - xorl %eax, %eax + xor eax, eax ret