Skip to main content

汇编代码基础知识

·35 words·1 min
Compiler TA Optimization

汇编代码基础知识 #

额外的参考资料还有这些:

为了更好地理解汇编代码,下面介绍一些基础知识:

指令 #

  • pushq: 将一个64位(quad word)的值压入栈中。
  • movq: 将一个64位的值从源操作数移动到目标操作数。
  • cmpq: 比较两个64位的值。

这里指令末尾的q表示操作的是64位(quad word)的数据。在32位汇编中,相应的指令是pushlmovlcmpl,末尾的l表示操作的是32位(long word)的数据。

寄存器 #

  • rsp: 栈指针寄存器(Stack Pointer),指向栈顶。
  • rbp: 基址指针寄存器(Base Pointer),用于访问函数的参数和局部变量。
  • rdi: 第一个参数寄存器,用于传递函数的第一个参数。
  • rax: 累加器寄存器(Accumulator),常用于存储函数的返回值。

除了上述寄存器,还有其他常见的寄存器如rsi(第二个参数寄存器)、rdx(第三个参数寄存器)、rcx(第四个参数寄存器)、r8r15(额外的通用寄存器)等。

这些寄存器的命名源于历史原因,在早期的16位汇编中,寄存器名如axbxcxdx等,分别有不同的用途。在32位和64位汇编中,这些寄存器名前加上了e(extended)或r(register),如eaxrax等,表示寄存器位数的扩展。

Related

c++编译器优化介绍
·670 words·4 mins
Compiler TA Optimization
组会M4-W4
·94 words·1 min
组会 Tag
Local Bundle Adjustment 阅读笔记
·227 words·2 mins
SLAM g2o optimizer