尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【2015-03-15】ARM学习随手笔记:最简单的内存分析
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2015-03-15 标题ARM学习随手笔记最简单的内存分析分类编程 / 操作系统 / ARM 标签ARMARM学习随手笔记简单的内存分析作者最近在学习keil和ARM哎只能感叹自己老了这里简单的记录下学习笔记吧。以【 ARM学习随手笔记使用ITM方式启用printf 】为基本工程,这里打开HEAP内存如下图然后修改mainfunc.c修改后如下#includestdio.h#includestdlib.h#defineITM_Port8(n)(*((volatileunsignedchar*)(0xE00000004*n)))#defineITM_Port16(n)(*((volatileunsignedshort*)(0xE00000004*n)))#defineITM_Port32(n)(*((volatileunsignedlong*)(0xE00000004*n)))#defineDEMCR(*((volatileunsignedlong*)(0xE000EDFC)))#defineTRCENA0x01000000struct__FILE{inthandle;/* Add whatever you need here */};FILE __stdout;FILE __stdin;intfputc(intch,FILE*f){if(DEMCRTRCENA){while(ITM_Port32(0)0);ITM_Port8(0)ch;}return(ch);}intg_int100;intmain(void){intlocal_int10;int*p_local_int(int*)malloc(sizeof(int));printf(g_int address:%x ,(unsignedint)(g_int));printf(local_int address:%x ,(unsignedint)(local_int));printf(p_local_int address:%x ,(unsignedint)(p_local_int));printf(main address:%x ,(unsignedint)(main));while(1);}使用模拟器编译执行结果如下g_int address: 20000008 local_int address: 20001068 p_local_int address: 20000088 main address: 18b查看map文件这里有两种方式可以在文件目录中查找【 HelloM3\Listings\HelloM3.map 】或者如下图右键快捷打开map部分内容如下Image Symbol Table Local Symbols Symbol Name Value Ov Type Size Object(Section) 。。。。。。。 。。。。。。。 HEAP 0x20000070 Section 3072 startup_armcm3.o(HEAP) Heap_Mem 0x20000070 Data 3072 startup_armcm3.o(HEAP) STACK 0x20000c70 Section 1024 startup_armcm3.o(STACK) Stack_Mem 0x20000c70 Data 1024 startup_armcm3.o(STACK) __initial_sp 0x20001070 Data 0 startup_armcm3.o(STACK) Global Symbols Symbol Name Value Ov Type Size Object(Section) 。。。。。。。 。。。。。。。 main 0x0000018b Thumb Code 52 mainfunc.o(.text) 。。。。。。。 g_int 0x20000008 Data 4 mainfunc.o(.data) 。。。。。。。 Memory Map of the image Execution Region RW_IRAM1 (Base: 0x20000000, Size: 0x00001070, Max: 0x00020000, ABSOLUTE) Base Addr Size Type Attr Idx E Section Name Object 0x20000000 0x0000000c Data RW 2 .data mainfunc.o 0x2000000c 0x00000004 Data RW 37 .data system_armcm3.o 0x20000010 0x00000060 Zero RW 281 .bss c_w.l(libspace.o) 0x20000070 0x00000c00 Zero RW 26 HEAP startup_armcm3.o 0x20000c70 0x00000400 Zero RW 25 STACK startup_armcm3.o这里最简单的分析下1 g_int是全局变量属于全局变量区。2 local_int是局部变量因此在栈上。3 p_local_int是malloc出来的因此在堆上。4 RAM上的内存分布简图如下由此可见栈的大小在实际工作中需要仔细计算以免内存越界不过在实际工作中一般不会使用堆内存也不会使用malloc等函数。
RELATED

相关推荐

React性能优化没效果?你可能漏了这个小技巧

React性能优化没效果?你可能漏了这个小技巧

"明明用了React.memo、useMemo,列表项也加了key,为什么页面的渲染性能还是没提升?"——去年在做一个大表单编辑器时,我对着性能面板上超过200ms的渲染耗时抓耳挠腮,直到发现一个被多数优化指南忽略的隐形杀手…

📅 2026/9/25 16:41:41
Linux 环境下 Oracle 补丁完整安装指南:从解压校验到 opatch 验证

Linux 环境下 Oracle 补丁完整安装指南:从解压校验到 opatch 验证

简介:面向64位Linux平台维护Oracle 11g R2数据库的管理员,这是一份编号24006111的季度补丁包,对应11.2.0.4.161018版本。该版本发布于2016年10月,用于集中修复上一个季度以来的已知问题,强化安全防护并改善运行性能&am…

📅 2026/9/25 16:36:40
open-code-review:面向PR的可审计LLM代码评审Agent工作流

open-code-review:面向PR的可审计LLM代码评审Agent工作流

1. 这不是又一个“AI写代码”工具,而是一套可落地的开源代码评审工作流“open-code-review”这个词最近在开发者社区里出现频率越来越高,但它绝不是某个新发布的SaaS服务或商业插件的名字。我第一次在GitHub上看到这个仓库时,下意识点开READM…

📅 2026/9/25 16:36:40
MORE NEWS

更多资讯

📰

《机器学习快速入门》10周教学提纲

文章目录《机器学习快速入门》10周教学提纲(精简实践版)课程定位第1周:机器学习是什么?第1课:认识机器学习内容三类学习方式1.监督学习2.无监督学习3.强化学习实践第2周:从数据到模型第2课:机器…

📰

OpenCode+Harness:AI数据分析全流程实操指南

最近在折腾 OpenCode 和 Harness 这套组合,把一条数据分析全流程真正跑通之后,我忍不住想把它整理成一篇实操笔记。标题里的“OpenCode”指的是那个跑在终端里的 AI 编程代码智能体,“Harness”指的是负责编排和调度智能体运行的框架&#xf…

📰

AI自动化工程系统提示词:从零搭建到实战落地

1. 从零理解AI自动化工程系统提示词到底在解决什么问题很多人第一次听到“AI自动化工程系统提示词”这个词,脑子里浮现的可能是某个具体的工具或者某个开源项目。实际上它不是一个软件,也不是某个现成的框架,而是一套用提示词驱动AI完成工程化…

📰

毕业论文word排版之公式自动化编号及交叉引用

目录 1. 总体需求 2. 软件环境 3. 插入公式 3.1 开始新的章编号 3.2 插入编号 3.3 公式居中,公式编号右对齐 3.3.1 新建“公式”样式 3.3.2 对齐公式 4. 引用公式 5. 刷新公式编号 1. 总体需求 目标:公式居中,公式编号右对齐&#x…

📰

我的C++模板的学习总结

模板总结 文章目录模板总结1.形式注意点:函数模板:类模板:2.实例化与使用注意点函数模板1.隐式实例化(直接使用)2.显示实例化类模板3.非类型模板参数(常量作为模板参数)注意点:形式&…

📰

5G NR通感一体化ISAC系统级模拟器设计:从OFDM波形到距离多普勒处理

简介:基于5G NR的通信感知一体化(ISAC)系统级模拟器源码工程,面向通信工程、电子信息、人工智能等专业的本科毕业设计或课程设计场景,以Matlab仿真实例完整演示5G新空口框架下的综合传感与通信联合仿真流程与数据分析方…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬