生成汇编
clang -S -fobjc-arc test.m -o test.s
源代码
#import "QYInteractMath.h"
@implementation QYInteractMath
// 字符串加
- (int)addV1:(int)v1 v2:(int)v2 {
int c =v1+v2;
return c;
}
+ (int)divV1:(int)v3 v2:(int)v4{
int w = v3-v4;
return w;
}
- (void)math
{
int a1 =5;
int a2=6;
int b1 =15;
int b2=3;
int a10 = [self addV1:a1 v2:a2];
int a11 = [QYInteractMath divV1:b1 v2:b2];
}
@end
汇编代码
.section __TEXT,__text,regular,pure_instructions
.build_version macos, 10, 15 sdk_version 10, 15, 4
.p2align 4, 0x90 ## -- Begin function -[QYInteractMath addV1:v2:]
"-[QYInteractMath addV1:v2:]": ## @"\01-[QYInteractMath addV1:v2:]"
.cfi_startproc
## %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
movq %rdi, -8(%rbp)
movq %rsi, -16(%rbp)
movl %edx, -20(%rbp)
movl %ecx, -24(%rbp)
movl -20(%rbp), %eax
addl -24(%rbp), %eax
movl %eax, -28(%rbp)
movl -28(%rbp), %eax
popq %rbp
retq
.cfi_endproc
## -- End function
.p2align 4, 0x90 ## -- Begin function +[QYInteractMath divV1:v2:]
"+[QYInteractMath divV1:v2:]": ## @"\01+[QYInteractMath divV1:v2:]"
.cfi_startproc
## %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
movq %rdi, -8(%rbp)
movq %rsi, -16(%rbp)
movl %edx, -20(%rbp)
movl %ecx, -24(%rbp)
movl -20(%rbp), %eax
subl -24(%rbp), %eax
movl %eax, -28(%rbp)
movl -28(%rbp), %eax
popq %rbp
retq
.cfi_endproc
## -- End function
.p2align 4, 0x90 ## -- Begin function -[QYInteractMath math]
"-[QYInteractMath math]": ## @"\01-[QYInteractMath math]"
.cfi_startproc
## %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
subq $48, %rsp
movq %rdi, -8(%rbp)
movq %rsi, -16(%rbp)
movl $5, -20(%rbp)
movl $6, -24(%rbp)
movl $15, -28(%rbp)
movl $3, -32(%rbp)
movq -8(%rbp), %rax
movl -20(%rbp), %edx
movl -24(%rbp), %ecx
movq _OBJC_SELECTOR_REFERENCES_(%rip), %rsi
movq %rax, %rdi
callq *_objc_msgSend@GOTPCREL(%rip)
movl %eax, -36(%rbp)
movq _OBJC_CLASSLIST_REFERENCES_$_(%rip), %rsi
movl -28(%rbp), %edx
movl -32(%rbp), %ecx
movq _OBJC_SELECTOR_REFERENCES_.2(%rip), %rdi
movq %rdi, -48(%rbp) ## 8-byte Spill
movq %rsi, %rdi
movq -48(%rbp), %rsi ## 8-byte Reload
callq *_objc_msgSend@GOTPCREL(%rip)
movl %eax, -40(%rbp)
addq $48, %rsp
popq %rbp
retq
.cfi_endproc
## -- End function
.section __TEXT,__objc_methname,cstring_literals
L_OBJC_METH_VAR_NAME_: ## @OBJC_METH_VAR_NAME_
.asciz "addV1:v2:"
.section __DATA,__objc_selrefs,literal_pointers,no_dead_strip
.p2align 3 ## @OBJC_SELECTOR_REFERENCES_
_OBJC_SELECTOR_REFERENCES_:
.quad L_OBJC_METH_VAR_NAME_
.section __DATA,__objc_data
.globl _OBJC_CLASS_$_QYInteractMath ## @"OBJC_CLASS_$_QYInteractMath"
.p2align 3
_OBJC_CLASS_$_QYInteractMath:
.quad _OBJC_METACLASS_$_QYInteractMath
.quad _OBJC_CLASS_$_NSObject
.quad __objc_empty_cache
.quad 0
.quad __OBJC_CLASS_RO_$_QYInteractMath
.section __DATA,__objc_classrefs,regular,no_dead_strip
.p2align 3 ## @"OBJC_CLASSLIST_REFERENCES_$_"
_OBJC_CLASSLIST_REFERENCES_$_:
.quad _OBJC_CLASS_$_QYInteractMath
.section __TEXT,__objc_methname,cstring_literals
L_OBJC_METH_VAR_NAME_.1: ## @OBJC_METH_VAR_NAME_.1
.asciz "divV1:v2:"
.section __DATA,__objc_selrefs,literal_pointers,no_dead_strip
.p2align 3 ## @OBJC_SELECTOR_REFERENCES_.2
_OBJC_SELECTOR_REFERENCES_.2:
.quad L_OBJC_METH_VAR_NAME_.1
.section __TEXT,__objc_classname,cstring_literals
L_OBJC_CLASS_NAME_: ## @OBJC_CLASS_NAME_
.asciz "QYInteractMath"
.section __TEXT,__objc_methtype,cstring_literals
L_OBJC_METH_VAR_TYPE_: ## @OBJC_METH_VAR_TYPE_
.asciz "i24@0:8i16i20"
.section __DATA,__objc_const
.p2align 3 ## @"_OBJC_$_CLASS_METHODS_QYInteractMath"
__OBJC_$_CLASS_METHODS_QYInteractMath:
.long 24 ## 0x18
.long 1 ## 0x1
.quad L_OBJC_METH_VAR_NAME_.1
.quad L_OBJC_METH_VAR_TYPE_
.quad "+[QYInteractMath divV1:v2:]"
.p2align 3 ## @"_OBJC_METACLASS_RO_$_QYInteractMath"
__OBJC_METACLASS_RO_$_QYInteractMath:
.long 129 ## 0x81
.long 40 ## 0x28
.long 40 ## 0x28
.space 4
.quad 0
.quad L_OBJC_CLASS_NAME_
.quad __OBJC_$_CLASS_METHODS_QYInteractMath
.quad 0
.quad 0
.quad 0
.quad 0
.section __DATA,__objc_data
.globl _OBJC_METACLASS_$_QYInteractMath ## @"OBJC_METACLASS_$_QYInteractMath"
.p2align 3
_OBJC_METACLASS_$_QYInteractMath:
.quad _OBJC_METACLASS_$_NSObject
.quad _OBJC_METACLASS_$_NSObject
.quad __objc_empty_cache
.quad 0
.quad __OBJC_METACLASS_RO_$_QYInteractMath
.section __TEXT,__objc_methname,cstring_literals
L_OBJC_METH_VAR_NAME_.3: ## @OBJC_METH_VAR_NAME_.3
.asciz "math"
.section __TEXT,__objc_methtype,cstring_literals
L_OBJC_METH_VAR_TYPE_.4: ## @OBJC_METH_VAR_TYPE_.4
.asciz "v16@0:8"
.section __DATA,__objc_const
.p2align 3 ## @"_OBJC_$_INSTANCE_METHODS_QYInteractMath"
__OBJC_$_INSTANCE_METHODS_QYInteractMath:
.long 24 ## 0x18
.long 2 ## 0x2
.quad L_OBJC_METH_VAR_NAME_
.quad L_OBJC_METH_VAR_TYPE_
.quad "-[QYInteractMath addV1:v2:]"
.quad L_OBJC_METH_VAR_NAME_.3
.quad L_OBJC_METH_VAR_TYPE_.4
.quad "-[QYInteractMath math]"
.p2align 3 ## @"_OBJC_CLASS_RO_$_QYInteractMath"
__OBJC_CLASS_RO_$_QYInteractMath:
.long 128 ## 0x80
.long 8 ## 0x8
.long 8 ## 0x8
.space 4
.quad 0
.quad L_OBJC_CLASS_NAME_
.quad __OBJC_$_INSTANCE_METHODS_QYInteractMath
.quad 0
.quad 0
.quad 0
.quad 0
.section __DATA,__objc_classlist,regular,no_dead_strip
.p2align 3 ## @"OBJC_LABEL_CLASS_$"
_OBJC_LABEL_CLASS_$:
.quad _OBJC_CLASS_$_QYInteractMath
.section __DATA,__objc_imageinfo,regular,no_dead_strip
L_OBJC_IMAGE_INFO:
.long 0
.long 64
.subsections_via_symbols
网友评论