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

news2024/11/24 1:04:03

汇编伪指令格式

标号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.coloradmin.cn/o/1422664.html

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

相关文章

【服务端性能测试】性能测试策略如何做

一、需求收集 先需要确认本次测试目的是什么,然后再看我们需要用什么参数来判断这个目的是否能够达成。 1.1 业务性能指标参考: TPS、QPS、RT、请求成功率(一般请求成功率>99.99%) 1.2 硬件性能指标参考: 即服…

C++ 滑动窗口

目录 1、209. 长度最小的子数组 2、3. 无重复字符的最长子串 3、1004. 最大连续1的个数 III 4、1658. 将 x 减到 0 的最小操作数 5、904. 水果成篮 6、438. 找到字符串中所有字母异位词 7、30. 串联所有单词的子串 8、76. 最小覆盖子串 1、209. 长度最小的子数组 思路&…

超越传统—Clean架构打造现代Android架构指南

超越传统—Clean架构打造现代Android架构指南 1. 引言 在过去几年里,Android应用开发经历了巨大的变革和发展。随着移动设备的普及和用户对应用的期望不断提高,开发人员面临着更多的挑战和需求。传统的Android架构在应对这些挑战和需求时显得有些力不从…

计算机网络-物理层传输介质(导向传输介质-双绞线 同轴电缆 光纤和非导向性传输介质-无线波 微波 红外线 激光)

文章目录 传输介质及分类导向传输介质-双绞线导向传输介质-同轴电缆导向传输介质-光纤非导向性传输介质小结 传输介质及分类 物理层规定电气特性:规定电气信号对应的数据 导向传输介质-双绞线 双绞线的主要作用是传输数据和语音信息。它通过将两根导线以特定的方…

【Effective Objective - C】—— 协议与分类

【Effective Objective - C】—— 协议与分类 23.通过委托与数据源协议进行对象间通信协议委托模式数据源模式 要点 24.将类的实现代码分散到便于管理的数个分类之中要点 25.总是为第三方类的分类名称加前缀要点 26.勿在分类中声明属性要点: 27.使用 “class-contin…

cleanmymacX有必要买吗

CleanMyMac X是一款被广泛推荐的Mac电脑清理软件。以下是关于是否购买CleanMyMac X的几个关键点: 软件功能:CleanMyMac X具备多项功能,包括但不限于系统垃圾清理、缓存清理、恶意软件移除、隐私保护等。这些功能有助于保持Mac电脑的清洁和性能…

数据可视化市场概览:五款主流工具的优缺点解析

在数据可视化的世界中,选择一款合适的工具对于提升工作效率和洞察力至关重要。本文将为您介绍五款主流数据可视化工具,包括山海鲸可视化、Echarts、D3.js、Tableau和Power BI,并进行详细比较,帮助您做出明智的选择。 山海鲸可视化…

【数据结构】(二)线性表List

目录 1、基本概念 2、栈(Stack) 3、队列(Queue) 4、串(String) 1、基本概念 (1)线性表是零或多个数据元素的有限序列。 (2)数组长度指存储空间长度&…

一键给家长私发成绩

各位老师,你们是否也有过这样的经历:每到考试后,为了将学生的成绩一一发给家长,费尽心思地整理、核对,甚至有时候还要加班。如今,有了易查分,这一切似乎变得轻松起来。但这个功能真的是老师们的…

【教学类-44-04】20240130 print dashed(虚线字体)制作的数字描字帖

作品展示:背景需求: 制作绿色数字的数字描字帖 选用字体:print dashed(虚线字体) 【教学类-44-03】20240111阿拉伯数字字帖的字体(三)——德彪钢笔行书(实线字体)和pri…

Java玩转《啊哈算法》排序之快速排序

心无挂碍,无挂碍故,无有恐怖,远离颠倒梦想,究竟涅槃。 地图 引子代码地址快速排序核心代码优劣完整代码演示 课后习题 引子 搭嘎好!本人最近看的《啊哈算法》这本书写的确实不错,生动形象,在保…

详解SpringCloud微服务技术栈:深入ElasticSearch(2)——自动补全、拼音搜索

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:详解SpringCloud微服务技术栈:深入ElasticSearch(1)——数据聚合 📚订阅专栏&…

STM32——温湿度LCD显示并上传手机

STM32——温湿度LCD显示并上传手机 1.LCD1602 硬件接线 D0~D7 – A0~A7 RS – B1 RW – B2 EN – B10 V0 – GND(正视看不到显示结果,需要侧着看。否则需要接可调电阻) 引脚封装 RS、RW、EN三根信号线经常需要进行拉高/拉低操作&…

JAVAEE初阶 网络编程(八)

IP协议 认识IP协议 在认识IP协议之前,我们首先要明确IP协议的工作范围或者是用途。 (1) 地址管理:使用一套地址体系,来描述互联网上各个设备所处的为止。 (2) 路由选择:数据包如何从…

使用linux进程管理工具supervisor管理你的多个应用进程(支持web界面)

前言 supervisor可以帮你管理进程,你只需要编写配置文件,supervisor便可以方便控制启动,暂停,重启某个进程,你可以编写进程启动命令,来控制supervisor要进行的操作 流程 安装 sudo yum update sudo yum…

U2net:Going deeper with nested u-structure for salient object detection

u2net是目前stable-diffusion-webui默认的抠图算法,但是在电商图场景实测下来,效果是很一般的。 1.introduction 1.能否设计一个新的网络用语SOD,允许从头训练;2.保持高分辨率特征图的同时网络更深。U2net是一种为SOD设计的两级…

3671系列矢量网络分析仪

01 3671系列矢量网络分析仪 产品综述: 3671系列矢量网络分析仪产品包括3671C(100kHz~14GHz)、3671D(100kHz~20GHz)、3671E(100kHz~26.5GHz)、3671G&#x…

性能评测工具+数据库主从复制方案

PTS(Performance Testing Service) 面向所有技术背景人员的云化测试工具 MSQL MGR 8.0 高可用 对性能影响比较大的参数 MyBatis 数据库主从复制 解决方案1 方案2 主从复制经典架构

Gateway API 实践之(六)FSM Gateway 的健康检查功能

FSM Gateway 流量管理策略系列: 故障注入黑白名单访问控制限速重试会话保持健康检查负载均衡算法TLS 上游双向 TLS 网关的健康检查功能是一种自动化监控机制,用于定期检查和验证后端服务的健康状况,确保流量只被转发到那些健康且能正常处理请…

机器学习算法-----K-近邻算法

1.1 K-近邻算法简介 1.定义: 就是通过你的"邻居"来判断你属于哪个类别 2.如何计算你到你的"邻居"的举例 一般时候,都是使用欧氏距离 1.2k近邻算法api初步使用 1.sklearn 优势: 1.文档多,且规范&#xff0c…