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

2020-12-25  本文已影响0人  hank009

汇编语言的种类:

常见的汇编指令

项目 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常用指令

b - byte 1字节
h - half word 2字节
w - word 4字节
g - giant word 8字节

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

上一篇 下一篇

猜你喜欢

热点阅读