linux 嵌入式汇编,常用ARM汇编指令 - 嵌入式Linux教程_Linux教程_Linux公社-Linux系统门户网站...

news/2024/5/20 3:31:18/文章来源:https://blog.csdn.net/weixin_39748183/article/details/116770845

在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初始化,进出中断时的环境保护,恢复等对性能有要求的地方。

ARM指令集可以分为六大类,分别为数据处理指令、Load/Store指令、跳转指令、程序状态寄存器处理指令、协处理器指令和异常产生指令。

ARM指令使用的基本格式如下:

〈opcode〉{〈cond〉}{S}     〈Rd〉,〈Rn〉{,〈operand2〉}

opcode 操作码;指令助记符,如LDR、STR等。

cond 可选的条件码;执行条件,如EQ、NE等。

S 可选后缀;若指定“S”,则根据指令执行结果更新CPSR中的条件码。

Rd 目标寄存器。

Rn 存放第1操作数的寄存器。

operand2 第2个操作数

arm的寻址方式如下:

立即寻址

寄存器寻址

寄存器间接寻址

基址加偏址寻址

堆栈寻址

块拷贝寻址

相对寻址

这里不作详细描述,可以查阅相关文档。

数据处理指令

Load/Store指令

程序状态寄存器与通用寄存器之间的传送指令

转移指令

异常中断指令

协处理器指令

在S3C2410、S3C2440的数据手册中对各种汇编指令有详细的描述;这里只对较常见的作写介绍。

1、相对跳转指令:b、bl

这两条指令的不同之处在于bl指令除了跳转之外,还将返回地址(bl的下一条指令的地址)保存在lr寄存器中。

这两条指令的可跳转范围是当前指令前后32M。

b funa

....

funa:

b funb

....

funb:

....

2、数据传送指令mov,地址读取伪指令ldr

mov指令可以把一个寄存器的值赋给另外一个寄存器,或者把一个常数赋给寄存器。

mov r1, r2

/*上面是r1 = r2*/

mov r1,#1024

/*r1 = 1024*/

mov传送的常数必须能用立即数来表示。当不能用立即数表示时,可以用ldr命令来赋值。

ldr是伪命令,不是真实存在的指令,编译器会把它扩展成真正的指令;如果该常数能用“立即数”来表示,则使用mov指令,否则编译时将该常数保存在某个位置,使用内存读取指令把它读出来。

ldr r1, = 1024

/*r1 = 1024*/

3、内存访问指令 ldr、str、ldm、stm

ldr既可以指低至读取伪指令,也可以是内存访问指令。当他的第二个参数前面有'='时标伪指令,否则表内存访问指令。

ldr指令从内存中读取数据到寄存器,str指令把寄存器的指存储到内存中,他们的操作数都是32位的。

ldr r1, [r2, #4] /*将地址为r2+4的内存单元数据读取到r1中*/

ldr r1,[r2] /*将地址为r2的内存单元数据读取到r1中*/

ldr r1,[r2], #4/*将地址为r2的内存单元数据读取到r1中,然后r2=r2+4*/

str r1 ,[r2, #4]/*将r1的数据保存到地址为r2+4的内存单元中*/

str r1, [r2]/*。。。。*/

str r1, [r2],#4/*将r1的数据保存到地址为r2的内存单元,然后r2= r2+4*/

多寄存器传送指令可以用一条指令将16个可见寄存器(R0~R15)的任意子集合(或全部)存储到存储器或从存储器中读取数据到该寄存器集合中。与单寄存器存取指令相比,多寄存器数据存取可用的寻址模式更加有限。多寄存器存取指令的汇编格式如下:

LDM/STM{}  Rn{!}, 

4、加减指令 add、sub

add r1, r2, #1 /*r1=r2+1*/

sub r1, r2, #1 /*r1=r2-1*/

5、程序状态寄存器的访问指令msr,mrs

ARM指令中有两条指令,用于在状态寄存器和通用寄存器之间传送数据。修改状态寄存器一般是通过“读取-修改-写回”三个步骤的操作来实现的。 这两条指令分别是:

状态寄存器到通用寄存器的传送指令(MRS)

通用寄存器到状态寄存器的传送指令(MSR)

其汇编格式如下:

MRS{} Rd,CPSR|SPSR

其汇编格式如下:

MSR{} CPSR_f | SPSR_f,#<32-bit immediate>

MSR{} CPSR_ | SPSR_,Rm

msr cpsr, r0 /*复制r0到cpsr中*/

mrs r0, cpsr /*复制cpsr到r0中*/

6、异常中断指令

异常中断指令可以分为一下两种:

软件中断指令(SWI)

断点指令(BKPT—仅用于v5T体系)

软件中断指令SWI用于产生SWI异常中断,用来实现在用户模式下对操作系统中特权模式的程序的调用;断点中断指令BKPT主要用于产生软件断点,供调试程序用。

7、其他伪指令

.extern main

.text

.global _start

_start:

'.extern' 定义一个外部符号(可以是变量也可以是函数),上面的代码表示表文本文件中引用的main是一个外部函数。

'.text'表示下面的语句都属于代码段

'.global'将本文件中的某个程序标号定义为全局的,如‘_start’就是个全局函数0b1331709591d260c1c78e86d0c51c18.png

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

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

相关文章

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要的时…

SQL实战 9.高频SQL面试题 网站访客最近登录日期系列

最近登录日期(一) 描述 某网站每天有很多人登录&#xff0c;请你统计一下该网站每个用户最近登录是哪一天&#xff0c;用的是什么设备.有一个登录(login)记录表&#xff0c;简况如下:第1行表示user_id为2的用户在2020-10-12使用了客户端id为1的设备登录了该网站。。。第4行表示…

非英文网站如何使用MySQL的字符集

使用 MySQL字符集 对于非英文网站&#xff0c;当他们使用非英语语言从数据库中写入或读取数据时&#xff0c;常常必须解决字符集的问题。字符集指导数据库哪种字符编码方案用于数据的写入读取,这样可以简单地理解为字符集的一个子集整理&#xff0c;它告诉数据库如何存储数据。…

【杂记】一个不错的国外论文没费下载网站

Researchgate https://www.researchgate.net 搜索页面https://www.researchgate.net/search?q 比如搜索"virtual trackball" 下面这篇是我想要的 总结 还是非常好的一个网站&#xff0c;IT技术类的论文非常多&#xff01;

【C++】已编译好的OpenSSL Windows版分享网站

http://slproweb.com/products/Win32OpenSSL.html &#xff08;文章末尾附下载列表&#xff09; 说明&#xff1a; 例如&#xff1a;Win32 OpenSSL v1.1.1c -- 02.Win32OpenSSL-1_1_1c.exe安装后目录如下 基于此安装可以进行OpenSSL的二次开发&#xff0c;bin/lib/include开…

网络爬虫重庆交通大学新闻网站中所有的信息通知

目录一、创建anaconda虚拟环境二、爬虫怕爬取信息&#xff08;1&#xff09;爬取南阳理工学院ACM练习题目数据&#xff08;例子&#xff09;&#xff08;2&#xff09;爬取重庆交通大学新闻网站中所有的信息通知三、总结四、参考链接一、创建anaconda虚拟环境 1.打开Anaconda …

使用fiddler 去分析视频网站

目录一、VLC下载二、fiddler 去分析bilibili三、参考链接一、VLC下载 官网下载地址&#xff1a; https://www.videolan.org/vlc/ 一些公开的视频网址&#xff1a; 动画片 rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov 景点摄像头 https://hd-auth.s…

9个提高SEO文章的排名的写作方法和例子

爱发猫认为在开始编写文本之前&#xff0c;请做好充分的准备。 良好的准备对于顺利写出更高质量的文章至关重要。 有两点需要考虑。 准备写作 成为人物 考虑搜索意图 将构图视为一个角色 爱发猫认为写作时&#xff0c;你是否有一个先入为主的观念&#xff0c;即必须在固定…

如何通过6个简单步骤让百度收录你的网站

我们都依靠百度强大的搜索引擎来帮助我们度过我们的生活。从了解最新趋势到获得解决问题的建议&#xff0c;我们很难想象没有它我们会在哪里。很容易将此平台视为我们用来搜索有关其他人、地点或事件的信息的平台。然而&#xff0c;作为小企业主&#xff0c;您还需要积极思考人…

SEO关键词措施的20种方法

自社交媒体兴起以来&#xff0c;SEO关键词营销的有效性常常被忽视。 但是&#xff0c;从 SEO 收集的访问是一个具有高度使命感的人&#xff0c;因此与通过社交访问相比&#xff0c;会产生更高的转化率。 因此&#xff0c;通过不仅关注社交媒体措施而且关注搜索引擎措施&#…

爱发猫自动建站程序,自动发布,自动推送,自动收录

只要指定一组长尾词&#xff0c;自动建站系统会围绕这组长尾词继续挖掘长尾词并生成标题和内容。 包括内链系统&#xff0c;百度推送&#xff0c;自动图片。 爱发猫自助建站系统介绍https://www.zgybz.com/?id12 购买后客户会培训如何使用。下图是文章生成效果&#xff0c;带…

内容营销与SEO之间的区别

爱发猫认为内容营销和搜索引擎优化是经营网站的两个最重要的方面。 然而&#xff0c;内容营销常常被误解为吸引客户的一种手段&#xff0c;其含义也常常与搜索引擎优化相混淆。 在这篇文章中&#xff0c;我们将详细解释内容营销和SEO之间的区别&#xff0c;以便你能正确理解它。…

通过文章 seo 让您的博客提高收录的方法

“我尝试创作内容&#xff0c;但它没有出现在搜索引擎的首页。” 你在创作内容时有过这种感觉吗&#xff1f; 只要努力&#xff0c;就想稳稳拿下百度首页。 如果可以的话&#xff0c;你想把它放在第一页。 在这种情况下&#xff0c;推荐内容 seo&#xff01; 通过将其整合…

seo好收录的文章写作技巧

“我想采取 SEO 措施并将我的网站显示在搜索结果的顶部。” 您可能会担心“我想把写作作为副业&#xff0c;但如果我不知道 SEO 写作&#xff0c;可能很难找到工作”。 在这种情况下&#xff0c;我们建议您彻底学习一次 SEO 编写方法。 通过学习 SEO 写作&#xff0c;当您的网…

如何用长尾seo吸引客户

现在在家工作受到关注&#xff0c;许多人可能已经开始写博客和网络写作&#xff0c;可以在家里完成。 但是访问量并没有轻易增加&#xff0c;我要瞄准更高的显示&#xff01;你有这种感觉吗&#xff1f; 如果你努力工作&#xff0c;你想目标更高。 在这种情况下&#xff0c;…

博客文章需要标题标签如何在 seo 方面正确书写和附加

“你真的需要博客标题吗&#xff1f;” “我遇到了麻烦&#xff0c;因为我不知道如何写博客标题。” 你有过这样的感觉吗&#xff1f; 博客标题起着非常重要的作用&#xff0c;但是如果您知道如何正确地编写它们&#xff0c;它们将是许多人会看到的文章。 有了正确的标题&a…

网站手机端seo优化方法和技巧

作为一个寻求名声的网站所有者&#xff0c;从你选择创建一个网站的那一刻起&#xff0c;你就知道SEO&#xff08;搜索引擎优化&#xff09;是一个高度优先事项&#xff0c;这就是为什么现在是调整的好时机。SEO是一个不断发展的领域&#xff0c;百度对网站排名的方式有很多修改…

如何通过 6 个简单步骤在百度上看到您的网站

我们都依赖百度强大的搜索引擎来帮助我们管理我们的生活。从了解最新趋势到获得解决问题的建议&#xff0c;我们会发现很难想象没有它我们会在哪里。我们很容易认为这个平台是我们用来搜索关于其他人、地方或事件的信息的东西。然而&#xff0c;作为一个小企业主&#xff0c;你…

什么是反向链接,为什么它对 SEO 很重要?

我们大多数人都希望创建一个在百度搜索中排名靠前的网站。毕竟&#xff0c;拥有一个排名良好的网站是带来源源不断的新客户的有力途径。首先&#xff0c;你要看看我们的网站建设者&#xff0c;因为爱发猫为你的网站提供了最好的SEO。接下来&#xff0c;虽然没有神奇的公式来提高…