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

在以下示例中,执行区域定义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. Centos7安装高版本BIND9.16.41(DNS服务器)

    安装高版本BIND9.16.41或9.18.15 双数版本为稳定版如9.16.9.18 使用手册:https://bind9.readthedocs.io/en/v9_16_19/reference. ...

  2. c#5.0/6.0/7.0

    发现很多.net 程序员水平一直停留在c#3.0阶段,现在来整理下c#5.0/6.0/7.0新语法新特性. 人生需要不断充电,不断去get新技能而不是固步自封,对于我自己而言,虽不盲目追求新技术,但每 ...

  3. P4928 [MtOI2018]衣服?身外之物! 题解

    题意 gcd 共有 \(n\) 件衣服,编号为 \(A_1,A_2,\cdots A_n\). 每一件衣服分别拥有颜色值和清洗时间,他在每一件衣服穿完以后都会将其送去清洗,而这件衣服当天所拥有的舒适感 ...

  4. 我的第一个JavaWeb程序!!!

  5. C++ Traits Classes

    参考博文 https://blog.csdn.net/lihao21/article/details/55043881 Traits classes 的作用主要是用来为使用者提供类型信息.在 C++ ...

  6. 文心一言 VS 讯飞星火 VS chatgpt (31)-- 算法导论5.2 3题

    三.利用指示器随机变量来计算掷n 个骰子之和的期望值. 文心一言: 为了计算掷n个骰子之和的期望值,我们需要先了解一个重要的概念:指示器随机变量. 指示器随机变量是一种特殊的随机变量,它只有两个取值: ...

  7. vue获取公网ip

    <template> <div> <div>Your Public IP: {{publicIP}}</div> </div> </t ...

  8. 基于GaussDB(DWS)的全文检索特性,了解一下?

    摘要:全文检索是在互联网场景下应用非常广泛的特性,搜索引擎.站内搜索.电商搜索等场景下都会使用到,GaussDB(DWS)同样也支持全文检索功能,是基于GIN索引实现的,下面给大家详细介绍一下Gaus ...

  9. 先收藏!关于Java类、接口、枚举的知识点大汇总

    摘要:Java知识点精选之类.接口.枚举30问,算是比较基础的,希望大家一起学习进步. 整理了一些JAVA语言的在类.接口.枚举等方面的知识点以及大家常遇到的问题.希望能帮助到大家. Q: 各修饰符所 ...

  10. DevSecOps软件安全开发实践

    摘要:DevSecOps 的理念是将安全防护流程有机地融入传统的 DevOps 流程中,为研发安全提供强有力保证,安全工具支撑研发阶段安全要求落地. 本文分享自华为云社区<DevSecOps软件 ...