首页
视频
资源
登录
原
GNU ARM 汇编伪指令
464
人阅读
2024/6/27 10:09
总访问:
2971518
评论:
0
收藏:
0
手机
分类:
嵌入式
![](https://img.tnblog.net/arcimg/hb/6930d1439f4b43e785a433685b813262.png) >#GNU ARM 汇编伪指令 [TOC] GNU ARM 汇编伪指令 ------------ | 汇编指令 | 描述 | | ------------ | ------------ | | `.section` | 定义内存段 | | `.text` | 将定义符开始的代码编译到代码段 | | `.data` | 数据段 | | `.if .else .endif` | 条件编译 | | `.end` | 文件结束 | | `.byte 0x11,'a',0` | 定义char类型数组(.byte对应的1字节) | | `.word 0x12,0x445566` | 定义int型类型(.word 对应4字节) | | `.string "abcd\0"` | 定义字符串 | | `.align 4` | 4字节对齐 | | `ldr r0,=0xE0028008` | 载入大常数0xE0028008到r0中 | | `.equ GPG3CON,0xE03001C0` | 定义宏 | | `.global _start` | 声明__start为全局符号 | tn2>示例代码: ![](https://img.tnblog.net/arcimg/hb/a7e821e5c39845849e64fe6f204fe337.png) ### 批量操作指令 tn2>`ldmia r0!,{r3 - r10}` r0里的地址指向的内容批量,load到r3~r10寄存器中,!表示r0里地址自动加4 `stmia r0!,{r3 - r10}` 把r3~r10寄存器中内容,store到r0里地址执行空间中,r0里地址会自动加4 接下来我们通过一个示例进行示范。 ![](https://img.tnblog.net/arcimg/hb/816b27c3bced48eea46433f061a95308.png) ```bash .text b main nop nop nop nop nop nop nop main: ldr r12,=srcBuf ldr r13,=dstBuf @ ldmia r12!,{r0,r1,r3} ldmia r12!,{r0 - r11} stmia r13!,{r0 - r11} main_end: b main_end .data .align 4 srcBuf: .string "abcdefghijklmnopqrstuvwxyz\0" dstBuf: .space 12*4 .end ``` tn2>当我们执行到`ldmia r12!,{r0 - r11}`之前,我们可以通过`r12`保存的字符串地址在内存中查看一下数据的情况。 ![](https://img.tnblog.net/arcimg/hb/e98ae584d0154b87b0eabeb44519a02e.png) tn2>我们可以转成`Ascii`码查看一下。 ![](https://img.tnblog.net/arcimg/hb/d0338dbd6bc141f684d8869710e82b41.png) ![](https://img.tnblog.net/arcimg/hb/1820d721c7a54e93853d07274f8ffbff.png) tn2>然后执行下一条指令,将值赋值到r0到r11之间的寄存器中,查看一下我们的寄存器。 ![](https://img.tnblog.net/arcimg/hb/6268f70892b547c5acfe0c3cab098cb8.png) tn2>再执行下一条指令,将值赋值到r13指定的内存地址中,并查看一下r13指定的内存地址。 ![](https://img.tnblog.net/arcimg/hb/f78ae4cf138347dba7325d69acd27fc1.png) ### 堆栈操作指令 tn2>`stmfd sp!,{r0-r12,lr}`将寄存器r0~r12 lr中的值存入栈中,常用于中断保护现场,`!`表示会自动偏移。 `ldmfd sp!,{r0-r12,pc}`将栈中值逐个弹出到寄存器r0~r12 pc中,常用于恢复保护现场,`^`表示会恢复spsr到cpsr。 ![](https://img.tnblog.net/arcimg/hb/af6ef81cbb58442e863f05a357a5b6cc.png) ### 软中断指令 tn2>`swi 0x02`产生软中断,调用操作系统编号为02的系统例程。 ![](https://img.tnblog.net/arcimg/hb/74648047b07c442f815213bb52b94856.png)
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
177篇
linux
18篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
5篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
39篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
19篇
threejs
2篇
人物
1篇
嵌入式
20篇
python
20篇
HuggingFace
8篇
pytorch
10篇
opencv
6篇
Halcon
5篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术