韦东山D1S板子——汇编启动代码第一行分析(.long 0x0300006f)

1、汇编启动源码

在这里插入图片描述

2、分析二进制:0x0300006f

2.1、反汇编代码

在这里插入图片描述

2.2、jal指令

在这里插入图片描述

jal指令的作用:跳转到当前PC值偏移offset处执行,其中offset由jal指令的bi[31:12]表示;

2.3、分析指令:j 20030 <reset>

j	20030 	//伪指令,跳转到0x20030地址处执行
j 	reset	//伪指令,跳转到reset标号处执行,reset标号的地址就是0x20030
jal x0,0x30	//跳转到当前PC+0x30处执行,PC此时等于0x20000

上面的三条指令是一样的,只是不同的表达方式,j指令是伪指令。

2.4、按照jal指令格式解析0x0300006f

在这里插入图片描述

2.5、为什么是当前PC偏移0x30?

在这里插入图片描述

3、疑问:写汇编指令和直接写指令的二进制的优劣?

3.1、全志SDK包里的汇编启动代码

在这里插入图片描述

全志SDK里是通过代码来构建出jal跳转指令,相较于韦东山老师写的0x0300006f要更灵活,可以根据启动代码的头来动态计算出偏移量;而韦东山老师写的代码,头的大小只能是0x30字节。

3.2、为什么要写跳转指令的二进制,而不是汇编代码?

我认为直接用伪代码:j reset,让编译器去构建jal指令不是更方便吗?代码可读性也更高,不是很理解直接写二进制的方式,但是看到全志的SDK官网代码也是这么写的,是我没有领悟到这样写的好处吗?有知道答案的博友,欢迎在评论区交流。

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

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

相关文章

轻松合并多个TXT文本,实现一键文件整理!

亲爱的读者们&#xff0c;您是否曾经需要将多个TXT文本文件合并成一个文件&#xff0c;却苦于无从下手&#xff1f;现在&#xff0c;我们向您介绍一个全新的TXT文本合并工具&#xff0c;让您轻松实现一键文件整理&#xff01; 首先&#xff0c;在首助编辑高手的主页面板块栏里…

1818_ChibiOS的计数信号量

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 之前见过计数信号量&#xff0c;也是在FreeRTOS中看到的。也看到过这样的功能在驱动设计中的应用&#xff0c;但是当时没有理解这个使用的方式。 1.…

Kafka入门04——原理分析

目录 01理解Topic和Partition Topic(主题) Partition(分区) 02理解消息分发 消息发送到分区 消费者订阅和消费指定分区 总结 03再均衡(rebalance) 再均衡的触发 分区分配策略 RangeAssignor(范围分区) RoundRobinAssignor(轮询分区) StickyAssignor(粘性分区) Re…

Docker的架构与自制镜像的发布

一. Docker 是什么 Docker与自动化测试及其测试实践 大家都知道虚拟机吧&#xff0c;windows 上装个 linux 虚拟机是大部分程序员的常用方案。公司生产环境大多也是虚拟机&#xff0c;虚拟机将物理硬件资源虚拟化&#xff0c;按需分配和使用&#xff0c;虚拟机使用起来和真实操…

Java练习题2020-3

统计从1到N的整数中,所有立方值的平方根为整数的数的个数 输入说明&#xff1a;整数 N(N<10000)&#xff1b; 输出说明&#xff1a;符合条件的数的个数&#xff0c;如4^3648^2 输入样例&#xff1a;10 输出样例&#xff1a;3 (说明&#xff1a;样例中符合条件的3个数是1、4、…

centos7虚拟机部署苍穹私有云环境记录

物理机建议16G内存以上&#xff0c;不然安装gpass过程中带不动虚拟机 步骤1&#xff1a;迅雷下载centos7.9镜像文件&#xff0c;并创建虚拟机&#xff0c;手动安装 http://ftp.sjtu.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso 后面安装gpass时会有校验…

为啥面试完都说「回去等通知」?

点击下方“JavaEdge”&#xff0c;选择“设为星标” 第一时间关注技术干货&#xff01; 免责声明~ 任何文章不要过度深思&#xff01; 万事万物都经不起审视&#xff0c;因为世上没有同样的成长环境&#xff0c;也没有同样的认知水平&#xff0c;更「没有适用于所有人的解决方案…

云计算与ai人工智能对高防cdn的发展

高防CDN&#xff08;Content Delivery Network&#xff09;作为网络安全领域的一项关键技术&#xff0c;致力于保护在线内容免受各种网络攻击&#xff0c;包括分布式拒绝服务攻击&#xff08;DDoS&#xff09;等。然而&#xff0c;随着人工智能&#xff08;AI&#xff09;和大数…

经典目标检测神经网络 - RCNN、SSD、YOLO

文章目录 1. 目标检测算法分类2. 区域卷积神经网络2.1 R-CNN2.2 Fast R-CNN2.3 Faster R-CNN2.4 Mask R-CNN2.5 速度和精度比较 3. 单发多框检测&#xff08;SSD&#xff09;4. YOLO 1. 目标检测算法分类 目标检测算法主要分两类&#xff1a;One-Stage与Two-Stage。One-Stage与…

功能测试想进阶,可以提供一点点思路和方向吗?

1. 深入了解测试理论&#xff1a; 了解测试的原理、方法和最佳实践&#xff0c;包括黑盒测试、白盒测试、灰盒测试等。可以阅读相关的书籍或参加在线课程。 2. 学习相关测试工具&#xff1a; 掌握常用的测试工具&#xff0c;如缺陷发现工具、性能测试工具、安全测试工具等。…

openpnp - 程序发布包的制作

文章目录 openpnp - 程序发布包的制作概述笔记程序发布 - 简易打包备注程序发布 - 用install4j来打包END openpnp - 程序发布包的制作 概述 openpnp自带了intall4j的安装脚本. 官方说明这是intall4j 8.x的工程. 下载了intall4j 8.x(找不到注册码, 只能是90天试用版) 和 10.x…

SpringMVC Day 04 : 数据绑定

前言 SpringMVC是一个非常流行的Java Web框架&#xff0c;它提供了很多方便的功能和工具来帮助我们构建高效、灵活的Web应用程序。其中&#xff0c;数据绑定就是SpringMVC中非常重要的一部分&#xff0c;它可以帮助我们方便地将请求参数绑定到Java对象上&#xff0c;从而简化了…