summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Schleifer <js@nil.im>2020-06-30 23:31:03 +0000
committerJonathan Schleifer <js@nil.im>2020-06-30 23:31:03 +0000
commit9a7372f66a953eb54725ce8ba224cfa423bc30a0 (patch)
tree6aa81287eb42c70977aa34ad8136661ef8814716
parent042a924b82e0d0de3016c06cce8507c99de75123 (diff)
Convert all x86_64/Mach-O ASM to Intel syntax
FossilOrigin-Name: 5c288708e0c555f863a0254436b4a9c37384cc1c6ac3f969c3ca9a149da95039
-rw-r--r--src/forwarding/forwarding-x86_64-macho.S238
-rw-r--r--src/runtime/lookup-asm/lookup-asm-x86_64-macho.S38
2 files changed, 140 insertions, 136 deletions
diff --git a/src/forwarding/forwarding-x86_64-macho.S b/src/forwarding/forwarding-x86_64-macho.S
index bdc1a797..496bfdde 100644
--- a/src/forwarding/forwarding-x86_64-macho.S
+++ b/src/forwarding/forwarding-x86_64-macho.S
@@ -19,180 +19,182 @@
#include "platform.h"
+.intel_syntax noprefix
+
.globl _of_forward
.globl _of_forward_stret
.section __TEXT, __text, regular, pure_instructions
_of_forward:
- pushq %rbp
- movq %rsp, %rbp
+ push rbp
+ mov rbp, rsp
/* Save all arguments */
- subq $0xC0, %rsp /* 16-byte alignment */
- movq %rax, -0x8(%rbp)
- movq %rdi, -0x10(%rbp)
- movq %rsi, -0x18(%rbp)
- movq %rdx, -0x20(%rbp)
- movq %rcx, -0x28(%rbp)
- movq %r8, -0x30(%rbp)
- movq %r9, -0x38(%rbp)
- movaps %xmm0, -0x50(%rbp)
- movaps %xmm1, -0x60(%rbp)
- movaps %xmm2, -0x70(%rbp)
- movaps %xmm3, -0x80(%rbp)
- movaps %xmm4, -0x90(%rbp)
- movaps %xmm5, -0xA0(%rbp)
- movaps %xmm6, -0xB0(%rbp)
- movaps %xmm7, -0xC0(%rbp)
+ sub rsp, 0xC0 /* 16-byte alignment */
+ mov [rbp-0x08], rax
+ mov [rbp-0x10], rdi
+ mov [rbp-0x18], rsi
+ mov [rbp-0x20], rdx
+ mov [rbp-0x28], rcx
+ mov [rbp-0x30], r8
+ mov [rbp-0x38], r9
+ movaps [rbp-0x50], xmm0
+ movaps [rbp-0x60], xmm1
+ movaps [rbp-0x70], xmm2
+ movaps [rbp-0x80], xmm3
+ movaps [rbp-0x90], xmm4
+ movaps [rbp-0xA0], xmm5
+ movaps [rbp-0xB0], xmm6
+ movaps [rbp-0xC0], xmm7
call _object_getClass
- movq %rax, %rdi
- leaq sel_forwardingTargetForSelector_(%rip), %rsi
+ mov rdi, rax
+ lea rsi, [rip+sel_forwardingTargetForSelector_]
call _class_respondsToSelector
- testq %rax, %rax
+ test rax, rax
jz 0f
- movq -0x10(%rbp), %rdi
- leaq sel_forwardingTargetForSelector_(%rip), %rsi
+ mov rdi, [rbp-0x10]
+ lea rsi, [rip+sel_forwardingTargetForSelector_]
call _objc_msg_lookup
- movq -0x10(%rbp), %rdi
- leaq sel_forwardingTargetForSelector_(%rip), %rsi
- movq -0x18(%rbp), %rdx
- call *%rax
+ mov rdi, [rbp-0x10]
+ lea rsi, [rip+sel_forwardingTargetForSelector_]
+ mov rdx, [rbp-0x18]
+ call rax
- testq %rax, %rax
+ test rax, rax
jz 0f
- cmpq -0x10(%rbp), %rax
+ cmp rax, [rbp-0x10]
je 0f
- movq %rax, -0x10(%rbp)
+ mov [rbp-0x10], rax
- movq %rax, %rdi
- movq -0x18(%rbp), %rsi
+ mov rdi, rax
+ mov rsi, [rbp-0x18]
call _objc_msg_lookup
- movq %rax, %r11
+ mov r11, rax
/* Restore all arguments */
- movaps -0xC0(%rbp), %xmm7
- movaps -0xB0(%rbp), %xmm6
- movaps -0xA0(%rbp), %xmm5
- movaps -0x90(%rbp), %xmm4
- movaps -0x80(%rbp), %xmm3
- movaps -0x70(%rbp), %xmm2
- movaps -0x60(%rbp), %xmm1
- movaps -0x50(%rbp), %xmm0
- movq -0x38(%rbp), %r9
- movq -0x30(%rbp), %r8
- movq -0x28(%rbp), %rcx
- movq -0x20(%rbp), %rdx
- movq -0x18(%rbp), %rsi
- movq -0x10(%rbp), %rdi
- movq -0x8(%rbp), %rax
-
- movq %rbp, %rsp
- popq %rbp
-
- jmpq *%r11
+ movaps xmm7, [rbp-0xC0]
+ movaps xmm6, [rbp-0xB0]
+ movaps xmm5, [rbp-0xA0]
+ movaps xmm4, [rbp-0x90]
+ movaps xmm3, [rbp-0x80]
+ movaps xmm2, [rbp-0x70]
+ movaps xmm1, [rbp-0x60]
+ movaps xmm0, [rbp-0x50]
+ mov r9, [rbp-0x38]
+ mov r8, [rbp-0x30]
+ mov rcx, [rbp-0x28]
+ mov rdx, [rbp-0x20]
+ mov rsi, [rbp-0x18]
+ mov rdi, [rbp-0x10]
+ mov rax, [rbp-0x08]
+
+ mov rsp, rbp
+ pop rbp
+
+ jmp r11
0:
- movq -0x10(%rbp), %rdi
- movq -0x18(%rbp), %rsi
+ mov rdi, [rbp-0x10]
+ mov rsi, [rbp-0x18]
- movq %rbp, %rsp
- popq %rbp
+ mov rsp, rbp
+ pop rbp
jmp _of_method_not_found
_of_forward_stret:
- pushq %rbp
- movq %rsp, %rbp
+ push rbp
+ mov rbp, rsp
/* Save all arguments */
- subq $0xC0, %rsp /* 16-byte alignment */
- movq %rax, -0x8(%rbp)
- movq %rdi, -0x10(%rbp)
- movq %rsi, -0x18(%rbp)
- movq %rdx, -0x20(%rbp)
- movq %rcx, -0x28(%rbp)
- movq %r8, -0x30(%rbp)
- movq %r9, -0x38(%rbp)
- movaps %xmm0, -0x50(%rbp)
- movaps %xmm1, -0x60(%rbp)
- movaps %xmm2, -0x70(%rbp)
- movaps %xmm3, -0x80(%rbp)
- movaps %xmm4, -0x90(%rbp)
- movaps %xmm5, -0xA0(%rbp)
- movaps %xmm6, -0xB0(%rbp)
- movaps %xmm7, -0xC0(%rbp)
-
- movq %rsi, %rdi
+ sub rsp, 0xC0 /* 16-byte alignment */
+ mov [rbp-0x08], rax
+ mov [rbp-0x10], rdi
+ mov [rbp-0x18], rsi
+ mov [rbp-0x20], rdx
+ mov [rbp-0x28], rcx
+ mov [rbp-0x30], r8
+ mov [rbp-0x38], r9
+ movaps [rbp-0x50], xmm0
+ movaps [rbp-0x60], xmm1
+ movaps [rbp-0x70], xmm2
+ movaps [rbp-0x80], xmm3
+ movaps [rbp-0x90], xmm4
+ movaps [rbp-0xA0], xmm5
+ movaps [rbp-0xB0], xmm6
+ movaps [rbp-0xC0], xmm7
+
+ mov rdi, rsi
call _object_getClass
- movq %rax, %rdi
- leaq sel_forwardingTargetForSelector_(%rip), %rsi
+ mov rdi, rax
+ lea rsi, [rip+sel_forwardingTargetForSelector_]
call _class_respondsToSelector
- testq %rax, %rax
+ test rax, rax
jz 0f
- movq -0x18(%rbp), %rdi
- leaq sel_forwardingTargetForSelector_(%rip), %rsi
+ mov rdi, [rbp-0x18]
+ lea rsi, [rip+sel_forwardingTargetForSelector_]
call _objc_msg_lookup
- movq -0x18(%rbp), %rdi
- leaq sel_forwardingTargetForSelector_(%rip), %rsi
- movq -0x20(%rbp), %rdx
- call *%rax
+ mov rdi, [rbp-0x18]
+ lea rsi, [rip+sel_forwardingTargetForSelector_]
+ mov rdx, [rbp-0x20]
+ call rax
- testq %rax, %rax
+ test rax, rax
jz 0f
- cmpq -0x18(%rbp), %rax
+ cmp rax, [rbp-0x18]
je 0f
- movq %rax, -0x18(%rbp)
+ mov [rbp-0x18], rax
- movq %rax, %rdi
- movq -0x20(%rbp), %rsi
+ mov rdi, rax
+ mov rsi, [rbp-0x20]
call _objc_msg_lookup_stret
- movq %rax, %r11
+ mov r11, rax
/* Restore all arguments */
- movaps -0xC0(%rbp), %xmm7
- movaps -0xB0(%rbp), %xmm6
- movaps -0xA0(%rbp), %xmm5
- movaps -0x90(%rbp), %xmm4
- movaps -0x80(%rbp), %xmm3
- movaps -0x70(%rbp), %xmm2
- movaps -0x60(%rbp), %xmm1
- movaps -0x50(%rbp), %xmm0
- movq -0x38(%rbp), %r9
- movq -0x30(%rbp), %r8
- movq -0x28(%rbp), %rcx
- movq -0x20(%rbp), %rdx
- movq -0x18(%rbp), %rsi
- movq -0x10(%rbp), %rdi
- movq -0x8(%rbp), %rax
-
- movq %rbp, %rsp
- popq %rbp
-
- jmpq *%r11
+ movaps xmm7, [rbp-0xC0]
+ movaps xmm6, [rbp-0xB0]
+ movaps xmm5, [rbp-0xA0]
+ movaps xmm4, [rbp-0x90]
+ movaps xmm3, [rbp-0x80]
+ movaps xmm2, [rbp-0x70]
+ movaps xmm1, [rbp-0x60]
+ movaps xmm0, [rbp-0x50]
+ mov r9, [rbp-0x38]
+ mov r8, [rbp-0x30]
+ mov rcx, [rbp-0x28]
+ mov rdx, [rbp-0x20]
+ mov rsi, [rbp-0x18]
+ mov rdi, [rbp-0x10]
+ mov rax, [rbp-0x08]
+
+ mov rsp, rbp
+ pop rbp
+
+ jmp r11
0:
- movq -0x10(%rbp), %rdi
- movq -0x18(%rbp), %rsi
- movq -0x20(%rbp), %rdx
+ mov rdi, [rbp-0x10]
+ mov rsi, [rbp-0x18]
+ mov rdx, [rbp-0x20]
- movq %rbp, %rsp
- popq %rbp
+ mov rsp, rbp
+ pop rbp
jmp _of_method_not_found_stret
init:
- leaq module(%rip), %rdi
+ lea rdi, [rip+module]
jmp ___objc_exec_class
.section __DATA, __mod_init_func, mod_init_funcs
diff --git a/src/runtime/lookup-asm/lookup-asm-x86_64-macho.S b/src/runtime/lookup-asm/lookup-asm-x86_64-macho.S
index 8ae5f210..e13a6ae3 100644
--- a/src/runtime/lookup-asm/lookup-asm-x86_64-macho.S
+++ b/src/runtime/lookup-asm/lookup-asm-x86_64-macho.S
@@ -17,6 +17,8 @@
#include "config.h"
+.intel_syntax noprefix
+
.globl _objc_msg_lookup
.globl _objc_msg_lookup_stret
.globl _objc_msg_lookup_super
@@ -25,25 +27,25 @@
.section __TEXT, __text, regular, pure_instructions
.macro generate_lookup
$0:
- testq %rdi, %rdi
+ test rdi, rdi
jz ret_nil
- movq (%rdi), %r8
- movq 64(%r8), %r8
+ mov r8, [rdi]
+ mov r8, [r8+64]
Lmain_$0:
- 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
+ test rax, rax
jz $1
ret
@@ -51,13 +53,13 @@ Lmain_$0:
.macro generate_lookup_super
$0:
- 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_$1
.endmacro
@@ -67,9 +69,9 @@ 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:
- movq %rdi, %rax
+ mov rax, rdi
ret