看linux内核启动流程需要的汇编指令解释
一、指令
0.MRS 和MSR
MRS 指令: 对状态寄存器CPSR和SPSR进行读操作。
MSR指令: 对状态寄存器CPSR和SPSR进行写操作。
1.adrp
adrp x0, boot_args
把boot_args的页基地址提取出来,放到x0中。
2.stp
stp x21, x1, [x0]
将 x21, x1 的值存入 x0寄存器记录的地址中,比如 x0存的是boot_args的地址,那么 x21, x1 的值存入就会存入boot_args中。
3.ubfm
ubfm \tmp, \tmp, #16, #19
UBFM <Xd>, <Xn>, #<immr>, #<imms>
如果大于或等于,则从源寄存器中的位位置开始,将(-+1)位字段复制到目标寄存器的最低有效位。
如果小于,则从源寄存器的最低有效位复制(+1)位字段到目标寄存器的位位置(regsize-),其中regsize是32位或64位的目标寄存器大小。
这里是19大于16,也就是说,把tmp的[16,19]这4位提取出来,放到tmp中。
4.tst
tst x1, x3
说明:TST 来检查是否设置了特定的位。x1 是要测试的数据字,x3 是一个位掩码,TST指令将x1与x3做逻辑与运算。TST会改变CPSR的条件标志位。这个指令通常与EQ,NE这些条件码来组合使用,但是使用过程中需要注意 :与掩码逻辑与运算之后,全部测试位为0的时候,标志位Z = 1,此时EQ成立,反之则 Z = 0,NE成立。
5.UBFX
UBFX Xd, Xn, #lsb, #width
UBFX指令的意思是从Xn寄存器的第lsb位开始,提取width位到Xd寄存器,剩余高位用0填充。
二、宏
1.adr_l
.macro adr_l, dst, sym
adrp \dst, \sym
add \dst, \dst, :lo12:\sym
.endm
adr_l这个宏的作用是把给dst赋sym的值。
adr_l这个宏首先通过adrp指令把sym的页基地址提取出来,放到dst中,然后把dst和sym的低12位相加,放到dst中。
最后得出结论就是,用于获取基于PC相对偏移+/- 4 GB内的符号地址。
2.dcache_line_size
/** dcache_line_size - get the safe D-cache line size across all CPUs*///从这个CPU的CTR寄存器上获取最小D-cache行大小.macro dcache_line_size, reg, tmpread_ctr \tmp // 读取 CTR 寄存器的值ubfm \tmp, \tmp, #16, #19 // 读取ctr_el0比特16到19的数值,这个数值和D-cache大小有关mov \reg, #4 // 给reg赋值4lsl \reg, \reg, \tmp // 计算实际的cache 行大小,单位字节.endm
这个宏的作用是获得所有cpu上的安全D-cache线大小。
3.ldr_l
ldr_l x4, idmap_ptrs_per_pgd
.macro ldr_l, dst, sym, tmp=.ifb \tmpadrp \dst, \symldr \dst, [\dst, :lo12:\sym].elseadrp \tmp, \symldr \dst, [\tmp, :lo12:\sym].endif.endm
ldr_l, dst, sym, tmp= :这个宏是将符号sym中存放的内容取到dst中;这条指令取的是idmap_ptrs_per_pgd的页内偏移地址到x4寄存器。
相关文章:
看linux内核启动流程需要的汇编指令解释
一、指令 0.MRS 和MSR MRS 指令: 对状态寄存器CPSR和SPSR进行读操作。 MSR指令: 对状态寄存器CPSR和SPSR进行写操作。 1.adrp adrp x0, boot_args把boot_args的页基地址提取出来,放到x0中。 2.stp stp x21, x1, [x0]将 x21, x1 的值存入 x0寄存器记录的地址中…...
【巨人的肩膀】JAVA面试总结(二)
1、💪 目录1、💪1.0、什么是面向对象1.1、JDK、JRE、JVM之间的区别1.2、什么是字节码1.3、hashCode()与equals()之间的联系1.4、String、StringBuffer、StringBuilder的区别1.5、和equals方法的区别1.6、重载和重写的区别1.7、List和Set的区别1.8、Array…...
【网络安全入门】零基础小白必看!!!
看到很多小伙伴都想学习 网络安全 ,让自己掌握更多的 技能,但是学习兴趣有了,却发现自己不知道哪里有 学习资源◇瞬间兴致全无!◇ 😄在线找人要资料太卑微,自己上网下载又发现要收费0 🙃差点当…...
字节前端经典面试题(附答案)
有哪些可能引起前端安全的问题? 跨站脚本 (Cross-Site Scripting, XSS): ⼀种代码注⼊⽅式, 为了与 CSS 区分所以被称作 XSS。早期常⻅于⽹络论坛, 起因是⽹站没有对⽤户的输⼊进⾏严格的限制, 使得攻击者可以将脚本上传到帖⼦让其他⼈浏览到有恶意脚本的⻚⾯, 其注⼊⽅式很简…...
数据库管理工具的使用
目录 摘要 一、Navicat是什么? 二、使用步骤 1.如何下载与安装 2.如何连接远程数据库 总结 摘要 本文主要介绍数据库管理工具的使用 一、Navicat是什么? 它是一款数据库管理工具,将此工具连接数据库,你可以从中看到各种数据库的详细…...
让马斯克反悔的毫米波雷达,被国产雷达头部厂商木牛科技迭代到了5D时代
近日,特斯拉或将在其HW4.0硬件系统配置一枚高精度4D毫米波雷达的消息在外网刷屏。据分析,“纯视觉”信仰者马斯克之所以做出这样的决定,一方面是减配了雷达的特斯拉自动驾驶,表现不尽如人意;另一方面也跟毫米波雷达的技…...
MaxWell原理概述
文章目录1.MaxWell概述2.Maxwell输出数据格式3.Maxwell原理3.1 MySQL二进制日志3.2 MySQL主从复制1.MaxWell概述 Maxwell 是由美国Zendesk公司开源,用Java编写的MySQL变更数据抓取软件。它会实时监控Mysql数据库的数据变更操作(包括insert、update、dele…...
电子技术——AB类输出阶
电子技术——AB类输出阶 原理 交越失真可以通过通过一个较小的偏置电流解除,如下图: QNQ_NQN 和 QPQ_PQP 的基极之间存在偏置电压 VBBV_{BB}VBB 。对于完美匹配的晶体管,当 vI0v_I 0vI0 的时候,此时 vO0v_O 0vO0 。每…...
Archlinux个人安装流程
操作环境: 时间:2023-02-17 电脑型号:联想拯救者R720 cpu:Intel Core i5-7300HQ 4x 3.5GHz gpu:NVIDIA GeForce GTX 1050 Ti 安装系统: 1.下载镜像: 请访问https://archlinux.org/查找镜…...
【Autoware】2小时安装Autoware1.13(保姆级教程)
前言:ROS的出现使得机器人软件开发更加快速和模块化,在此基础上,Autoware.ai开源项目可以让我们很容易地将一套完整的自动驾驶软件部署到我们的测试车辆上,并见证它跑起来! 文章目录1.Autoware简介2.电脑软硬件配置要求…...
JVM 堆内存模型
方法区和永久代的关系 方法区与 Java 堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。虽然 Java 虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做 N…...
linux-中断下半部
引用preempt宋宝华: 是谁关闭了Linux抢占,而抢占又关闭了谁?Linux用户抢占和内核抢占详解(概念, 实现和触发时机)--Linux进程的管理与调度(二十)内核抢占实现(preempt)Linux中的preempt_count - 知乎 (zhihu.com)linux 中断子系统…...
SpringMVC源码:HandlerMapping加载1
参考资料: 《SpringMVC源码解析系列》 《SpringMVC源码分析》 《Spring MVC源码》 写在开头:本文为个人学习笔记,内容比较随意,夹杂个人理解,如有错误,欢迎指正。 前文: 《SpringMVC源码&a…...
【ArcGIS】12 投影
问题描述 在处理地理数据时,可能会遇到以下关于投影的问题: DEM缺少投影,提取流域会报错图层只有地理坐标系,没有投影坐标系,无法测量距离、计算面积等要素图层投影偏移量错误,与实际位置有偏差总之,投影对各种地理操作影响很大,有必要深入理解。 投影说明 在ArcGIS…...
【微信小程序-原生开发+TDesign】通用功能页封装——地点搜索(含腾讯地图开发key 的申请方法)
效果预览 核心技能点 调用腾讯地图官方的关键字地点搜索功能,详见官方文档 https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/methodGetsuggestion 完整代码实现 地点输入框 <t-input value"{{placeInfo.title}}" bindtap"searchPlace" dis…...
h5: 打开手机上的某个app
1、android端:直接通过URL Scheme方式打开。2、ios端(2种):(1)使用URL Scheme方式打开。(2)使用Universal link方式打开。3、Universal link方式使用注意事项:࿰…...
Hot Chocolate 构建 GraphQL .Net Core 服务
Hot Chocolate 是 .NET 平台下的一个开源组件库, 您可以使用它创建 GraphQL 服务, 它消除了构建成熟的 GraphQL 服务的复杂性, Hot Chocolate 可以连接任何服务或数据源,并创建一个有凝聚力的服务,为您的消费者提供统一的 API。 我会在 .NET 应用中使用…...
linux shell 入门学习笔记16 流程控制开发
shell的流程控制一般包括if、for、while、case/esac、until、break、continue语句构成。 if语句开发 单分支if //方式1 if <条件表达式> then 代码。。。 fi //方式2 if <条件表达式>;then 代码。。。 fi 双分支if if <条件表达式> then 代码1 if <条件表…...
机器学习:基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测
机器学习:基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测 作者:AOAIYI 作者简介:Python领域新星作者、多项比赛获奖者:AOAIYI首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞…...
给VivoBook扩容重装系统
现在笔记本重装系统都这么复杂吗?原谅我还是10年前的装机水平,折腾了一天终于把系统重新安装好了。 笔记本: ASUS VivoBook 安装系统: Win10 1、扩容 电脑配的512G硬盘满了要换个大的,后盖严丝合缝,不…...
cpdown:精准下载Git仓库文件,告别克隆整个项目的低效操作
1. 项目概述与核心价值最近在整理本地开发环境,发现一个高频痛点:从各种代码托管平台(比如 GitHub、GitLab、Gitee)下载单个文件或特定目录时,总是特别麻烦。要么得克隆整个仓库,动辄几百兆,浪费…...
Linux桌面便签终极方案:Sticky让你的灵感永不丢失
Linux桌面便签终极方案:Sticky让你的灵感永不丢失 【免费下载链接】sticky A sticky notes app for the linux desktop 项目地址: https://gitcode.com/gh_mirrors/stic/sticky 在Linux桌面上高效管理零散信息一直是许多用户的痛点。Sticky作为一款专为Linux…...
告别手动拼报文!用MQTT.fx和OneNet平台快速调试你的ESP8266物联网设备
用MQTT.fx与OneNet构建高效物联网调试工作流 调试物联网设备时,你是否厌倦了反复修改代码、烧录固件、查看串口日志的循环?当ESP8266与OneNet平台通信异常时,传统调试方式往往让我们陷入二进制报文的泥潭。本文将介绍如何通过MQTT.fx这款图形…...
告别龟速!实测字节跳动Rust镜像源rsproxy.cn,安装rust和cargo快到飞起
Rust开发者福音:字节跳动镜像源rsproxy.cn全实测与避坑指南 上周深夜两点,我盯着终端里以KB/s为单位缓慢爬升的Rust安装进度条,第5次按下了CtrlC。作为一门以"零成本抽象"著称的语言,Rust的安装体验却让国内开发者付出了…...
从零开始:sherpa-onnx跨平台语音识别终极指南
从零开始:sherpa-onnx跨平台语音识别终极指南 【免费下载链接】sherpa-onnx Speech-to-text, text-to-speech, speaker diarization, speech enhancement, source separation, and VAD using next-gen Kaldi with onnxruntime without Internet connection. Support…...
InvestorFinder 技术架构深度解析:VC 合伙人真实投资行为数据挖掘与精准匹配底层实现
摘要在一级市场股权投资领域,创业者与风险投资机构合伙人的精准匹配长期存在信息壁垒、数据碎片化、背景信息不对称三大核心痛点。传统投融资对接模式依赖 FA 机构人脉、线下路演、投融资社群人工对接,存在效率低下、匹配维度单一、投资人真实投资行为数…...
医疗电源设计:IEC 60601-1标准与EMC挑战解析
1. IEC 60601-1标准演进与医疗电源设计挑战医疗电气设备的安全性和可靠性直接关系到患者生命健康,这使得相关设计标准比普通电子设备严格得多。作为医疗设备领域的"圣经",IEC 60601-1标准自1977年首次发布以来,已经历四次重大修订&…...
别再搞混了!海康威视工业相机SDK和安防SDK开发环境配置避坑指南(VS2019+MVS3.2)
海康威视工业相机开发避坑指南:从硬件选型到SDK环境配置全解析 第一次接触海康威视工业相机的开发者,往往会被网上铺天盖地的安防相机教程带偏方向。我曾亲眼见过团队花费三天时间尝试用iVMS-4200客户端激活一台根本不需要密码的工业相机,也调…...
Python 爬虫数据处理:富文本爬虫内容格式化还原
前言 互联网平台发布的文章、资讯、公众号推文、论坛帖子、商品详情、教程文案等内容,普遍以富文本形式存在,融合文字、段落层级、换行缩进、加粗引用、列表排版、超链接、分段结构等多种格式元素。普通爬虫仅能抓取原始 HTML 源码或纯文本内容…...
如何快速提升英雄联盟游戏体验:League-Toolkit智能工具完全指南
如何快速提升英雄联盟游戏体验:League-Toolkit智能工具完全指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 英雄联盟作为全球最…...
