ARM汇编 4.GNU伪指令、内联汇编

汇编伪指令格式

标号symbol(label)

注释符号:@

整行注释:#

语句分离:;

立即数前缀:# 或 $

在这里插入图片描述

分段:.section伪操作,用于自定义新的段

  • .text:代码段
  • .data:初始化的数据段
  • .bss:未初始化的数据段
  • .rodata:字符串和#define定义的常量
  • heap、stack、常量段

汇编程序的缺省入口是**_start标号**

数据定义

在这里插入图片描述

杂项伪操作符:

在这里插入图片描述

.global 定义全局符号

.align 指定数据对齐方式

.include 引入头文件,也可以#include

.incbin 伪操作:将一个二进制文件编译到当前文件,用于静态库

.rept:重复接下来的指令,以.rept开始,.end结束

.if伪操作:根据表达式的值来决定是否要编译下面的代码

.macro伪操作:将一段代码定义为一个整体,类似c里面的宏函数

举例:

在这里插入图片描述

伪指令

不是标注的ARM指令,在编译时会转化为对应的其他ARM指令(可能对应多条ARM指令)

LDR伪指令:

ldr r1,=val @ r1 = val 把val标号地址赋给r1

ldr r2, val @ r2 = *val 把val地址的内容给r2

可以实现长跳转:ldr pc, = 32位地址

可以解决非立即数的问题:ldr r0,=0x999 @0x999不是立即数

在编译后查看机器码:

在这里插入图片描述

通过基址变址寻址的方式实现,即将0x999放在了40008008地址的位置,牺牲一个4字节空间实现

内联汇编

内联汇编即在 C 中直接使用汇编语句进行编程,使程序可以在 C 程序中实现 C 语言不能完成的一些 工作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

举例:

在这里插入图片描述

汇合汇编

使单独编译的C语言程序和汇编程序之间能够相互调用

ARM结构过程调用规范(APPCS):寄存器使用规则及相应名称、数据栈使用规则、参数传递的规则:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

例子如下:

在这里插入图片描述

参数传递是按照r0-r3寄存器进行传递,当超过4个参数,多余参数就要进栈,

返回值可以通过r0返回,当结果为64位时可以通过组合r0-r1方式,位数更多时需要调用内存,函数的返回地址存放在lr寄存器中。

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

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

相关文章

MP4格式视频怎么提取gif?一招教你在线做

MP4是一种常见的数字多媒体容器格式,它是一种使用最广泛的视频文件格式之一。MP4文件可以包含音频、视频和字幕等多种媒体数据,并且可以通过各种播放器和设备进行播放和共享。它是一种压缩格式,可以在保持相对较小文件大小的同时提供较高的视…

Java 的 Map 與 List

通過重新new 一個ArrayList 轉化 resTask.setList(new ArrayList<Group>(custMap.values())); 无序的Map List 有序的数据放到Map&#xff0c;就变成无序。 List排序 按照code 的字母进行排序A-Z resTask.getListData().sort(Comparator.comparing(Gmer::getCode));…

【vue】前后端不在同一网络下,前端解决跨域

前端解决跨域 1、vue.config.js中配置devServer devServer: {proxy: {"/api": {target: "http://xxx:端口", // 将请求代理到后端的地址changeOrigin: true,pathRewrite: {"^/api": "", // 如果后端接口不包含 /api 前缀&#xff0c;…

spring框架(一)

1、Spring框架&#xff1a;IoC和AOP 服务端三层开发&#xff1a;表现层、业务层、持久层 ssm, springboot, springcloud(微服务&#xff0c;治理组件) Spring框架是一个流行的Java应用程序框架&#xff0c;它提供了许多功能来简化企业级应用程序的开发。其中&#xff0c;控制反…

云服务之PaaS:它有几种类型,有什么区别?

PaaS种类繁多&#xff0c;包括公共PaaS、私有PaaS和混合PaaS&#xff0c;可以根据IT人员要求的方式提供所需工具&#xff0c;以实现更快地应用交付。 新兴科技的发展、移动端的深入应用&#xff0c;让人们对应用设备的需求不断增长&#xff0c;但在需求增长的同时&#xff0c;…

一键配置ssh免密登录脚本

ssh输入密码实在是太麻烦了&#xff0c;所以需要一键登录&#xff01; 举个简单例子&#xff0c;我想要ssh root192.168.1.2&#xff0c;如果你添加过SSH密钥的话&#xff0c;可以直接通过ssh-copy-id 192.168.1.2实现免密登录&#xff0c;全文完&#xff01; 但但是&#xf…

全套军事和民用监听系统

Python全套军事和民用监听系统的研发开发具有重要性的原因如下&#xff1a; 监听系统在军事和民用领域中具有广泛的应用。军事方面&#xff0c;监听系统可用于收集敌方情报、监测通信网络、进行电子战等&#xff0c;对于提高作战效能和获取情报优势至关重要。民用方面&#xff…

大数据-Spark-关于Json数据格式的数据的处理与练习

上一篇&#xff1a; 大数据-MapReduce-关于Json数据格式的数据的处理与练习-CSDN博客 16.7 Json在Spark中的引用 依旧利用上篇的数据去获取每部电影的平均分 {"mid":1,"rate":6,"uid":"u001","ts":15632433243} {"m…

【DC-DC】AP5165B 高端电流采样 36V/1A 高调光比LED恒流驱动IC SOT89-5

产品应用原理图 5-36V耐压 3W射灯应用线路图 产品描述 AP5165B 是一款外围电路简单的连续电流模式的降压型 LED 恒流驱动芯片。在输入电压高于LED 电压时&#xff0c;可以有效地用于驱动一颗或者多颗串联 LED。输出电流可调&#xff0c;可达 1A。适用于3-36V 电压范围的非隔离…

QGIS编译(跨平台编译)之二十七:giflib编译(Windows、Linux、MacOS环境下编译)

文章目录 1、giflib介绍2、giflib下载3、Windows下编译4、Linux下编译5、MacOS下编译1、giflib介绍 giflib(又称为Libgif)是一个开源的C语言库,用于处理GIF图像格式。它提供了一组函数和工具,使得开发者可以读取、写入和操作GIF图像文件。 GIFlib支持GIF87a和GIF89a两种版…

Rust中的Anyhow库实践:轻松处理错误与自定义Error类型

一、anyhow库的基本使用 anyhow库提供了一个便捷的Error类型——anyhow::Error&#xff0c;它是一个trait对象&#xff0c;可以容纳任何实现了std::error::Error trait的类型。这意味着你可以方便地将各种不同类型的错误包裹进一个统一的错误类型中&#xff1a; use anyhow::…

Windows系统中如何提取文件夹中所有文件名

如何提取文件夹中所有文件名 在 Windows 操作系统中&#xff0c;提取文件夹中所有文件名可以通过命令提示符&#xff08;CMD&#xff09;来轻松完成。下面是具体的步骤&#xff1a; 打开命令提示符&#xff08;CMD&#xff09; 按下 Win R 组合键&#xff0c;然后输入 cmd 并…

初始化爱情的构造之旅

初始化爱情的构造之旅 The Constructive Journey of Initializing Love 在一个名为“编程之城”的奇幻世界里&#xff0c;住着两位年轻的程序员——林浩然和杨凌芸。林浩然是Java王国中的首席对象设计师&#xff0c;擅长用代码构建复杂而精巧的对象&#xff1b;而杨凌芸则是数据…

探索云性能测试的各项功能有哪些?

云性能测试作为现代软件开发和部署过程中不可或缺的一环&#xff0c;为确保系统在各种条件下的高效运行提供了关键支持。本文将介绍云性能测试的各项功能&#xff0c;帮助您更好地了解其在软件开发生命周期中的重要性。 1. 负载测试 云性能测试的首要功能之一是负载测试。通过模…

GB/T 38297-2019 建筑用单元门检测

建筑用单元门是指用于建筑楼寓单元的出入口&#xff0c;能在一定时间内抵御一定条件下非正常开启或暴力入侵的外门。 GB/T 38297-2019 建筑用单元门检测项目 测试项目 测试标准 外观 GB/T 38297 尺寸 GB/T 38297 装配质量 GB/T 38297 防破坏性能 GB/T 38297 防闯入性…

漏洞挖掘账号注册流程

漏洞挖掘账号注册流程 提交漏洞的平台有很多,以下是一些常见的平台: 1. HackerOne:全球最大的漏洞赏金平台,有很多大型公司和组织参与,提供了丰厚的奖金和奖励。 2. Bugcrowd:另一个知名的漏洞赏金平台,有众多公司和组织参与,提供了多种形式的奖励。 3. Open Bug Bount…

Windows Server 2003 FTP服务器搭建

系列文章目录 目录 系列文章目录 文章目录 前言 一、FTP服务器是什么&#xff1f; 二、配置服务器 1.实验环境搭建 6)再次测试网络连通性 2.服务器搭建 1)控制面板中找到增加或删除程序打开 2)点击增加程序 3)安装FTP服务器 6)找到刚自己设定的路径下的文件夹,上传…

电销机器人的未来发展趋势

随着科技的不断进步&#xff0c;人工智能已经渗透到我们生活中的方方面面。 电销机器人是一个被广泛应用的人工智能技术。 它不仅可以提高企业的销售效率&#xff0c;降低企业成本&#xff0c;还可以提高客户满意度。 电销机器人有哪些功能&#xff1a; 1、自动外呼 一天自…

C语言——文件操作(看这一篇就够了)

1、为什么使用文件&#xff1f; 我们前面学习结构体&#xff0c;在写通讯录的时候会发现一个问题&#xff0c;我们向通讯录里面录入数据&#xff0c;当程序退出的时候&#xff0c;记录的数据也随之没有了&#xff0c;等下次我们在再调用通讯录时&#xff0c;又得重新录入数据&…

Java基于SpringBoot的学科竞赛系统,附源码,文档

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…