美文网首页
常见的汇编指令、寄存器、lldb指令

常见的汇编指令、寄存器、lldb指令

作者: hank009 | 来源:发表于2020-12-25 17:02 被阅读0次

汇编语言的种类:

  • 1.8086汇编(16bit)
    2.x86汇编 (32bit)
    3.x64汇编 (64bit)
    4.ARM汇编 (嵌入式 移动设备)

常见的汇编指令

项目 AT&T- Intel 说明
寄存器命名 %rax rax
操作数顺序 movq %rax,%rdx mov rdx,rax 将 rax的值赋值给 rdx
常数/立即数 movq \$3,%rax
movq $0x10,%rax
mov rax,3
mov rax,0x10
将3赋值给rax
将10赋值给rax
内存赋值 movq 0xa,0x1ff7(%rip) mov qword ptr[rip+0x1ff7],0xa 将 0xa赋值给地址为 rip+0x1ff7 的内存
取内存地址 movq -0x18(%rbp),%rax lea rax,[rbp - 0x18] 将 rep - 0x18 这个地址值赋值给 rax
jmp指令 jmp *%rdx
jmp 0x40001002
jmp *(%rax)
jmp rdx
jmp 0x40001002
jmp [rax]
call和jmp写法类似
操作数长度 movl %eax,%edx
movb $0x10,%al
leaw 0x10(%dx),%ax
mov edx,eax
mov al,0x10
lea ax,[dx + 0x10]
b = byte(8-bit)
s = short(16-bit integer or 32-bit floating point)
w = word(16-bit)
l = long(32-bit integer or 64-bit floating pint)
q = quad(64-bit)
t = ten bytes(80-bit floating pint)

寄存器

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

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

lldb常用指令

  • 读取寄存器的值
    register read/格式
    register read/x

  • 修改寄存器的值
    register write 寄存器名称 数值
    register write rax 0

  • 读取内存中的值
    x/数量-格式-字节大小 内存地址
    x/3xw 0x0000010

  • 修改内存中的值
    memory write 内存地址 数值
    memory write 0x00000010 10

  • 格式
    x 是16进制,f 是浮点,d 是十进制

  • 字节大小

b - byte 1字节
h - half word 2字节
w - word 4字节
g - giant word 8字节
  • expression 表达式
    可以简写:expr 表达式
    expression $rax
    expression $rax = 1

  • po表达式
    print 表达式
    po/x $rax
    po (int)$rax

  • 单步运行,把子函数当作整体一步执行(源码级别
    thread step-over、 next、 n

  • 单步运行,遇到子函数会进入子函数(源码级别
    thread step-in、step、s

  • 单步运行,把子函数当作整体一步执行(汇编级别
    thread step-inst-over、 nexti、 ni

  • 单步运行,遇到子函数会进入子函数(汇编级别
    thread step-inst、stepi、si

  • 直接执行晚当前函数的所有代码,返回到上一个函数(遇到断点会卡住)
    thread step-out 、 finish

内存地址格式为: 0x4bdc(%rip),一般是 全局变量全局区(数据段)
内存地址格式为: -0x78(%rbp),一般是 局部变量栈空间
内存地址格式为: 0x10(%rax),一般是 堆空间

相关文章

  • 常见的汇编指令、寄存器、lldb指令

    汇编语言的种类: 1.8086汇编(16bit)2.x86汇编 (32bit)3.x64汇编 (64bit)4.A...

  • 1.《汇编语言》-王爽第三版学习笔记 基础知识

    机器指令 && 汇编指令对比:操作:寄存器 BX 的内容送到 AX 中机器指令:1000100111011000汇...

  • 基础的汇编指令学习-2019-05-09

    基础的汇编指令学习 转载请标注出处:CSDN ARM 指令记录 指令的条件域 寄存器学习 寄存器 显示opcode...

  • 00-汇编语言

    程序的本质 寄存器与内存 编程语言的发展 汇编语言的种类 常见的汇编指令 寄存器 有16个常用寄存器rax、rbx...

  • 汇编语言

    @[toc] 汇编语言 汇编语言的主体是汇编指令 操作 寄存器bx的内容送到ax中 机器指令 1000100111...

  • 6.汇编-修改EIP的指令

    6.汇编-修改EIP的指令 EIP寄存器 EIP寄存器表示CPU下次执行的位置 JMP指令 JMP指令相当于给EI...

  • 第七章 ARM 汇编基础

    Cortex-A7 常用汇编指令 1、 MOV指令 2、 MRS指令MRS指令用于将特殊寄存器(如CPSR何SPS...

  • 汇编基础

    理解程序的本质 程序的本质 编程语言的发展 汇编语言的种类 常见的汇编指令 寄存器 和寄存器的兼容性 注意点:寄存...

  • 9.汇编-JCC

    9.汇编-JCC 之前可以修改EIP寄存器的指令JMP,CALL,RETN 所有JCC指令的动作->根据标志寄存器...

  • Swift复习四&五

    内存分析 结构体 类 值类型 引用类型 一: 汇编发展 二: 汇编语言种类 三: 常见指令 四: 寄存器 五: m...

网友评论

      本文标题:常见的汇编指令、寄存器、lldb指令

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