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.mzph.cn/news/654120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

把数组中的key都取出来然后去重

今日接到一个小需求,一张表有类似这样的数据:(下面是一行) 但是每行的数据,主要是key不一样,我们想把所有的key取出来,并且做个去重。 首先我先在mysql中, SELECT GROUP_CONCAT(RE…

Leetcode 3020. Find the Maximum Number of Elements in Subset

Leetcode 3020. Find the Maximum Number of Elements in Subset 1. 解题思路2. 代码实现 题目链接:3020. Find the Maximum Number of Elements in Subset 1. 解题思路 这一题我做的是比较水的,首先就是统计下array当中各个元素出现的频次&#xff0…

蓝桥杯---九数组分数

1,2,3 ... 9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码。 注意,只能填写缺少的部分,不要重复抄写已有代码。不要填写任何多余的文字。 代码 public class _05九数组分数 {public static void test(int[] x){int a …

Linux, Certbot快速申请免费https证书

linux环境. 更新apt,为了能正确的下载certbot apt update 安装certbot apt install certbot 如果之前nginx已经开启着了,先关掉,防止端口占用 nginx -s stop 运行certbot开始获取证书文件 certbot certonly 输入1直接回车,意思就是让certbot模拟一个web服务器执行下面的…

探秘Photoshop | 一站式了解所有相关信息

Photoshop是迄今为止世界上最强大的图像编辑软件,它已成为许多涉及图像处理的行业标准。软件技术一天行千里, Photoshop也在不断更新,从1990年开始发布, photoshop1.0到最新的 2018Photoshop... 几乎每隔一年,Photosho…

AI学习(3): PyTorch-初识张量

1.介绍 PyTorch中的张量(tensor)是其核心数据结构,表示任意维度的数组。张量可以用于存储和处理数据,是PyTorch中的基本构建模块。 在PyTorch中,张量是torch.Tensor类的实例,它提供了丰富的方法和功能&…

Apache 辅助系统工具

一丶Apache Sqoop 1.Sqoop的介绍: Sqoop的工作机制是将导入或者导出的命令翻译成MapReduce实现,Sqoop可以理解为:SQL到Hadoop或者Hadoop到SQL 2.Sqoop的安装 配置文件修改: cd $SQOOP_HOME/conf mv sqoop-env-template.sh sqo…

VLM 系列——Monkey——论文解读

一、概述 1、是什么 Monkey 全称《Monkey : Image Resolution and Text Label Are Important Things for Large Multi-modal Models》,是一个多模态的视觉-文本模型,当前版本(20231130)为基于Qwen-vl 的三阶段微调(增加了Lora+visual adapter 支持更高的分辨率)可以完成…

Dubbo Consumer 对Provider的protocol选择逻辑

一、简介 dubbo consumer 如果没有指定protocol参数,默认会将provider注册的protocol provider url都获取并转换为Invoker放到Directory中。如果consumer指定了protocol则会在Directory中选择相应的protocol provider url转换为Invoker放在Directory中。 二、代码分…

【Linux笔记】编wpa_supplicantl库

说明、编译当前库需要进行三个步骤 一、编译libnl库 【博主使用的版本 libnl-3.5.0 】 二、编译openssl库 【 博主使用的版本 libopenssl-1.1.1k 】 三、编译wpa_supplicantl库 【 博主使用的版本 wpa_supplicant-2.9】 四、 /博主当前交叉编译器为 【arm-himix100-linux- 】 …

力扣hot100 柱状图中最大的矩形 单调栈

Problem: 84. 柱状图中最大的矩形 文章目录 思路复杂度Code 思路 👨‍🏫 参考地址 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {public static int largestRectangleArea(int[] height){Stack&l…

【英语趣味游戏】填字谜(Crossword)第1天

谜题出处 柯林斯字谜大全(6),Collins——Big Book of Crosswords(Book 6) Puzzle Number: 114 本期单词 横向 1、Situation involving danger (4) 包含危险的情境,4个字母 答案:Risk&#xff…

shell

目录 一.运行方式 二.编程习惯 三.变量 3.1变量的命名 3.3普通变量(局部变量) 3.4特殊变量 3.5变量子串 3.6变量赋值 四.运算方式 4.1$(( )) 4.2let 4.3expr 4.4bc(小数运算) 4.5$[ ] 4.6awk 4.7总结运算方式 五.条件测试语句 5.1文件 5.2条件测试表达式…

揭秘IP地址定位:了解如何通过IP地址追踪你的位置

在互联网时代,我们的每一次在线活动都留下了痕迹,而IP地址则是其中一个关键的标识。IP地址定位技术的发展使得我们能够通过IP地址追踪设备的位置,这在某些情况下对于服务提供商、广告商和甚至研究人员来说可能是有用的。本文将深入探讨IP地址…

webassembly003 whisper.cpp的python绑定实现+Cython+Setuptools的GUI程序

CODE python端的绑定和本文一样,还需要将cdef char* LANGUAGE b’en’改为中文zh(也可以在函数中配置一个参数修改这个值)。ps:本来想尝试cdef whisper_context* whisper_init_from_file_with_params_no_state(char*, whisper_full_params)…

Nginx中的反向代理、正向代理和透明代理的深入讲解

Nginx中的反向代理、正向代理和透明代理 Nginx中的反向代理、正向代理和透明代理是三种常见的代理技术,它们各自具有不同的功能和使用场景。本文将详细介绍这三种代理技术的配置和使用。 一、反向代理 反向代理是指将客户端请求转发到后端服务器,并将…

构建中国人自己的私人GPT—支持中文

上一篇已经讲解了如何构建自己的私人GPT,这一篇主要讲如何让GPT支持中文。 privateGPT 本地部署目前只支持基于llama.cpp 的 gguf格式模型,GGUF 是 llama.cpp 团队于 2023 年 8 月 21 日推出的一种新格式。它是 GGML 的替代品,llama.cpp 不再…

数字图像处理(实践篇)二十八 使用OpenCV Python中的K-means对图像进行颜色量化处理

目录 1 颜色量化 2 实践 在某些时候,不可避免的某些设备只能生成有限数量的颜色。因此需要执行颜色量化。选择使用cv2.kmeans()函数对颜色量化应用k-means聚类。 1 颜色量化 使用K-means聚类在图像中实现颜色量化的步骤如下: ① 导入依赖库

写静态页面——魅族导航_前端页面练习

0、效果&#xff1a; 1、html代码&#xff1a;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

Tomcat session复制及session共享技术

目录 1、环境 2、配置测试页面 3、配置session共享 前言&#xff1a; 为什么要做session复制或共享 实现Session复制或Session共享的目的是为了在多个Tomcat实例之间实现Session的无缝转移和共享&#xff0c;以提供更高的可伸缩性、负载均衡和容错性。以下是一些原因&#x…