当前位置: 首页 > news >正文

ARM64 常见汇编指令学习 11 -- ARM 汇编宏 .macro 的学习

文章目录

    • ARM 汇编宏介绍
    • ARM 汇编宏的使用

下篇文章:ARM64 常见汇编指令学习 12 – ARM 汇编函数 的学习
上篇文章:ARM64 常见汇编指令学习 10 – 无符号位域提取指令 BFXIL

ARM 汇编宏介绍

在 ARM 汇编中,“.macro” 是用来定义一个宏的指令。宏可以看作是一个可以在汇编程序中重用的代码段。当调用宏时,汇编器会将宏的内容插入到调用位置。

一个简单的使用示例是:

.macro add_and_mov, dst, src1, src2 add \dst, \src1, \src2 mov \dst, \src1 
.endm

在这个例子中,我们定义了一个名为’add_and_mov’的宏,它接受三个参数:dstsrc1src2。宏的主体部分包含两条指令:‘add’和'mov’。使用的时候,只需要在程序中调用这个宏,传递相应的参数就可以了。例如:

add_and_mov x0, x1, x2

这将在汇编代码中插入"add x0, x1, x2"和"mov x0, x1"两条指令。

需要注意的是,“\dst”、“\src1"和”\src2" 是参数的引用,它们在宏被实例化(即在代码中被调用)时,会被替换为实际的操作数。同时,宏定义的结束需要用".endm"来标记。

ARM 汇编宏的使用

在代码调试的初期,由于没有串口,只能通过POST_CODE的方式进行调试,也即通过汇编向 memory 中写入数据,下面代码展示了如何使用 宏 POST_CODE 进行调试。

.macro  POST_CODE, valmov  x23, x0mov  x0, #\valbl   ASM_PFX(PostCode_S)mov  x0, x23
.endm//x0 postcode value
ASM_FUNC (PostCode_S)mov x24, x1mov x1, #0x87000000str x0,[x1]mov x1, x24retASM_FUNC(_ModuleEntryPoint)POST_CODE 0xE001

上面代码表示在调用 _ModuleEntryPoint 函数时候,会向地址 0x87000000 写入 0xE001d。其中 bl ASM_PFX(PostCode_S) 表示调用汇编函数 PostCode_S, 并且传给 函数 PostCode_S的参数是 x0的值(0xE001)。

关于 ASM_FUNC 的介绍见下篇文章:

下篇文章:ARM64 常见汇编指令学习 12 – ARM 汇编函数 的学习
上篇文章:ARM64 常见汇编指令学习 10 – 无符号位域提取指令 BFXIL

相关文章:

ARM64 常见汇编指令学习 11 -- ARM 汇编宏 .macro 的学习

文章目录 ARM 汇编宏介绍ARM 汇编宏的使用 下篇文章:ARM64 常见汇编指令学习 12 – ARM 汇编函数 的学习 上篇文章:ARM64 常见汇编指令学习 10 – 无符号位域提取指令 BFXIL ARM 汇编宏介绍 在 ARM 汇编中,“.macro” 是用来定义一个宏的指…...

数据库的分库分表

#!/bin/bash ######################### #File name:db_fen.sh #Version:v1.0 #Email:admintest.com #Created time:2023-07-29 09:18:52 #Description: ########################## MySQL连接信息 db_user"root" db_password"RedHat123" db_cmd"-u${…...

[Docker实现测试部署CI/CD----相关服务器的安装配置(2)]

目录 6、Jenkins安装配置安装jdk安装maven拉取镜像启动jenkins修改数据卷权限浏览器访问安装插件配置jenkins移动JDK和Maven配置JDK和Maven 6、Jenkins安装配置 Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作&…...

LC-980. 不同路径 III(回溯)

980. 不同路径 III 难度困难291 在二维网格 grid 上,有 4 种类型的方格: 1 表示起始方格。且只有一个起始方格。 2 表示结束方格,且只有一个结束方格。 0 表示我们可以走过的空方格。 -1 表示我们无法跨越的障碍。 返回在四个方向&…...

软件测试缺陷报告

缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告Software Bug Report(SBR)或软件问题报告Software Problem Report(SPR) 作用:缺陷报告是软件测试人员的工作成果之一,体现软件测试的价值缺陷报…...

vue js-table2excel 导出excel 可带多张图片

1.安装js-table2excel插件: npm install js-table2excel2.使用 2.1:引入 import table2excel from js-table2excel;2.2:导出函数 function exportExcel() {console.log(导出, table2excel);const column [{title: 二维码id,key: fname,type: text,},{title: 二维…...

HTML 基础标签

前言 当今互联网时代&#xff0c;网页是我们获取信息、交流和展示自己的重要渠道之一。而HTML&#xff08;超文本标记语言&#xff09;作为构建网页的基础&#xff0c;学习掌握HTML标签成为了必不可少的技能。 标题标签 <h1>~<h6>&#xff1a;这是用来定义标题的…...

Nginx使用proxy_cache指令设置反向代理缓存静态资源

场景 CentOS7中解压tar包的方式安装Nginx&#xff1a; CentOS7中解压tar包的方式安装Nginx_centos7 tar文件 怎么load_霸道流氓气质的博客-CSDN博客 参考上面流程实现搭建Nginx的基础上&#xff0c;实现静态资源的缓存设置。 注意上面安装时的目录是在/opt/nginx目录下&…...

React安装ant design组件库,并使用

ant design是一个很棒的组件库&#xff0c;官方地址&#xff1a;快速上手 - Ant Design 但是如何在React里面用起来&#xff0c;好像并不是很顺畅&#xff0c;没有像Vue里面那么友好&#xff0c;因为我踩过这个坑&#xff0c;虽然安装很简单&#xff0c;但是想要出样式&#x…...

Leetcode | 有效的括号、最长有效括号

一、有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应…...

思科模拟器配置静态路由(下一跳使用IP)

Router0配置代码&#xff1a;##端口配置 Router(config)#int fastEthernet 0/0 Router(config-if)#ip address 192.168.10.254 255.255.255.0 Router(config-if)#no shutdown Router(config-if)#int fastEthernet 0/1 Router(config-if)#ip address 192.168.20.1 255.255.255.2…...

MyBatis -- 执行流程

传统JDBC开发 代码样例 import java.sql.*;public class JdbcExample {public static void main(String[] args) {Connection conn DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");// 创建…...

springboot背诵

1、springboot简介 2、spring注解 Bean&#xff1a; Configuration&#xff1a; Component&#xff1a; Controller&#xff1a; Service&#xff1a; Repository&#xff1a; ComponentScan&#xff1a; Import&#xff1a; Conditional&#xff1a; ConfigurationProperties&…...

WebGL: 几个入门例子

本文罗列几个WebGL入门例子&#xff0c;用于帮助WebGL学习。 例子1&#xff1a;绘制三角形 <!DOCTYPE HTML> <html loang"en"><head><title>Triangle</title><meta charset"utf-8"><script>var gl;var canvas…...

App Cleaner Uninstaller for Mac 苹果电脑软件卸载工具

App Cleaner & Uninstaller 是一款非常有用的 Mac 应用程序清理和卸载工具。它可以彻底地清理系统中的应用程序、扩展和残留文件&#xff0c;以释放磁盘空间并优化系统性能。 此外&#xff0c;它还提供了磁盘空间监控和智能清理建议等功能&#xff0c;使用户可以轻松地管理…...

基于Yolov2深度学习网络的车辆检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1. 卷积神经网络&#xff08;CNN&#xff09; 4.2. YOLOv2 网络 4.3. 实现过程 4.4. 应用领域 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心…...

Java的I/O类库- NIO

Java NIO&#xff08;New I/O&#xff09;是Java平台提供的一种用于非阻塞I/O操作的API。它引入了一组新的Java类&#xff0c;用于实现高性能的、非阻塞的I/O操作&#xff0c;以替代传统的阻塞式I/O&#xff08;IO Blocking&#xff09;模型。Java NIO的核心是基于Channel&…...

【ASP.NET MVC】使用动软(三)(11)

一、问题 上文中提到&#xff0c;动软提供了数据库的基本操作功能&#xff0c;但是往往需要添加新的功能来解决实际问题&#xff0c;比如GetModel&#xff0c;通过id去查对象&#xff1a; 这个功能就需要进行改进&#xff1a;往往程序中获取的是实体的其他属性&#xff0c;比如…...

基于MATLAB长时间序列遥感数据植被物候提取与分析

MATLAB MATLAB是美国MathWorks公司出品的商业数学软件&#xff0c;用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人&#xff0c;控制系统等领域。 [1] MATLAB是matrix&laboratory两个词的组合&#xff0c;意为矩阵工厂&a…...

K8S deployment 重启的三种方法

一般重启deployment&#xff0c;常规操作是删掉对应的pod, 但如果有多个副本集的话&#xff0c;一个个删很麻烦。 除了删除pod&#xff0c;还可以&#xff1a; 方案一&#xff1a; 加上环境变量 kubectl patch deploy <deployment-name> -p {"spec":{"…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...