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

相关文章

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

C++语法知识点合集:11.模板

文章目录 一、非类型模板参数1.非类型模板参数的基本形式2.指针作为非类型模板参数3.引用作为非类型模板参数4.非类型模板参数的限制和陷阱:5.几个问题 二、模板的特化1.概念2.函数模板特化3.类模板特化(1)全特化(2)偏特化(3)类模板特化应用示例 三、模板分离编译1.概念2.模板的分离编译 模版总结 一、非类型模板参数 模板参数分类类型形参与非类型形参 非类型模板

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

Hibernate框架中,使用JDBC语法

/*** 调用存储过程* * @param PRONAME* @return*/public CallableStatement citePro(final String PRONAME){Session session = getCurrentSession();CallableStatement pro = session.doReturningWork(new ReturningWork<C

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co