当前位置: 首页 > 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
(使用栈空间需要先分配

相关文章:

  • Leetcode 热门百题斩(第二天)
  • 09. 配置Eth-Trunk
  • Python爬虫-批量爬取免费小说并下载保存到本地
  • C++笔记(七)
  • 前缀和 差分
  • 05 - 什么是路由协议
  • 数据结构—动态查找
  • 第十章 函数 (上)第一节-第九节
  • 宠物处方单子怎么开,宠物门诊处方管理软件教程
  • JVM 笔记
  • 常见的网络安全威胁和防护方法
  • C++——构造函数
  • Android使用ScrollView导致鼠标点击事件无效
  • LeetCode 热题 100 | 链表(上)
  • 解决Docker AList本地挂载失效的问题。
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Material Design
  • React as a UI Runtime(五、列表)
  • React-flux杂记
  • v-if和v-for连用出现的问题
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 代理模式
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 前端面试之CSS3新特性
  • 前端之Sass/Scss实战笔记
  • 强力优化Rancher k8s中国区的使用体验
  • 一文看透浏览器架构
  • 主流的CSS水平和垂直居中技术大全
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #vue3 实现前端下载excel文件模板功能
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #预处理和函数的对比以及条件编译
  • $forceUpdate()函数
  • (0)Nginx 功能特性
  • (39)STM32——FLASH闪存
  • (4)STL算法之比较
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (安卓)跳转应用市场APP详情页的方式
  • (补)B+树一些思想
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (利用IDEA+Maven)定制属于自己的jar包
  • (算法设计与分析)第一章算法概述-习题
  • (原)本想说脏话,奈何已放下
  • (转)linux下的时间函数使用
  • (转载)hibernate缓存
  • .net core 6 redis操作类
  • .net core开源商城系统源码,支持可视化布局小程序
  • .net 怎么循环得到数组里的值_关于js数组
  • .net开发时的诡异问题,button的onclick事件无效
  • .net知识和学习方法系列(二十一)CLR-枚举