此示例演示如何使用分散加载描述为堆栈和堆保留和清空内存块。它还显示链接器生成的相关符号。

在以下示例中,执行区域定义STACK 0x800000 EMPTY -0x10000定义了一个名为STACK 的区域。该区域从地址0x7F0000开始,到地址0x800000结束:

LR_1 0x80000                          ; load region starts at 0x80000
{
STACK 0x800000 EMPTY -0x10000 ; region ends at 0x800000 because of the
; negative length. The start of the region
; is calculated using the length.
{
; Empty region for placing the stack
} HEAP +0 EMPTY 0x10000 ; region starts at the end of previous
; region. End of region calculated using
; positive length
{
; Empty region for placing the heap
}
... ; rest of scatter-loading description
}

注意

EMPTY执行区域创建的虚拟 ZI 区域在运行时不会初始化为零。

如果地址是相对 (+偏移量) 形式,并且长度为负,则链接器将生成错误。

下图显示了此示例的图示表示形式。

图 1.为堆栈预留区域

在此示例中,链接器生成以下符号:

Image$$STACK$$ZI$$Base      = 0x7f0000
Image$$STACK$$ZI$$Limit = 0x800000
Image$$STACK$$ZI$$Length = 0x10000
Image$$HEAP$$ZI$$Base = 0x800000
Image$$HEAP$$ZI$$Limit = 0x810000
Image$$HEAP$$ZI$$Length = 0x10000

注意

EMPTY属性仅适用于执行区域。链接器将生成警告并忽略加载区域定义中使用的EMPTY属性。

链接器检查用于EMPTY区域的地址空间是否不与任何其他执行区域重叠。

来源

【ARM】为堆和栈保留空的内存块的更多相关文章

  1. C# 中堆与栈的浅记

    C# 中堆与栈的浅记 什么是堆和栈? 简言之.堆和栈是驻留在内存中的区域,它们的作用是帮助我们运行代码.在.Net Framework 环境下,当我们的代码运行时,内存中的堆和栈便存储了这些代码,并包 ...

  2. C++中堆和栈的完全解析

    C++中堆和栈的完全解析 内存分配方面: 堆: 操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删 除,并 ...

  3. C中堆和栈的区别

    C++中堆和栈的完全解析 内存分配方面: 堆: 操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删 除,并 ...

  4. java中内存分配策略及堆和栈的比较

    Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间 ...

  5. 【转载】iOS堆和栈的理解

    操作系统iOS 中应用程序使用的计算机内存不是统一分配空间,运行代码使用的空间在三个不同的内存区域,分成三个段:“text segment “,“stack segment ”,“heap segme ...

  6. Java 中的 JVM、堆和栈 -- 初步了解

    JVM -- Java Virtual Machine(Java虚拟机) —— 因为要说堆和栈,所以我们必须要先简单的说一下JVM.(JVM详细请找度娘啦~) 首先,我们都知道 java 一直宣传的口 ...

  7. 堆与栈(heap and stack)在c/c++的应用(概念)

    在学习c/c++时,我们经常会遇到 堆与栈 的问题,今天就来讲一下各类情况下的heap,stack的应用. 程序内存布局场景下,堆与栈表示两种内存管理方式: 1.内部分配时,堆和栈表示两种不同的内存管 ...

  8. Java 中堆和栈有什么区别?

    JVM 中堆和栈属于不同的内存区域,使用目的也不同.栈常用于保存方法帧和局 部变量,而对象总是在堆上分配.栈通常都比堆小,也不会在多个线程之间共享, 而堆被整个 JVM 的所有线程共享.

  9. C#基础知识系列二(值类型和引用类型、可空类型、堆和栈、装箱和拆箱)

    前言 之前对几个没什么理解,只是简单的用过可空类型,也是知道怎么用,至于为什么,还真不太清楚,通过整理本文章学到了很多知识,也许对于以后的各种代码优化都有好处. 本文的重点就是:值类型直接存储其值,引 ...

  10. C/C++中堆与栈

    本文介绍C/C++中堆,栈及静态数据区.   五大内存分区 在C++中,内存分成5个区,他们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区.下面分别来介绍: 栈,就是那些由编译器在需要的时候分 ...

随机推荐

  1. 解密数据可视化软件、BI软件和数字孪生软件的不同

    在现代企业和科技领域,数据起着至关重要的作用.为了更好地管理和理解数据,不同类型的软件工具应运而生,其中包括数据可视化软件.BI(Business Intelligence)软件和数字孪生软件.虽然它 ...

  2. Docker部署系列之Docker Compose安装Redis三主三从集群

    总结/朱季谦 在日常开发或者编程当中,经常需要用到redis集群,若是按照传统的方式,一个机器一个机器搭建,难免过于繁琐,故而可以通过dock er-compose编排方式,快速搭建.我在搭建过程当中 ...

  3. [研究]SpringBoot-MybatisPlus-Dynamic(多数据源)

    SpringBoot-MybatisPlus-Dynamic(多数据源) 前言 ​ 基于工作上班累死了...打开自己电脑 不知道干些啥 就康康 PL 网站康康 更新了啥 ​ 咦~~~还挺多 看到了多数 ...

  4. 合宙esp32 c3 micro python 固件配置(基于thonny)

    首先,本文档是已经配置过其他esp32后发现合宙的配置需要修改一些地方. 为了让新手们减少掉坑成本,故做了一个图文指导. 准备工作: 1.thonny安装(不讲,自己去查教程) 2.esp32c3 m ...

  5. node.js 命令必须加 npx 才能执行

    问题描述 在 Windows 上搭建 Hexo 环境,已经从官网下载安装 node-v18.18.2-x64.msi,并且通过 npm 命令成功安装 hexo. PowerShell 中,直接执行 h ...

  6. JSON字符串中获取一个特定字段的值

    第一种 import com.google.gson.JsonObject; import com.google.gson.JsonParser; String json="{\" ...

  7. JQuery中美元符号$

    目录 1. 概述 2. 详论 2.1. 加载脚本 2.2. 选择器 2.2.1. 元素选择器 2.2.2. ID选择器 2.2.3. 类选择器 2.3. 引入方法 3. 参考 1. 概述 前端技术得更 ...

  8. 云图说 | 华为云GPU共享型AI容器,让你用得起,用得好,用的放心

    摘要:容器以其独特的技术优势,已经成为业界主流的AI计算框架(如Tensorflow.Caffe)的核心引擎,为了进一步解决企业在AI计算性能与成本上面临的问题,华为云推出了AI容器产品. 容器以其独 ...

  9. 看图学NumPy:掌握n维数组基础知识点,看这一篇就够了

    摘要:NumPy是Python的最重要的扩展程序库之一,也是入门机器学习编程的必备工具.国外有位程序员讲NumPy的基本运算以图解的方式写下来,让学习过程变得轻松有趣. NumPy是Python的最重 ...

  10. vue3溢出文本tooltip或title展示解决方案—如何获取文本宽度

    vue3溢出文本tooltip或title展示解决方案-如何获取文本宽度 Author:zhoulujun Date:2023-03-06 Hits:5 解决文本溢出,鼠标悬浮展示tooltips,要 ...