美文网首页
IOS的一段汇编

IOS的一段汇编

作者: 无边小猪 | 来源:发表于2020-06-01 17:38 被阅读0次

生成汇编
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

相关文章

网友评论

      本文标题:IOS的一段汇编

      本文链接:https://www.haomeiwen.com/subject/yvmszhtx.html