ARM汇编指令、指令中s后缀的作用、N、Z、C、V位有什么作用、ARM汇编启动代码

ARM汇编指令

学习arm汇编的主要目的是为了编写arm启动代码,启动代码启动以后,引导程序到c语言环境下允许。换句话说启动代码的目的是为了在处理器复位以后搭建c语言最基本的需求。因此启动代码的主要任务有:

初始化异常向量表;
初始化各工作模式的栈指针寄存器;
开启arm内核中断允许;
将工作模式设置为user模式;
完成上述工作后,引导程序进入c语言主函数执行;

首先我们先学一些指令

mov指令

mov指令:加载12位立即数到寄存器或转移一个寄存器的值到另外一个寄存器

mov r0, #2 ;加载立即数2到寄存器r0,MOV{
   S}<c> <Rd>, #<const>
mov r1, r0 ;将r0寄存器的值加载到r1,MOV{
   S}<c> <Rd>, <Rm>

在这里插入图片描述
可以看到,寄存器R0=0x00000002,R1=0x00000002
Rd是目标寄存器,Rm是第一操作数寄存器。

add指令

ADD{
   S}<c> <Rd>, <Rn>, #<const>
ADD{
   S}<c> <Rd>, <Rn>, <Rm>{
   , <shift>}

在这里插入图片描述
我们将5与R1相加,赋值给了R2
将R0与R1相加,赋值给了R3

sub指令

SUB{
   S}<c> <Rd>, <Rn>, #<const>
SUB{
   S}<c> <Rd>, <Rn>, <Rm>{
   , <shift>}

在这里插入图片描述
我们将R1与5相减,赋值给了R2
将R0与R1相减,赋值给了R3
以上三条指令都有立即数作为第二操作数的情况,那么是什么立即数呢?
准确的说这里所指的是12位立即数imm12
先说怎么判断某数是不是12位立即数,12位立即数的条件是:

如果某个数的数值范围是0~255之间,那么这个数一定是立即数;
把某个数展开成2进制,这个数的最高位1至最低位1之间的二进制数序列的位数不能超过8位;
这个数的二进制序列的右边必须为偶数个连续的0
eg:
0x132 = 0000 0000 0000 0000 0000 0001 0011 0010
最高位1至最低位

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

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

相关文章

如何通过Linux pciehp sysfs接口控制PCIe Slot电源状态?-2

NVME SSD电源状态判断 通过pciehp sysfs接口对NVMe SSD所在的PCIe插槽进行Power On/Off操作时&#xff0c;确实会间接影响到NVMe SSD本身的电源状态。因为NVMe SSD是作为PCIe设备连接到特定插槽上的&#xff0c;插槽电源状态的变化通常会直接影响到与其相连的设备。 当对PCIe…

网络篇12 | 链路层 ARP

网络篇12 | 链路层 ARP 01 简介1&#xff09;工作过程2&#xff09;ARP缓存2.1 动态ARP表项2.2 静态ARP表项2.3 短静态ARP表项2.4 长静态ARP表项 02 ARP报文格式1&#xff09;ARP请求报文格式2&#xff09;ARP响应报文格式3&#xff09;套一层以太网帧&#xff08;ARP帧&#x…

史上最全excel导入功能测试用例设计(以项目为例)

web系统关于excel的导入导出功能是很常见的&#xff0c;通常为了提高用户的工作效率&#xff0c;在维护系统中的一些数据的时候&#xff0c;批量导入往往比一个一个添加或者修改快很多。针对导入功能的测试&#xff0c;往往会有很多种情况&#xff0c;现在针对平时项目中遇到的…

灰度部署、滚动部署与蓝绿部署

前言 最近在进行单元化建设方面的的工作&#xff0c;其中涉及服务分组和蓝绿发布相关的概念&#xff0c;在这里总结一下了解到的相关知识。 版本更新策略 功能开关 在应用逻辑里内置功能开关&#xff0c;通过开关的打开关闭来决定执行新旧逻辑&#xff0c;无需路由机制支持…

使用DockerCompose配置基于哨兵模式的redis主从架构集群

文章目录 一、注意事项&#xff08;坑点&#xff01;&#xff01;&#xff01;&#xff09;二、配置Redis主从架构集群第一步&#xff1a;创建目录文件结构第二步&#xff1a;编写DockerCompose配置文件第三步&#xff1a;编写redis.conf第四步&#xff1a;启动redis主从集群 三…

如何在树莓派安装Nginx并实现固定公网域名访问本地静态站点

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx&#xff08;发音为“engine-x”&#xff09;可以将您的树莓派变成一个强大的 Web 服务器&#xff0c;可以用于托管网站或 Web 应用程序。相比其他 Web 服务器&#xff0c;Ngi…

古月·ROS2入门21讲——学习笔记(一)核心概念部分1-14讲

讲解视频地址&#xff1a;1.ROS和ROS2是什么_哔哩哔哩_bilibili 笔记分为上篇核心概念部分和下篇常用工具部分 下篇&#xff1a;古月ROS2入门21讲——学习笔记&#xff08;二&#xff09;常用工具部分15-21讲-CSDN博客 目录 第一讲&#xff1a;ROS/ROS2是什么 1. ROS的诞生…

Redis入门到通关之Set实现点赞功能

文章目录 set 数据类型介绍不排序实现排序实现 set 数据类型介绍 Redis中的set类型是一组无序的字符串值。 set通过其独特的数据结构和丰富的命令提供了在存储和处理集合元素方面的一些非常有用的功能。下面列出了主要的set类型命令&#xff1a; SADD key member1 [member2]&a…

Python框架之UnitTest

unittest 是python 的单元测试框架&#xff0c;unittest 单元测试提供了创建测试用例&#xff0c;测试套件以及批量执行的方案&#xff0c; unittest 在安装pyhton 以后就直接自带了&#xff0c;直接import unittest 就可以使用&#xff0c;测试人员用UnitTest来做自动化测试&a…

基于SpringBoot + Vue实现的校车调度管理系统设计与实现+毕业论文(12000字)+答辩PPT​(包运行成功)

介绍 本系统包含管理员、驾驶员两个个角色。 管理员角色&#xff1a;驾驶员信息管理、车辆信息管理、借调车辆管理、工作管理、车辆运营管理、报销申请审核。 驾驶员角色&#xff1a;个人信息查看、工作查看、借调车辆申请、车辆使用申请、报销申请提交。 运行环境 jdk1.8 id…

前端开发攻略---在输入框中输入中文但是还没选中的时候,搜索事件依然存在;中文输入法导致的高频事件。

1、演示 解决前 解决后 2、输入框事件介绍 compositionstart事件在用户开始使用输入法输入时触发。这意味着用户正在进行组合输入&#xff0c;比如在中文输入法中&#xff0c;用户可能正在输入一个多个字符的词语。在这个阶段&#xff0c;输入框的内容可能还没有完全确定&#…

消费增值新模式:让每一分钱都更有价值

亲爱的消费者们&#xff0c;大家好&#xff01;今天我想和大家探讨一种新颖的消费方式——消费增值&#xff0c;它让您的每一次消费都蕴含了额外的价值&#xff0c;让消费变得更加有意义。 在过往的消费观念里&#xff0c;我们往往只是简单地将钱花出去&#xff0c;购买所需的商…

医院一站式后勤管理系统 processApkUpload.upload 任意文件上传漏洞复现

0x01 产品简介 医院一站式后勤管理系统由南京博纳睿通软件科技有限公司开发的一款基于现代医院后勤管理理念的业务系统,产品结合后勤业务管理特点,通过管理平台将后勤管理业务予以系统化、规范化和流程化,从而形成一套构建于平台之上且成熟完善的后勤管理体系,并可在此体系…

mysql的下载、安装

首先进入官网&#xff1a;MySQL 点击“downloads”进入下载界面 2.往下滑动滚轮&#xff0c;点击“mysql community...&#xff08;公开版&#xff09;” 3.往下滑&#xff0c;找到并单击“install for Windows” 4.选择版本&#xff1a;初学者可以使用较低版本&#xff0c;较…

SpringCloud框架 服务拆分和远程调用

数据库隔离避免耦合度过高&#xff0c;不同模块将自己的业务暴露为接口&#xff0c;供其他微服务调用 微服务远程调用技术Rest 在后端实现发送http请求 1.在启动类/配置类里注册RestTemplate启动对象 2.注入Bean对象使用

电商技术揭秘十四:大数据平台的选择与构建

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

一款牛逼的开源建站系统,轻松搭建专属博客网站(文末有福利)

今天给大家介绍一款牛逼的开源建站系统&#xff0c;支持多种方式部署&#xff0c;支持mardown、富文本、在线表格和思维导图等主流功能&#xff0c;轻轻松松帮你建立一个专属的、独一无二的博客网站。 博客功能 博文空间(便于博文组织,权限隔离) Markdown、Html富文本、电子表…

GD32F3系列单片机环境搭建

GD32单片机介绍 使用到开发板 GD32F303C-START 芯片型号&#xff1a;GD32F303CGT6 PinToPin单片机型号&#xff1a;STM32F103 GD32F303CGT6是超低开发预算需求并持续释放Cortex-M4高性能内核的卓越动力&#xff0c;为取代及提升传统的8位和16位产品解决方案&#xff0c;直接进…

Linux标准c库打开创建文件读写文件光标移动

fopen函数“const char *mode”参数选项。 结果&#xff1a;