Intel汇编和ATT汇编的区别?

一、前缀不同

在 Intel 语法中,没有寄存器前缀或立即前缀。 然而,在 AT&T 中,寄存器的前缀是“%”,而 immed 的前缀是“$”。 Intel 语法十六进制或二进制即时数据分别带有“h”和“b”后缀。 此外,如果第一个十六进制数字是字母,则该值前面带有“0”前缀。

例如下面这个表格:

二、 操作数的位置不同

Intel 语法中操作数的方向与 AT&T 语法中的操作数方向相反。 在 Intel 语法中,第一个操作数是目标,第二个操作数是源,而在 AT&T 语法中,第一个操作数是源,第二个操作数是目标。 AT&T 语法在这种情况下的优势是显而易见的。 我们从左到右读,从左到右写,所以这种方式很自然。

三、内存操作数的写法不同

上面看到的内存操作数也不同。 在 Intel 语法中,基址寄存器包含在'[' and ']' 中,而在 AT&T 语法中,基址寄存器包含在'(' and ')' 中。 

与 Intel 语法相比,涉及复杂操作的指令的 AT&T 形式非常晦涩难懂。

Intel 语法形式是 segreg:[base+index*scale+disp]

AT&T 语法形式为 %segreg:disp(base,index,scale)

Index/scale/disp/segreg 都是可选的,可以简单地省略。如果未指定且指定了索引,则比例默认为 1。Segreg 取决于指令以及应用程序是否在实模式或 pmode 下运行。 在实模式下它取决于指令,而在p模式下则不需要。 当用于缩放/显示时,使用的立即数据不应在 AT&T 中添加“$”前缀。 

例如下面的表格:

如你所见,AT&T 非常晦涩。

英特尔汇编[base+index*scale+disp] 明显比AT&T汇编disp(base,index,scale) 更容易理解。

 四、后缀不同

您可能已经注意到,AT&T 语法助记符有一个后缀。 该后缀的意义在于操作数的大小。 “l”代表长,“w”代表字,“b”代表字节。 Intel 语法具有与内存操作数类似的指令,即字节 ptr、字 ptr、双字 ptr。 “dword”当然对应于“long”。 这类似于 C 中的类型转换,但它似乎没有必要,因为所使用的寄存器的大小是假定的数据类型。

 最后讲两个单词,HEX是16进制的意思,Intel汇编的H后缀也是这么来的,HEX是Hexadecimal的缩写。Binary是二进制的意思,Intel汇编的B后缀是这个单词。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/67141.html

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

相关文章

算法通关村第七关——递归和迭代实现二叉树前中后序遍历

1.递归 1.1 熟悉递归 所有的递归有两个基本特征: 执行时范围不断缩小,这样才能触底反弹。终止判断在调用递归的前面。 写递归的步骤: 从小到大递推。分情况讨论,明确结束条件。组合出完整方法。想验证就从大到小画图推演。 …

使用AffNet和HardNet进行图像匹配

一、说明 我们有一个任务是找到与给定查询图像最匹配的图像。首先,我们在OpenCV中尝试了使用SIFT描述符和基于Flann的匹配器的经典图像匹配。结果是完全错误的。然后是词袋...最后,找到了AffNet和HardNet。 二、关于AffNet和HardNet 本文专门介绍如何进…

【枚举倍数+容斥】CF803 F

Problem - F - Codeforces 题意: 思路: 正难则反,考虑容斥 即考虑gcd ! 1的所有子序列个数 因为子序列内部无序,因此不算真正的子序列,考虑枚举倍数 根据经典套路,我们去枚举 gcd,然后去枚…

win10下如何安装ffmpeg

安装ffmpeg之前先安装win10 绿色软件管理软件:scoop. Scoop的基本介绍 Scoop是一款适用于Windows平台的命令行软件(包)管理工具,这里是Github介绍页。简单来说,就是可以通过命令行工具(PowerShell、CMD等…

Pytorch安装教程:最新保姆级教程

目录 概述 重要的事情说三遍:不需要装cuda、不需要装cuda、不需要装cuda 1.查看自己NVIDIA版本 2.创建一个conda 环境 3.安装pytorch 本文意在帮助即将步入深入学习领域的学子 在这之前首先你需要安装好anaconda,不懂的可以下面这篇文章 最新Anaco…

C语言的动态分配空间C++的动态分配空间问题

动态分配空间 C:1、malloc 2、calloc C:new运算符 一 malloc malloc(): 这个函数用于分配一块指定大小的内存块,并返回一个指向该内存块的指针。语法如下: void* malloc(size_t size); 示例: int* ptr …

【软件测试】我的2023面试经验谈

最近行业里有个苦涩的笑话:公司扛过了之前的三年,没扛过摘下最近的一年,真是让人想笑又笑不出来。年前听说政策的变化,大家都满怀希望觉得年后行情一片大好,工作岗位激增,至少能有更多的机会拥抱未来。然而…

nodejs+vue+elementui美食网站的设计与实现演示录像2023_0fh04

本次的毕业设计主要就是设计并开发一个美食网站软件。运用当前Google提供的nodejs 框架来实现对美食信息查询功能。当然使用的数据库是mysql。系统主要包括个人信息修改,对餐厅管理、用户管理、餐厅信息管理、菜系分类管理、美食信息管理、美食文化管理、系统管理、…

android app控制ros机器人五(百度地图)

半吊子改安卓,新增了标签页,此标签页需要显示百度地图 按照官方教程注册信息,得到访问应用AK,步骤也可以参照下面csdn Android地图SDK | 百度地图API SDK 【Android】实现百度地图显示_宾有为的博客-CSDN博客 本人使用的是aar开…

metaRTC7 demo mac/ios编译指南

概要 metaRTC7.0开始全面支持mac/ios操作系统,新版本7.0.023 mac os demo 包含有srs/zlm的推拉流演示。发布版自带了x64版第三方类库,arm版第三方类库还需开发者自己编译。 源码下载 下载文件metartc7.023.7z https://github.com/metartc/metaRTC/re…

htmlCSS-----弹性布局

目录 前言 什么是弹性布局 样式 学习概要 容器和项目 弹性布局的排列方式 1.横向排列(默认样式) 2.父元素容器的属性(*5) (1)主轴 代码示例: (2)交叉轴 3.子元素…

Android 网络编程-网络请求

Android 网络编程-网络请求 文章目录 Android 网络编程-网络请求一、主要内容二、开发网络请求前的基本准备1、查看需要请求的网址是否有效(1)通过网页在线验证(2)使用专用window网咯请求工具(3)编写app代码…