当前位置: 首页 > news >正文

ARM中ZI-data段和RW-data段

ARM中ZI-data段和RW-data段

  • 1、只定义全局变量,不使用,不占用内存空间
  • 2、 定义并初始化全局变量为0 占用ZI-Data区域
  • 3、定义并初始化全局变量非0 占用RW-Data区域
  • 4、增加的是一个int8的数据为什么,size增加不是1
  • 5、定义的全局变量为0,但增加的是RW-Data段大小?


最近使用Keil写代码时,碰到了几个现象,现在汇总一下


初始情况:
Program Size: Code=51988 RO-data=5560 RW-data=592 ZI-data=3064
在这里插入图片描述

1、只定义全局变量,不使用,不占用内存空间

示例:pandas 是基于NumPy 的一种工,该工具是为了解决数据分析任务而创建的。

在下面情况下都是使用了全局变量的。


2、 定义并初始化全局变量为0 占用ZI-Data区域

Program Size: Code=52000 RO-data=5560 RW-data=592 ZI-data=3072
在这里插入图片描述
在map文件也可以看出占用ZI-Data区域
在这里插入图片描述

3、定义并初始化全局变量非0 占用RW-Data区域

Program Size: Code=52000 RO-data=5560 RW-data=596 ZI-data=3068
在这里插入图片描述
map文件也可以看出占用RW-Data区域
在这里插入图片描述

4、增加的是一个int8的数据为什么,size增加不是1

与数据对齐以及段对齐有关有关:ARM是32位的,同时定义段时会有对齐操作

对比两个map文件
在这里插入图片描述

RW-Data: 全局初始化非0的大于全局初始化为0的4字节,包括:变量本身,Pad(补齐)处的3(6-3)字节
ZI-Data: 全局初始化为0的大于全局初始化非0的4字节,包括:变量本身,Pad(补齐)处的3(13-10)字节

那么如何确定是由于对齐影响的呢:在全局变量初始化非0情况下,增加一个全局变量非0的变量
Program Size: Code=52004 RO-data=5560 RW-data=596 ZI-data=3068
在这里插入图片描述
其Map文件
在这里插入图片描述

总的RW-data不变,总的Pad减1,main的RWdada加1

5、定义的全局变量为0,但增加的是RW-Data段大小?

与–bss_threshold=num 编译选项有关
默认是当定义变量小于8字节时,编译器优化,变量位于RW-Data段,只有大于8字节数据变量才位于ZI-Data段

初始化大小:
Program Size: Code=51988 RO-data=5560 RW-data=760 ZI-data=2904
在这里插入图片描述

定义小于8字节数据大小:
Program Size: Code=52000 RO-data=5560 RW-data=764 ZI-data=2900
在这里插入图片描述

定义大于8字节数据大小:
Program Size: Code=52008 RO-data=5560 RW-data=760 ZI-data=3032
在这里插入图片描述

修改–bss_threshold=0 可以得到1-4中的结果

相关文章:

ARM中ZI-data段和RW-data段

ARM中ZI-data段和RW-data段 1、只定义全局变量,不使用,不占用内存空间2、 定义并初始化全局变量为0 占用ZI-Data区域3、定义并初始化全局变量非0 占用RW-Data区域4、增加的是一个int8的数据为什么,size增加不是15、定义的全局变量为0&#xf…...

关联度分析、灰色预测GM(1,1)、GM(1,1)残差模型——基于Python实现

关联度分析 import numpy as np import pandas as pd #关联度分析 #参考序列 Y_0[170,174,197,216.4,235.8] #被比较序列 Y_1[195.4,189.9,187.2,205,222.7] Y_2[308,310,295,346,367]#初始化序列 X_0np.array(Y_0)/Y_0[0] X_1np.array(Y_1)/Y_1[0] X_2np.array(Y_2)/Y_2[0]#计…...

linux常用命令(网络相关)

目录 1. ping - 检查网络连通性 参数 示例 2. ifconfig - 配置网络接口 参数 示例 3. ip - 显示和操作路由、网络设备、接口等 参数 示例 4. netstat - 显示网络连接、路由表、接口统计等信息 参数 示例 5. ss - 更快的netstat替代品 参数 示例 6. nslookup - …...

【uni-app多端】修复stmopjs下plus-websocket无心跳的问题

从这篇文章接着向下看: uniapp plus-websocket 和stompjs连接教程 安卓ios手机端有效 - 简书 按照文章的方式,能够实现APP下stmopjs长连接。但是有一个问题,就是会频繁输出 res-创建连接-1- 跟踪连接,会发现连接都会在大约40s后…...

VScode学习前端-01

小问题合集: vscode按!有时候没反应,有时候出来,是因为------>必须在英文状态下输入! 把鼠标放在函数、变量等上面,会自动弹出提示,但挡住视线,有点不习惯。 打开file->pre…...

Java-05 深入浅出 MyBatis - 配置深入 动态 SQL 参数、循环、片段

点一下关注吧!!!非常感谢!!持续更新!!! 大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了: MyBatis&#xff…...

突破自动驾驶瓶颈!KoMA:多智能体与大模型的完美融合

0.简介 本推文主要介绍了由来自北京航空航天大学的姜克谋、蔡轩和崔智勇教授等共同提出的一种名为KoMA的知识驱动的多智能体框架。论文《KoMA: Knowledge-driven Multi-agent Framework for Autonomous Driving with Large Language Models》提出了KoMA框架,通过结…...

YOLO入门教程(三)——训练自己YOLO11实例分割模型并预测【含教程源码+一键分类数据集 + 故障排查】

目录 引言前期准备Step0 环境部署1.安装OpenCV2.安装Pytorch3.安装Ultralytics Step1 打标训练Step2 格式转换Step3 整理训练集Step4 训练数据集4.1创建yaml文件4.2训练4.3预测4.4故障排查4.4.1OpenCV版本故障,把OpenCV版本升级到4.0以上4.4.2NumPy版本故障&#xf…...

【加入默语老师的私域】C#面试题

什么是依赖注入,如何实现? 依赖注入是一种设计模式。我们不是直接在另一个类(依赖类)中创建一个类的对象,而是将对象作为参数传递给依赖类的构造函数。它有助于编写松散耦合的代码,并有助于使代码更加模块…...

称重传感器指示器行业全面且深入的分析

称重传感器指示器是一种用于显示和解释称重传感器输出信号的设备,用于测量力、重量或压力。称重传感器是将物理力(如重量)转换为电信号的传感器,称重传感器指示器将该电信号转换为可读格式,通常以磅、公斤或牛顿等单位…...

NAT网络地址转换——Easy IP

NAT网络地址转换 Tip: EasylP没有地址池的概念,使用接口地址作为NAT转换的公有地址。EasylP适用于不具备固定公网IP地址的场景:如通过DHCP, PPPOE拨号获取地址的私有网络出口,可以直接使用获取到的动态地址进行转换。 本次实验模拟nat协议配置 AR1配置如下&…...

【Visual Studio系列教程】如何在 VS 上编程?

上一篇博客中,我们介绍了《什么是 Visual Studio?》。本文,我们来看第2篇《如何在 VS 上编程?》。阅读本文大约10 分钟。我们会向文件中添加代码,了解 Visual Studio 编写、导航和了解代码的简便方法。 本文假定&…...

Mybatis-Plus 多租户插件属性自动赋值

文章目录 1、Mybatis-Plus 多租户插件1.1、属性介绍1.2、使用多租户插件mavenymlThreadLocalUtil实现 定义,注入租户处理器插件测试domianservice & ServiceImplmapper 测试mapper.xml 方式 1.3、不使用多租户插件 2、实体对象的属性自动赋值使用1. 定义实体类2. 实现 Meta…...

AWTK-WIDGET-WEB-VIEW 实现笔记 (4) - Ubuntu

Ubuntu 上实现 AWTK-WIDGET-WEB-VIEW 开始以为很简单,后来发现是最麻烦的。因为 Ubuntu 上的 webview 库是 基于 GTK 的,而 AWTK 是基于 X11 的,两者的窗口系统不同,所以期间踩了几个大坑。 1. 编译 AWTK 在使用 Linux 的输入法时…...

Python入门(7)--高级函数特性详解

Python高级函数特性详解 🚀 目录 匿名函数(Lambda)装饰器的使用生成器与迭代器递归函数应用实战案例:文件批处理工具 1. 匿名函数(Lambda)深入解析 🎯 1.1 Lambda函数基础与进阶 1.1.1 基本…...

【数据库原理】理解数据库,基础知识

第一代:网状数据库;第二代:关系数据库;第三代:新一代数据库系统BigData 一、理解数据库 什么是数据:信息,对事物的存在方方式、运动状态及特征的描述。数据,记录信息的识别方式有数…...

VConsole——(H5调试工具)前端开发使用于手机端查看控制台和请求发送

因为开发钉钉H5微应用在手机上一直查看不到日志等,出现安卓和苹果上传图片一边是成功的,一边是失败的,所以找了这个,之前在开发微信小程序进行调试的时候能看到,之前没想到过,这次被人提点发现可以单独使用…...

论文分享 | FuzzLLM:一种用于发现大语言模型中越狱漏洞的通用模糊测试框架

大语言模型是当前人工智能领域的前沿研究方向,在安全性方面大语言模型存在一些挑战和问题。分享一篇发表于2024年ICASSP会议的论文FuzzLLM,它设计了一种模糊测试框架,利用模型的能力去测试模型对越狱攻击的防护水平。 论文摘要 大语言模型中…...

vmWare虚拟环境centos7安装Hadoop 伪分布式实践

背景:近期在研发大数据中台,需要研究Hadoop hive 的各种特性,需要搭建一个Hadoop的虚拟环境,本来想着使用dock ,但突然发现docker 公共仓库的镜像 被XX 了,无奈重新使用vm 搭建虚拟机。 大概经历了6个小时完…...

【C++入门(一)】半小时入门C++开发(深入理解new+List+范围for+可变参数)

目录 一.深入理解new 使用格式 二.List列表 定义一个列表 迭代器 添加元素 删除元素 排序 反转序列 三.范围for 四.可变参数 std::initializer_list 可变参数模板(variadic template) 一.深入理解new 类似于C语言中的malloc、calloc和reallo…...

为什么工作越久的精英,最后都放弃了 MBTI?

很多人在职场和生活中遇到瓶颈,第一反应是去测测 MBTI 或者大五人格。 甚至很多大厂在招聘时,也会把这些测试当作金标准。但我观察到一个现象:真正处于决策核心的高净值人群,早就开始放弃这些“自报式”的性格测试了。为什么&…...

23种设计模式 - 建造者模式(Builder)

建造者模式(Builder)—— 一步一步拼出来 大白话解释 你去点外卖套餐,可以自己一步步选: 选主食(汉堡 / 鸡腿)选饮料(可乐 / 橙汁)选大小(中杯 / 大杯)要不要…...

AI Agent 时代的“将领艺术“:一个人如何指挥一支开发军队

摘要:本文探讨在 AI Agent 时代,开发者如何从"单兵作战"转变为"一人成军",核心在于任务拆分能力、Agent 调度能力和系统集成能力。通过战争将领的类比,提供一套可复用的 Agent 项目管理框架。 关键词&#x…...

解放你的音乐库:NCMconverter音频格式转换全攻略

解放你的音乐库:NCMconverter音频格式转换全攻略 【免费下载链接】NCMconverter NCMconverter将ncm文件转换为mp3或者flac文件 项目地址: https://gitcode.com/gh_mirrors/nc/NCMconverter 当你下载了喜爱的音乐却发现是无法播放的NCM格式时,当你…...

高效开启AI专著撰写!揭秘让写作速度飙升的实用工具

创新与AI写专著工具的背景 创新是学术专著的核心,也是写作过程中的一大挑战。一部优秀的专著不应仅仅是把之前的研究成果堆在一起,而是要能够提出贯穿全书的新颖观点、理论结构或研究手段。在海量的学术文献中,发现未被充分探讨的研究空白并…...

眼图原理与信号完整性分析技术详解

眼图原理与信号完整性分析技术 1. 眼图基础概念 1.1 眼图定义与形成机制 眼图是通过示波器余辉作用将扫描所得的每个码元波形重叠形成的图形。当使用示波器跨接在接收滤波器输出端,并调整扫描周期与接收码元周期同步时,屏幕上显示的图形因其形似人眼而…...

政务大模型微调全攻略,打造高效智能政务AI系统!

在数字化、智能化成为新质生产力核心驱动力,十五五政务数字化转型加速推进的背景下,智慧政务建设成为各地政府提升治理能力的关键。但当前政务领域普遍面临数据处理效率低、AI 模型适配性差、服务自动化水平不足、敏感数据管理难等痛点,通用大…...

SEO_10个提升网站排名的SEO优化技巧分享(80 )

SEO优化技巧:提升网站排名的10个秘诀 在当今竞争激烈的互联网市场中,网站的排名直接关系到它的流量和商业成功。SEO(搜索引擎优化)技巧的掌握能够显著提升网站在搜索引擎中的曝光度。本文将分享十个提升网站排名的SEO优化技巧&…...

Chatbot Arena榜单地址解析:如何高效获取与利用开源大模型评测数据

Chatbot Arena榜单地址解析:如何高效获取与利用开源大模型评测数据 作为一名AI开发者,你是否也经历过这样的“选型阵痛”?面对琳琅满目的开源大模型,从Llama、Mistral到Qwen、DeepSeek,每个模型都宣称自己性能卓越。但…...

基于SpringBoot的宠物寄养系统实战:从毕设开题到可运行原型

最近在辅导学弟学妹做毕业设计,发现很多同学在做“宠物寄养系统”这类项目时,虽然功能列了一大堆,但代码写出来总觉得差点意思,要么是业务逻辑全堆在Controller里,要么是数据状态管理混乱,答辩时被老师一问…...