学习汇编的目的:初始化C语言运行环境。

GNU汇编语法

label:instruction@comment
label:标号,表示地址位置,有些指令前面可能会有标号
instruction:指令,即汇编指令或者伪指令
@:注释符号
comment:注释内容
示例代码:
add:
MOVS R0, #0X12 @设置 R0=0X12

注意! ARM中的指令、伪指令、伪操作、寄存器名等可以全部使用大写,也可以全部使用
小写,但是不能大小写混用。

用户可以使用.section伪操作来定义一个段,汇编系统预定义了一些段名:
.text 表示代码段
.data 表示初始化的数据段
.base 表示未初始化的数据段
.rodata 表示只读数据段

Contex-A7常用的汇编指令

  处理器做的最多的事情就是在处理器内部来回传递数据,常见的操作有:

  1. 将数据从一个寄存器传递到另一个寄存器。
  2. 将数据从一个寄存器传递到特殊寄存器,如CPSR和SPSR.
  3. 将立即数传递到寄存器。
    数据传输常用的指令有三个:MOV、MRS、MSR.

处理器内部传输指令

指令 目的 描述
MOV R0 RI 将R1里面的数据复制到R0中
MRS R0 CPSR 将特殊寄存器CPSR里面的数据复制到R0
MSR CPSR RI 将R1里面的数据复制到特殊寄存器CPSR里

存储器访问指令

指令 描述
LDR Rd, [Rn , #offset] 从存储器Rn+offset的位置读取数据存放到 Rd中
STR Rd, [Rn, #offset] 将Rd中的数据写入到存储器中的 Rn+offset位置。

压栈和出栈指令

指令 描述
PUSH 将寄存器列表入栈
POP 从栈中恢复寄存器列表

PUSH 和POP 的另外一种写法是“STMFD SP!”和“LDMFD SP!”。

跳转指令

  有多种跳转指令

  1. 直接使用调转指令B、BL、BX等。
  2. 直接向PC寄存器里面写入数据。
指令 描述
B 调转到label,如果跳转范围超过+/-2KB,可以指定B.W使用32版本的跳转指令,这样可以得到较大范围的跳转
BX 间接跳转,跳转到存放Rm中的地址处,并且切换指令集
Bl 跳转到标号地址,并将返回地址保存在LR中
BlX 结合BX和BL的特点,跳转到Rm指定的地址,并将返回地址保存在LR中,切换指令集

Alientek I.MX6UL Linux- 第七章 ARM汇编基础相关推荐

  1. 第七章 ARM 反汇编基础(七)(AArch64 汇编指令集)

    文章目录 AArch64 汇编指令集 AArch64 指令编码 AArch64 指令格式解析 AArch64 汇编指令集 arm64-v8a 对应两套架构的指令集 AArch32(简称"A3 ...

  2. Linux 第七章-磁盘分区和格式化

    Linux 第七章 磁盘与文件系统管理 1.磁盘分区与格式化 ​ 在Linux中,当现有的硬盘分区不能满足要求时,就需要对硬盘中的分区进行重新的规划与调整,有时候还需要添加新的硬盘来扩展存储空间. 1 ...

  3. 【汇编实战开发笔记】ARM汇编基础的三大块知识

    文章目录 1 前言 2 ARM知识图谱 3 ARM汇编基础三大块 3.1 寻址方式 3.1.1 立即寻址 3.1.2 寄存器寻址 3.1.3 寄存器偏移寻址 3.1.4 寄存器间接寻址 3.1.5 基 ...

  4. 第七章、 面向对象基础--下(续) 内部类、枚举、注解

    文章目录 内容 学习目标 第七章 面向对象基础--下(续) 7.7 内部类 7.7.1 概述 7.7.1 非静态成员内部类 练习1:语法练习题 练习2:简单面试题 练习题3:高难面试题 7.7.2 静 ...

  5. ARM汇编基础详解(PS学习汇编的原因)

    目录 前言 1.GNU 汇编语法 2.Cortex-A7 常用汇编指令 2.1 处理器内部数据传输指令(内部寄存器数据非内存数据) 2.2 存储器访问指令(RAM) 2.3 压栈和出栈指令(了解) 2 ...

  6. ARM 汇编基础教程番外篇 ——配置实验环境

    From:https://zhuanlan.zhihu.com/p/29145513 win10 arm 汇编环境 Windows 平台下搭建 ARM 汇编集成环境:https://jingyan.b ...

  7. 非虫 android应用逆向,android逆向-ARM汇编基础-非虫笔记

    这里是非虫笔记本,对学习知识的一种总结.有机会可以一起学习. ARM汇编(非虫笔记) 1.ARM汇编的目的: 分析elf文件的需要. 2.原生程序生成过程. (1)预处理,编译器处理c代码中的预处理指 ...

  8. linux第七章《档案与目录管理》重点回顾

    转载于:https://www.cnblogs.com/wubingshenyin/p/4514969.html

  9. LINUX 第七章 Squid配置

    见附件.... 转载于:https://blog.51cto.com/ywf860712/295745

最新文章

  1. 书评 —— 深入网站开发和运营
  2. wordpress中文乱码处理方法
  3. nginx error_log 错误日志配置说明
  4. micropython驱动lcd_k210 编译micropython LCD驱动失败
  5. c语言左移15位,关于c语言中左移右移运算符的问题
  6. flume使用telnet作为入口出现connection refused
  7. python博客访问量_史诗级干货-python爬虫之增加CSDN访问量
  8. java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...
  9. 电子科大计算机考研考英语几,11年电子科大计算机考研经验_跨考网
  10. android service 本地 远程 总结
  11. vscode如何使用命令面板
  12. 安装pycrypto 2.6.1各种坑
  13. python输出名片_Python的格式化输出--制作名片
  14. The summary of Interview
  15. Session过期,跳出iframe框架页显示会话过期页面
  16. python 改变图片像素值
  17. 多项式承诺Polynomial commitment方案汇总
  18. spring学期总结
  19. 想当然很可怕,根子还是思考上的懒惰
  20. 计算机的休眠和睡眠时间在那调,电脑休眠状态跟睡眠状态的区别及唤醒方法

热门文章

  1. PHP最新B站视频直链解析源码下载+亲测可用
  2. 热门软件看点:花季护航蹿红解读
  3. IE无法打开网页的原因
  4. 关于EXECryptor参数设置的问题
  5. 2021年危险化学品经营单位主要负责人找解析及危险化学品经营单位主要负责人考试技巧
  6. 计算机学院特色标题,新颖的大学计算机教学论文选题 大学计算机教学论文标题怎么定...
  7. 服务器篇(windows server 2012系统安装)
  8. [转]地球坐标 火星坐标 百度坐标 相互转换
  9. 金额及日期大写的正确写法
  10. 小本经营如何获得银行贷款?