【汇编】基本概念

【汇编】基本概念

存储空间

计算机有多种储存空间提供使用,不同的存储空间有着不同的使用场景

  • 寄存器
    一般CPU中都有直接配备,速度最快,可以完全匹配CPU的速度,但容量小,一般和平台位数有关。除一些做特殊用途的寄存器外,一般只用来放置一次计算中的临时数据。
  • 存储器
    • 内存
      空间大,在一次程序运行期间可长期储存,但速度慢,一般配合Cache功能以适应CPU的速度。
    • 外存
      速度最慢,但可以长期存储,是所有数据和程序存储的地方,使用时相关数据都会加载到内存中,一般配合虚拟存储器功能以匹配内外存的容量差异。
  • 栈空间
    函数的执行就是入栈出栈,包括返回地址和局部变量等数据,都在栈空间中存储,栈空间的扩展方向是由高到低地址,所以入栈时一般用减法。
    栈帧:某一时刻栈空间的状态

指令

组成结构

操作码 [运算符]<操作数> …

名称 说明
操作码 指定使用的函数,为固定关键字
操作数 供函数使用的参数,如立即数,寄存器等
运算符 一些固定关键字,能对操作数进行微调,比如类型转换

操作单位

默认单位为计算机系统位数,如x86_64就是64位,即8字节。也允许显式指定,指定方式有多种,一般作为操作码后缀出现。(注意寻址的单位是字节和操作单位不是一个概念)

表示 名称 大小(一般情况下)
b 字节(byte) 8位
w 字(word) 16位
l 双字(doubleword) 32位
q 四字(quadword) 64位

参数形式

目的操作数:一般也是输出结果的位置,即存储返回值

  • <目的操作数>
  • <目的操作数>,<源操作数>(可能反向)

寄存器

识别方式

寄存器排除前后缀后名称相同,表明是同一寄存器,只是读写长度不同

对于不带编号的寄存器:

  1. 前缀为r,表明是64位
  2. 前缀为e,表明是32位
  3. 后缀为l,表示是8位
  4. 无前后缀,表示是16位

对于带编号寄存器(第8-16号寄存器):

  1. 后缀为d,表示32位
  2. 后缀为w,表示16位
  3. 后缀为b,表示8位
  4. 无前后缀,表示64位

运算符(不是操作码)

  • []:对寄存器运算时都要加上。
  • +/-:取寄存器中的值进行运算,并返回新值。
  • PTR:将值强制识别为地址。

【汇编】基本概念
https://bdffzi-blog.pages.dev/posts/3178886567.html
作者
BDFFZI
发布于
2024年2月3日
许可协议