【汇编】基本概念
【汇编】基本概念
存储空间
计算机有多种储存空间提供使用,不同的存储空间有着不同的使用场景
- 寄存器
一般CPU中都有直接配备,速度最快,可以完全匹配CPU的速度,但容量小,一般和平台位数有关。除一些做特殊用途的寄存器外,一般只用来放置一次计算中的临时数据。 - 存储器
- 内存
空间大,在一次程序运行期间可长期储存,但速度慢,一般配合Cache功能以适应CPU的速度。 - 外存
速度最慢,但可以长期存储,是所有数据和程序存储的地方,使用时相关数据都会加载到内存中,一般配合虚拟存储器功能以匹配内外存的容量差异。
- 内存
- 栈空间
函数的执行就是入栈出栈,包括返回地址和局部变量等数据,都在栈空间中存储,栈空间的扩展方向是由高到低地址,所以入栈时一般用减法。
栈帧:某一时刻栈空间的状态
指令
组成结构
操作码 [运算符]<操作数> ...
名称 | 说明 |
---|---|
操作码 | 指定使用的函数,为固定关键字 |
操作数 | 供函数使用的参数,如立即数,寄存器等 |
运算符 | 一些固定关键字,能对操作数进行微调,比如类型转换 |
操作单位
默认单位为计算机系统位数,如x86_64就是64位,即8字节。也允许显式指定,指定方式有多种,一般作为操作码后缀出现。(注意寻址的单位是字节和操作单位不是一个概念)
表示 | 名称 | 大小(一般情况下) |
---|---|---|
b | 字节(byte) | 8位 |
w | 字(word) | 16位 |
l | 双字(doubleword) | 32位 |
q | 四字(quadword) | 64位 |
参数形式
目的操作数:一般也是输出结果的位置,即存储返回值
- <目的操作数>
- <目的操作数>,<源操作数>(可能反向)
寄存器
识别方式
寄存器排除前后缀后名称相同,表明是同一寄存器,只是读写长度不同
对于不带编号的寄存器:
- 前缀为r,表明是64位
- 前缀为e,表明是32位
- 后缀为l,表示是8位
- 无前后缀,表示是16位
对于带编号寄存器(第8-16号寄存器):
- 后缀为d,表示32位
- 后缀为w,表示16位
- 后缀为b,表示8位
- 无前后缀,表示64位
运算符(不是操作码)
- []:对寄存器运算时都要加上。
- +/-:取寄存器中的值进行运算,并返回新值。
- PTR:将值强制识别为地址。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现