当前位置: 首页 > news >正文

ATT汇编

指令后缀

AT&T格式的汇编指令有不同的后缀
其中
b表示byte,字节
w表示word,字/两字节
l表示long,32位系统下的long是4字节
q表示quad,意味四重,表示4个字/8字节

寄存器用途

参见
AT&T的汇编世界 - Gemfield的文章 - 知乎

特殊寻址方式

指针寄存器rsp可以用-8(%rsp)这种方式来寻址,rax等寄存器则不能
想寻址的偏移量保存在寄存器里:
(%rsp, %rax)       # 偏移rax寄存器里保存的值
%rsp, %rax, 2)    # 取rsp偏移rax2处的值,上行实际上是缺省了1
2(%rsp, %rax, 2) # 取rsp偏移rax
2+2处的值
如下图所示
例
通过gdb调试查看,符合
使用gdb直接打印地址里的值

命令行参数

在bash中执行命令时,参数的数量保存在(%rsp)寄存器处;
第0个参数的地址(可执行文件名)保存在8(%rsp)处
第1个参数的地址保存在16(%rsp)处
… …
后面是环境变量

GDB汇编调试简介

layout asm 显示汇编源码
si 单步执行汇编指令,会进入函数
ni 单行执行汇编指令,不会进入函数
i r(info regirester) 查看寄存器的值
p 打印变量的值
p $rax # 打印rax寄存器的数据
p *0xaaaa # 打印0xaaaa处的数据,以十进制整数形式
p (char*)0xaaaa # 以字符串形式

x 打印地址内的数据
x $rsp # 打印rsp寄存器指向地址内保存的数据
x/[数量][格式][宽度]
数量:打印多少字节
格式:t二进制/o八进制/d十进制/x十六进制/c字符/f浮点
宽度:b字节/h两字节/w四字节/g八字节
例:x/20xg $rsp,打印rsp到rsp+20处的指向地址内保存的数据

语法杂记

div
div指令不接受一个立即数作为参数
div执行前被除数的高位放在rdx、低位放在rax,执行后的商放在rax、余数放在rdx,因此要连续运算,需要把高位rdx清零或是重新赋值

lea
lea指令的源操作数不能是数据寄存器,因此如果想把一个常量的地址加载到某处
movq $1234, %rax
leaq %rax, %rdi
上述做法是错误的
一般需要用栈空间中转,用法如下
movq $1234, -8(%rsp)
leaq -8(%rsp), %di
(使用栈空间需要先分配

http://www.lryc.cn/news/289851.html

相关文章:

  • java split 拆分字符串
  • 【InternLM 大模型实战】作业与笔记汇总
  • 解析PreMaint在石油化工设备预测性维护领域的卓越表现
  • C++面试宝典第25题:阶乘末尾零的个数
  • PCIE 4.0 Equalizaiton(LTSSM 均衡流程)
  • [libwebsockets]lighttpd+libwebsockets支持ws和wss配置方法说明
  • 常用软件安装
  • 翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三
  • Qt QPlainTextEdit高亮显示当前行
  • Linux编辑器vim(含vim的配置)
  • Oracle DG环境下的秘钥管理
  • 【Sql Server】新手一分钟看懂在已有表基础上增加字段和说明
  • 亚信安慧AntDB打造开放创新的数据库生态
  • 在Mixamo网站上,下载的动画导入unity给自己的模型添加后出错怎么解决
  • java servlet运输公司管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • React中antd的使用技巧
  • 2024年第一篇博客
  • Nginx负载均衡下的webshell连接
  • JAVA编程语言单词汇总
  • 微信小程序(十七)自定义组件生命周期(根据状态栏自适配)
  • 百度搜索智能精选是什么东西、怎么加入?
  • 小程序开发平台:全功能小程序商城功能 带完整的安装代码包以及搭建教程
  • Vue3生命周期 VS Vue2生命周期(小记)
  • MYSQL基本查询(CURD:创建、读取、更新、删除)
  • 头歌C语言指针进阶
  • 民安智库-公共健身场所满意度调研
  • 《HTML 简易速速上手小册》第3章:HTML 的列表与表格(2024 最新版)
  • IBeginDragHandler,IEndDragHandler,IDragHandler拖拽接口
  • 面试经典 150 题 ---- 删除排序数组中的重复项
  • 深度学习(6)---Transformer