Swift Day04 常见AT&T汇编

1. movq %rax, %rdx 是什么意思?
  • rax 的值赋值给 rdx
2. movq $0x10, %rax 是什么意思?
  • 0x10 赋值给 rax
3. movq $0xa, 0x1ff7(%rip) 是什么意思?
  • 0xa 赋值给地址为 rip+0x1ff7 的内存空间
  • MOV指令可以在 CPU 内CPU存储器之间传送数据
  • 寄存器寄存器
  • 立即数寄存器
  • 立即数存储器
  • 寄存器存储器
  • 存储器寄存器
4. xorl %ecx, %ecx 是什么意思?
  • 将 %ecx 和 %ecx 进行异或操作,其实效果就是将 %ecx 的内存值归零
  • xorl 、 movl 、andl 都可以将内存值归零,但是 xorl效率最高的
6. leaq -0x18(%rbp), %rax 是什么意思?
  • rbp-0x18 的地址值赋值给 %rax
  • lea 指令:load effective address,加载有效地址,可以将有效地址传送到指定的寄存器。
  • 指令形式是从存储器读数据寄存器,效果是将存储器的有效地址写入到目的操作数,简单来说,就是 C 语言中的 &
7. jmp 0x4001002 是什么意思?
  • 跳到 指定地址0x4001002 继续开始执行指令
8. movq leaw movb movl中的 b w l q分别代表什么?
  • bbyte = 8bit 1字节
  • wword = 16bit 2字节
  • llong = 32bit 4字节
  • qquad-word = 64bit 8字节
9. 32为的寄存器以什么字母开头?64 位的寄存器以什么开头?
  • 32 位的寄存器以 e 开头,占 4 字节
  • 64 位的寄存器以 r 开头,占 8 字节
10. 常用的一些 lldb 指令
lldb 指令
11. 在汇编指令中 rip 存储的是什么?
  • rip 存储的是指令的地址
  • CPU 要执行的下一条指令的地址就存储在 rip 中
12. 一般规律
  • 内存地址格式为:0x4bdc(%rip),一般是全局变量,在全局区(数据段)
  • 内存地址格式为:-0x78(%rbp),一般是局部变量,栈空间
  • 内存地址格式为:0x10(%rax),一般在堆空间
  • rax、rdx常作为函数返回值使用
  • rdi、rsi、rdx、rcx、r8、r9这些寄存器常用语存放函数参数
13. movq $0xb,(%rax) 是什么意思?
  • 立即数11 的值赋给 rax中存储的地址所在的内存

你可能感兴趣的:(Swift Day04 常见AT&T汇编)