ARM 汇编 调用约定ABI与汇编语法

2024-05-27 15:32
文章标签 语法 调用 arm 约定 汇编 abi

本文主要是介绍ARM 汇编 调用约定ABI与汇编语法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

汇编语法

综述

一个架构出来之后,就有一个指令集.然后就有指令集助记符
然后就有编译器和汇编器.
编译器: .c   -> 汇编
汇编器: 汇编 -> 二进制汇编的编写规则 是受 汇编器 决定的
一般来说,我们创建一个 架构和指令集助记符 .假设架构叫 xxx , 且我们有自己的汇编器, 那么 我们可以创建一个汇编语法 叫 xxx 语法(syntax)但是如果我们想 接入 gcc , 然后  我们就需要 gnu syntax 来 写汇编了例如 arm& intel 就有私有的 汇编器(armasm &nasm) . arm 就有 arm语法 , intel 就有 intel 语法 . 
但是如果arm和intel要接入gas,那必须用 gnu 语法(也叫AT&T 语法)

常见的汇编语法

  • intel 语法

  • AT&T语法
GAS是GCC编译器的汇编
  • ARM语法
armasm 编译的汇编代码的 语法
被 AC5 和 AC6 支持
arm 语法 也叫  Unified Assembly Language(UAL)
  • 三种语法的区别

汇编器

intel 语法x86 windows vcx86 nasm
arm 语法arm armasm(AC5)AC6(arm clang)gnu 语法 (AT&T语法)x86-gnu-asarm-gnu-asAC6(arm clang)

调用约定

调用约定,类型表示和名称修饰这三者的统称
即是总所周知的应用二进制接口(ABI)
AAPCS64
ATPCS
odecl
optlink
stdcall
fastcall

调用约定实例

x64 汇编使用 fastcall
x86汇编使用1. caller clean-up stackcdecloptlink2. callee clean-up stackstdcallfastcall
arm64汇编使用 AAPCS64
arm汇编使用 ATPCS

这篇关于ARM 汇编 调用约定ABI与汇编语法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007868

相关文章

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

在C#中调用Windows防火墙界面的常见方式

《在C#中调用Windows防火墙界面的常见方式》在C#中调用Windows防火墙界面(基础设置或高级安全设置),可以使用进程启动(Process.Start)或Win32API来实现,所以本文给大家... 目录引言1. 直接启动防火墙界面(1) 打开基本防火墙设置(firewall.cpl)(2) 打开高

python调用dubbo接口的实现步骤

《python调用dubbo接口的实现步骤》本文主要介绍了python调用dubbo接口的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录 ​​其他实现方式与注意事项​​ ​​高级技巧与集成​​用 python 提供 Dubbo 接口

C# FTP调用的实现示例

《C#FTP调用的实现示例》本文介绍了.NET平台实现FTP/SFTP操作的多种方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1. 使用 .NET 自带 FtpWebRequest 实现 FTP 操作1.1 文件上传1.2

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

使用Go调用第三方API的方法详解

《使用Go调用第三方API的方法详解》在现代应用开发中,调用第三方API是非常常见的场景,比如获取天气预报、翻译文本、发送短信等,Go作为一门高效并发的编程语言,拥有强大的标准库和丰富的第三方库,可以... 目录引言一、准备工作二、案例1:调用天气查询 API1. 注册并获取 API Key2. 代码实现3

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制