美文网首页
Swift - 汇编-1

Swift - 汇编-1

作者: 开了那么 | 来源:发表于2020-10-10 11:11 被阅读0次

    1、常用寄存器

    有16个常用寄存器
    %rax. %rbx. %rcx. %rdx. %rsi. %rdi. %rbp. %rsp
    %r8, %r9. %r10, %r11, %r12, %r13, %r14. %r15

    • 寄存器的具体用途
      • %rax常作为函数返回值使用
      • %rdi、%rsi、 %rdx. %rcx、 %r8、 %r9等寄存器常用于存放函数参数
      • %rsp、%rbp用于栈操作

    X64位寄存器都是 R 开头,8个字节 ----- X32位寄存器都是 E 开头 4个字节

    2、命令解析

    movq -0X18(%rbp), %rax 将 -0X18(%rbp) 计算出来的地址内的数据存储到 %rax中

    leaq -0X18(%rbp), %rax 将 -0X18(%rbp) 计算出来的地址存储到 %rax中

    jmp 0x40010002 跳转到 0x40010002,继续往下执行

    call 0x40010002 调用函数,跳转到 0x40010002,执行完成后会跳回到原来call 命令下一行的命令

    mov(*) 移动指令 最后(*) 代表需要占用额内存长度,

    XOR(*) 异或指令


    image.png

    3、rip 地址计算

    var e = TestEnum. test1(10, 20, 30)

    0x10000158f movq $0xa, 0x4be6(%rip) // rip + 0x4be6 -> 0x10000159a + 0x4be6 =

    0x10000159a leaq 0x4bdf(%rip),%rax // rax =

    0x1000015a1 movq $0x14, 0x4bdc(%rip) //

    0x1000015ac movq $0x1e, 0x4bd9(%rip)

    0x1000015b7 movb $0x0, 0x4bda(%rip)

    rip存储的是指令的地址
    CPU要执行的下条指令地址就存储在 rip中
    q 8个字节
    b 1个字节

    4、lldb常用指令

    • 读取寄存器的值

      • register read/tIt
      • register read/x .
    • 修改内存中的值

      • memory write内存地址数值
      • memory write 0x0000010 10
    • expression 表达式

      • 可以简写: expr表达式
      • expression $rax
      • expression $rax = 1
    • 修改寄存器的值

      • register write寄存器名称数值
      • register write rax 0
    • 读取内存中的值

      • x/数量-格式-字节大小内存地址
      • x/3xw 0x0000010
    字节大小
       b- byte 1字节
       h- half word 2字节
       W- word 4字节
       g - giant word 8字节
    
    • thread step-over、next、 n
      单步运行,把子函数当做整体-步执行(源码级别)
    • thread step-in、step、 s
      单步运行,遇到子函数会进入子函数(源码级别)S
    • tred step inst over. nexti ni
      单步运行,把子函数当做整体一步执行(汇编级别)
    • thread step-inst、stepi、 si
      单步运行,遇到子函数会进入子函数(汇编级别)
    • thread step-out、finish
      直接执行完当前函数的所有代码,返回到上一个函数(遇到断点会卡住)
    内存地址格式为: 0x4bdc(%rip) , -般是全局变量,全局区(数据段)
    内存地址格式为: -0x78(%rbp), - 般是局部变量,栈空间
    内存地址格式为: 0x10(%rax) , 一般是堆空间.
    

    相关文章

      网友评论

          本文标题:Swift - 汇编-1

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