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