ATT 格式汇编语言语法
GNU 汇编器是 GNU 二进制实用程序 (binutils) 的一部分,也是 GNU 编译器集合的后端。尽管 as 不是编写相当大的汇编程序的首选汇编程序,但它是当代类 Unix 系统的重要组成部分,特别是对于内核级黑客攻击。 经常因其神秘的 AT&T 风格语法而受到批评,有人认为,as 的编写重点是用作 GCC 的后端,而很少关心“开发人员友好性”。 如果您是一位来自 INTEL 语法背景的汇编程序员,您将在代码可读性和代码生成方面遇到一定程度的窒息。 然而,必须指出的是,许多操作系统的代码库依赖于汇编器来生成低级代码。
1. 基本格式
AT&T 语法中的程序结构与任何其他汇编器语法类似,由一系列伪指令(directives)、标签(labels)、指令(instructions)组成——由助记符和最多三个操作数组成。 AT&T 语法中最显著的差异源于操作数的顺序(注:与intel格式汇编语法刚好相反)。
例如:通用的基本数据移动指令,intel汇编语法是:
助记符(mnemonic) 目标操作数(destination) 源操作数(source)
而AT&T汇编语法则是:
助记符(mnemonic) 源操作数(source) 目标操作数(destination)
对于某些人来说,这种格式更直观。以下部分描述了 X64 架构的 AT&T 汇编指令的操作数类型。
例如:
instr source,dest
movl (%ecx),%eax ;(括号()表示取地址,相当于intel格式的[%ecx])
movb %bl,%al
movw %bx,%ax
movl %ebx,%eax
movl (%ebx),%eax
2. 寄存器
AT&T语法要求在指令后面加上后缀表示长度,根据操作的是1字节、2字节、4字节、8字节,分别对应后缀b(byte), w(word,一个字,即16字节), l(long word,即双字), q(quad word,四字,即64字节),不加后缀默认是w。
X64的所有寄存器都带前缀符号‘%’ ,例如,%rax,%rbx, %rcx,等等。例如:
movq %rax, %rbx ;(movq的q指quadword,即4字,1个字16字节)
例如:
movl $1,%eax
movl $0xff,%ebx
int $0x80
3. 文字量(literal values)
所有文字量必须带前缀符号‘$’,例如:
movw $100, %bx
movb $0x0A, %al
注意:使用gcc 嵌入汇编译时,‘%’号要使用两个‘%%’。
例如:
__asm__ __volatile__ ("movw $100, %%bx" : "=b"(a));
相关文章:
ATT 格式汇编语言语法
GNU 汇编器是 GNU 二进制实用程序 (binutils) 的一部分,也是 GNU 编译器集合的后端。尽管 as 不是编写相当大的汇编程序的首选汇编程序,但它是当代类 Unix 系统的重要组成部分,特别是对于内核级黑客攻击。 经常因其神秘的 AT&T 风格语法而…...
Linux系统编程学习 NO.8 ——make和Makefile、进度条程序
前言 今天是1024程序员节,不知不觉离第一次写博客已经过去了一年了。在此祝各位程序员不写bug,不再秃头。 make和Makefile 什么是make和Makefile? make和Makefile是软件开发时所用到的工具和文件。make是一个指令工具。Makefile是一个当前…...
elementUI 中 date-picker 的使用的坑(vue3)
目录 1. 英文显示2. format 与 value-format 无效3. date-picker 时间范围4. 小结 1. 英文显示 <el-date-pickerv-model"dateValue"type"date"placeholder"选择日期"></el-date-picker>解决方案: 引用 zhCn <script&g…...
1-07 React配置postcss-px-to-viewport
React配置postcss-px-to-viewport 移动端适配 安装依赖:在项目根目录下运行以下命令安装所需的依赖包: npm install postcss-px-to-viewport --save-dev配置代码 const path require(path);module.exports {webpack: {alias: {: path.resolve(__di…...
ITSource 分享 第3期【在线个人网盘】
项目介绍 本期给大家介绍一个在线个人网盘 系统. 可以上传,下载,分享文件。 一 业务介绍 本系统分为以下几个模块: 1.登录注册 除了账号密码登录,如果配置了qq邮箱配置的话,还支持qq一键授权登录。 2.首页大盘 首页是个人网盘…...
【C#进阶】C#语法中一些常用知识点总结
文章目录 1.三目运算符2.循环控制语句 (for while do…while foreach)3.访问修饰符4.静态方法和非静态方法5.数组、字典和其他集合类型1. 数组(Array)2. 列表(List)3. 字典(Dictionary)4. 队列(…...
加速开发容错量子计算应用!PsiQuantum官宣将在英国干大事
(图片来源:网络) 在STFC-PsiQuantum的新研发实验室PsiDaresbury正式揭幕时,PsiQuantum宣布,在国家安全战略投资基金(NSSIF)的支持下,已与STFC的Hartree中心合作开展一个为期12个月的…...
使用canvas做了一个最简单的网页版画板,5分钟学会
画板实现的效果:可以切换画笔的粗细,颜色,还可以使用橡皮擦,还可以清除画布,然后将画的内容保存下载成一张图片: 具体用到的canvas功能有:画笔的粗细调整lineWidth,开始一个新的画笔…...
自组织映射Python实现
自组织映射(Self-organizing map)Python实现。仅供学习。 #!/usr/bin/env python3""" Self-organizing map """from math import expimport toolzimport numpy as np import numpy.linalg as LAfrom sklearn.base import…...
如何避免阿里云对象储存OSS被盗刷
网站app图片的云端存储离不开对象存储oss,而最难为的问题就是app做的出名了,少不了同行的攻击,包含ddos,cc攻击以及oss外链被盗刷! 防盗链功能通过设置Referer白名单以及是否允许空Referer,限制仅白名单中的域名可以访…...
产品研发团队协作神器!10款提效工具大盘点!
在如今科技驱动的时代,产品研发团队面临着前所未有的竞争压力和不断变化的市场需求。为了在这个激烈的环境中脱颖而出,团队需要高效协作并充分利用先进的工具来提高生产力和创新能力。 本文将为你盘点产品研发团队协作必备的10个提效工具,这…...
LSTM 与 GRU
RNN无法处理长距离依赖问题,通俗点就是不能处理一些较长的序列数据,那么今天就来介绍一下两个能处理长距离依赖问题地RNN变种结构,LSTM和GRU。 1. LSTM(Long short-term memory) 1.1 LSTM结构 上左图是普通RNN结构图…...
代码评审CheckList
代码评审CheckList Author: histonevonzohomail.com Date: 2023/10/24 此博客为笔者在工作中总结的经验,适用于笔者所在的工作,具体情况还需各位自己分析以下的分类并不规范,有好的建议可以给我Email值此1024祝全世界的开发者:天天…...
[尚硅谷React笔记]——第5章 React 路由
目录: 对SPA应用的理解对路由的理解前端路由原理路由的基本使用路由组件与一般组件NavLink的使用封装NavLink组件Switch的使用解决样式丢失问题路由的模糊匹配与严格匹配Redirect的使用嵌套路由向路由组件传递params参数向路由组件传递search参数.向路由组件传递st…...
如何去掉不够优雅的IF-ELSE
不够优雅的IF-ELSE: 在一个方法中根据两个参数的不同值组合来返回四种可能的类型,你可以使用条件语句,例如 if-else 语句或 switch 语句,来实现这个逻辑。以下是一个示例,假设你有两个参数 param1 和 param2ÿ…...
Python中defaultdict的使用
文章目录 Python 中的 defaultdict 与 dictPython 中的 defaultdict Python 中 defaultdict 的有用函数Python 中的 defaultdict.clear()Python 中的 defaultdict.copy()Python 中的 defaultdict.default_factory()Python 中的 defaultdict.get(key, default value) 今天的文章…...
【ccc3.8】虚拟列表
一个简单的虚拟列表,没有任何其他东西。 原理就是向上滚动时,将下面离开屏幕的那一个item塞到上侧来: 主代码仅有两个:ScrollList对应的滚动容器,ScrollListItem对应单项的预制体 当前支持两种:竖向滚动、…...
【23种设计模式】单一职责原则
个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…...
DNS入门学习:什么是TTL值?如何设置合适的TTL值?
TTL值是域名解析中的一个重要参数,TTL值设置的合理与否对于域名解析的效率和准确性有着非常重要的影响,因此对于网站管理者而言,了解什么是TTL值以及如何设置合理的TTL值对于做好域名解析管理,确保网站的安全稳定运行至关重要。 …...
ilr normalize isometric log-ratio transformation
visium_heart/st_snRNAseq/05_colocalization/create_niches_ct.R at 5b30c7e497e06688a8448afd8d069d2fa70ebcd2 saezlab/visium_heart (github.com) 更多内容,关注微信:生信小博士 The ILR (Isometric Log-Ratio) transformation is used in the anal…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
