新闻详情

新闻详情

首页 / 资讯中心 / 详情

【2015-03-15】ARM学习随手笔记:最简单的内存分析

发布时间:2026/9/25 16:41:22来源:尧图网络
【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

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

靠谱的MES生产管理系统开发服务商,资质齐全不踩坑 2026/9/25 17:13:30

靠谱的MES生产管理系统开发服务商,资质齐全不踩坑

江苏道源信息技术有限公司是深耕制造业数字化系统定制开发的本土科技企业,核心业务围绕企业数字化中台、全流程管理系统、管理系统定制开发,涵盖ERP、MES生产管理系统开发等全业务环节数字化解决方案,为制造、政务、服务业、产业园等多类客户…

阅读更多 →
agentic-awesome-skills 中的 cmux 技能实战:macOS 终端多 AI Agent 编排与全拓扑控制指南 2026/9/25 17:13:23

agentic-awesome-skills 中的 cmux 技能实战:macOS 终端多 AI Agent 编排与全拓扑控制指南

AI 技能AI 插件 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,445 agentic skills. Includes CLI, local MCP, catalog, …

阅读更多 →
VisiData 内置交互式数据解谜游戏 Noah‘s Tapestry:从 Puzzle 0 开始追踪一块丢失的地毯 2026/9/25 17:13:16

VisiData 内置交互式数据解谜游戏 Noah‘s Tapestry:从 Puzzle 0 开始追踪一块丢失的地毯

数据分析CLI数据可视化 【免费下载链接】visidata A terminal spreadsheet multitool for discovering and arranging data 项目地址: https://gitcode.com/gh_mirrors/vi/visidata 点击查看 免费下载 导读 Noahs Tapestry(诺亚的挂毯)是 V…

阅读更多 →
Swift Package Registry 服务规范附录 B 深度解读:package release metadata JSON Schema 全解析 2026/9/25 17:13:16

Swift Package Registry 服务规范附录 B 深度解读:package release metadata JSON Schema 全解析

开发工具构建工具 【免费下载链接】swift-package-manager The Package Manager for the Swift Programming Language 项目地址: https://gitcode.com/gh_mirrors/sw/swift-package-manager 点击查看 免费下载 在 SwiftPM 的包注册服务(Swift Package R…

阅读更多 →
传播易央视广告代投服务 企业品牌公信力背书、频道匹配与监播复盘全案 2026/9/25 17:13:03

传播易央视广告代投服务 企业品牌公信力背书、频道匹配与监播复盘全案

在公域流量成本持续走高、线上信息流广告公信力逐步弱化的营销环境下,作为国家级权威传播阵地的央视广告,再度成为企业品牌升级、信任背书、全域破圈的核心营销抓手。凭借独一无二的官方公信力、全覆盖的传播体量与深度渗透国民心智的传播优势&#xff0…

阅读更多 →
Okio Benchmarks:使用 JMH 微基准测试剖析 Okio 缓冲区与 I/O 性能 2026/9/25 17:12:30

Okio Benchmarks:使用 JMH 微基准测试剖析 Okio 缓冲区与 I/O 性能

后端跨平台 【免费下载链接】okio A modern I/O library for Android, Java, and Kotlin Multiplatform. 项目地址: https://gitcode.com/gh_mirrors/ok/okio 点击查看 免费下载 Okio 是一个为 Android、Java 与 Kotlin Multiplatform 设计的现代 I/O 库&#xff0…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉